]> git.openstreetmap.org Git - rails.git/blobdiff - app/views/api/users/_user.json.jbuilder
API User details JSON format
[rails.git] / app / views / api / users / _user.json.jbuilder
diff --git a/app/views/api/users/_user.json.jbuilder b/app/views/api/users/_user.json.jbuilder
new file mode 100644 (file)
index 0000000..9629e8f
--- /dev/null
@@ -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