API User details JSON format

This commit is contained in:
mmd-osm 2020-09-06 22:11:23 +02:00
parent 8598ae3bc8
commit 0fb725ea61
7 changed files with 96 additions and 3 deletions

View file

@ -9,9 +9,15 @@ module Api
around_action :api_call_handle_error
before_action :lookup_user_by_id, :only => [:show]
before_action :set_request_formats, :except => [:gpx_files]
def show
if @user.visible?
render :content_type => "text/xml"
# Render the result
respond_to do |format|
format.xml
format.json
end
else
head :gone
end
@ -19,7 +25,11 @@ module Api
def details
@user = current_user
render :action => :show, :content_type => "text/xml"
# Render the result
respond_to do |format|
format.xml { render :show }
format.json { render :show }
end
end
def index
@ -31,7 +41,11 @@ module Api
@users = User.visible.find(ids)
render :content_type => "text/xml"
# Render the result
respond_to do |format|
format.xml
format.json
end
end
def gpx_files

View file

@ -0,0 +1,73 @@
json.user do
json.id user.id
json.display_name user.display_name
json.account_created user.creation_time.xmlschema
json.description user.description if user.description
if current_user && current_user == user
json.contributor_terms do
json.agreed user.terms_agreed.present?
json.pd user.consider_pd
end
else
json.contributor_terms do
json.agreed user.terms_agreed.present?
end
end
json.img do
json.href user_image_url(user) if user.avatar.attached? || user.image_use_gravatar
end
json.roles do
json.array! user.roles.map(&:role)
end
json.changesets do
json.count user.changesets.size
end
json.traces do
json.count user.traces.size
end
json.blocks do
json.received do
json.count user.blocks.size
json.active user.blocks.active.size
end
if user.moderator?
json.issued do
json.count user.blocks_created.size
json.active user.blocks_created.active.size
end
end
end
if current_user && current_user == user
if user.home_lat && user.home_lon
json.home do
json.lat user.home_lat
json.lon user.home_lon
json.zoom user.home_zoom
end
end
if user.languages
json.languages do
json.array! user.languages.split(",")
end
end
json.messages do
json.received do
json.count user.messages.size
json.unread user.new_messages.size
end
json.sent do
json.count user.sent_messages.size
end
end
end
end

View file

@ -0,0 +1,3 @@
json.users(@users) do |user|
json.partial! user
end

View file

@ -0,0 +1,3 @@
json.users([@user]) do |user|
json.partial! user
end