nitc :: APIStarsDimension :: defaultinit
nitc $ APIStarsDimension :: SELF
Type of this instance, automatically specialized in every classpopcorn :: Handler :: _body_type
popcorn :: Handler :: _validator
Validator used to check body inputpopcorn :: Handler :: body_type=
core :: Object :: class_factory
Implementation used byget_class
to create the specific class.
nitc :: APIFeedBack :: defaultinit
nitc :: APIHandler :: defaultinit
popcorn :: Handler :: defaultinit
nitc :: APIStarsDimension :: defaultinit
core :: Object :: defaultinit
popcorn :: Handler :: deserialize_body
Deserialize the request bodynitc :: APIHandler :: find_mentity
Find the MEntitywith
full_name`.
nitc :: APIFeedBack :: get_session_login
Get the login of the session user or null if no sessionnitc :: APIFeedBack :: get_session_user
Get the user logged in or null if no sessionall(req, res)
if route
matches uri
.
core :: Object :: is_same_instance
Return true ifself
and other
are the same instance (i.e. same identity).
core :: Object :: is_same_serialized
Isself
the same as other
in a serialization context?
core :: Object :: is_same_type
Return true ifself
and other
have the same dynamic type.
nitc :: APIHandler :: mentity_from_uri
Try to load the mentity from uri with/:id
.
core :: Object :: native_class_name
The class name of the object in CString format.core :: Object :: output_class_name
Display class name on stdout (debug only).nitc :: APIHandler :: paginate
Paginate a json arraypopcorn :: Handler :: validate_body
Validate body input withvalidator
popcorn :: Handler :: validator
Validator used to check body inputpopcorn :: Handler :: validator=
Validator used to check body input
# Stars attributed to mentities by dimension
class APIStarsDimension
super APIFeedBack
redef fun get(req, res) do
var login = get_session_login(req)
var mentity = mentity_from_uri(req, res)
if mentity == null then return
var dimension = req.param("dimension")
if dimension == null then return
res.api_json(req, mentity.ratings_by_dimension(config, dimension, login))
end
redef fun post(req, res) do
var user = get_session_user(req)
var login = null
if user != null then login = user.login
var mentity = mentity_from_uri(req, res)
if mentity == null then return
var dimension = req.param("dimension")
if dimension == null then return
# Retrieve user previous rating
var previous = null
if user != null then
previous = user.find_previous_rating(config, mentity, dimension)
end
var obj = req.body.parse_json
if not obj isa JsonObject then
res.api_error(400, "Expected a JSON object")
return
end
var rating = obj["rating"]
if not rating isa Int then
res.api_error(400, "Expected a key `rating`")
return
end
if previous != null then
previous.rating = rating
previous.timestamp = get_time
config.stars.save previous
else
config.stars.save new StarRating(login, mentity.full_name, dimension, rating)
end
res.api_json(req, mentity.ratings_by_dimension(config, dimension, login))
end
end
src/doc/api/api_feedback.nit:122,1--171,3