blob: 3559f283e23bcbc97718ee035326ebf786fbd8de (
plain) (
blame)
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
|
package app
object TodoMvcApi extends cask.MainRoutes{
case class Todo(checked: Boolean, text: String)
object Todo{
implicit def todoRW = upickle.default.macroRW[Todo]
}
var todos = Seq(
Todo(true, "Get started with Cask"),
Todo(false, "Profit!")
)
@cask.get("/list/:state")
def list(state: String) = {
val filteredTodos = state match{
case "all" => todos
case "active" => todos.filter(!_.checked)
case "completed" => todos.filter(_.checked)
}
upickle.default.write(filteredTodos)
}
@cask.post("/add")
def add(request: cask.Request) = {
todos = Seq(Todo(false, new String(request.data.readAllBytes()))) ++ todos
}
@cask.post("/toggle/:index")
def toggle(index: Int) = {
todos = todos.updated(index, todos(index).copy(checked = !todos(index).checked))
}
@cask.post("/delete/:index")
def delete(index: Int) = {
todos = todos.patch(index, Nil, 1)
}
initialize()
}
|