-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrouter.wren
71 lines (57 loc) · 1.34 KB
/
router.wren
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import "io" for File, Directory
import "meta" for Meta
import "request" for Request
import "response" for Response
import "routes" for Routes
class StatusResource {
construct index() {
return "Hello World!"
}
}
class TestResource {
construct index() {
return "TestResource.index() called."
}
construct create() {
return "TestResource.create() called."
}
construct new() {
return "TestResource.new() called."
}
construct edit() {
return "TestResource.edit() called."
}
construct update() {
return "TestResource.update() called."
}
construct destroy() {
return "TestResource.destroy() called."
}
}
class Router {
construct new() {
var request = Request.new()
var resource = Routes.resources(request.route)
var statusCode
var messageBody
if (resource) {
var function = Meta.compileExpression(resource)
if (function == null) {
statusCode = "500"
messageBody = "Invalid resource: '" + resource + "'"
}
var fiber = Fiber.new(function)
var result = fiber.try()
if (fiber.error == null) {
statusCode = "200"
messageBody = result
} else {
statusCode = "500"
messageBody = fiber.error.toString
}
} else {
}
var response = Response.new(statusCode, messageBody)
response.write()
}
}