module action
import nitcorn
+import json::serialization
import model
import database
end
# Main Tnitter Action
-class Tnitter
+class TnitterWeb
super Action
# Header on pages served by this `Action`
return response
end
end
+
+# Tnitter RESTful interface
+class TnitterREST
+ super Action
+
+ redef fun answer(request, turi)
+ do
+ if turi == "/list" then
+ # list?from=1&count=2 -> Error | Array[Post]
+
+ var from = request.int_arg("from") or else 0
+ var count = request.int_arg("count") or else 8
+
+ var db = new DB.open(tnitter_db_path)
+ var posts = db.list_posts(from, count)
+ db.close
+
+ var response = new HttpResponse(200)
+ response.body = posts.to_json_string
+ return response
+ end
+
+ # Format not recognized
+ var error = new Error("Bad Request")
+ var response = new HttpResponse(400)
+ response.body = error.to_json_string
+ return response
+ end
+end
if user_group != null then user_group.drop_privileges
# Complete server config
-vh.routes.add new Route(null, new Tnitter)
+vh.routes.add new Route("/rest/", new TnitterREST)
+vh.routes.add new Route(null, new TnitterWeb)
# Run
print "Launching server on http://{interfac} ..."