module pop_handlers
import pop_routes
-import json::static
-import json
import csv
# Class handler for a route.
send(html, status)
end
- # Write data as JSON and set the right content type header.
- fun json(json: nullable Serializable, status: nullable Int) do
- header["Content-Type"] = media_types["json"].as(not null)
- if json == null then
- send(null, status)
- else
- send(json.to_json, status)
- end
- end
-
# Write data as CSV and set the right content type header.
fun csv(csv: nullable CsvDocument, status: nullable Int) do
header["Content-Type"] = media_types["csv"].as(not null)
end
end
- # Write error as JSON.
- #
- # Format: `{"message": message, "status": status}`
- fun json_error(message: String, status: Int) do
- var obj = new JsonObject
- obj["status"] = status
- obj["message"] = message
- json(obj, status)
- end
-
# Redirect response to `location`
#
# Use by default 303 See Other as it is the RFC
# ~~~
module pop_json
+import json
import pop_handlers
import pop_validation
# Define it in each sub handlers depending on the kind of objects sent in request bodies.
type BODY: Serializable
end
+
+redef class HttpResponse
+
+ # Write data as JSON and set the right content type header.
+ fun json(json: nullable Serializable, status: nullable Int) do
+ header["Content-Type"] = media_types["json"].as(not null)
+ if json == null then
+ send(null, status)
+ else
+ send(json.to_json, status)
+ end
+ end
+
+ # Write error as JSON.
+ #
+ # Format: `{"message": message, "status": status}`
+ fun json_error(message: String, status: Int) do
+ var obj = new JsonObject
+ obj["status"] = status
+ obj["message"] = message
+ json(obj, status)
+ end
+end