nitc :: APIStarsDimension :: defaultinit
# 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