Property definitions

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