about summary refs log tree commit diff
path: root/app/api
diff options
context:
space:
mode:
Diffstat (limited to 'app/api')
-rw-r--r--app/api/mastodon/entities.rb31
-rw-r--r--app/api/mastodon/rest.rb6
2 files changed, 32 insertions, 5 deletions
diff --git a/app/api/mastodon/entities.rb b/app/api/mastodon/entities.rb
index 2e56a67df..975e72538 100644
--- a/app/api/mastodon/entities.rb
+++ b/app/api/mastodon/entities.rb
@@ -1,17 +1,44 @@
 module Mastodon
   module Entities
     class Account < Grape::Entity
+      include ApplicationHelper
+
+      expose :id
       expose :username
-      expose :domain
+
+      expose :domain do |account|
+        account.local? ? LOCAL_DOMAIN : account.domain
+      end
+
       expose :display_name
       expose :note
+
+      expose :url do |account|
+        account.local? ? profile_url(name: account.username) : account.url
+      end
     end
 
     class Status < Grape::Entity
+      include ApplicationHelper
+
       format_with(:iso_timestamp) { |dt| dt.iso8601 }
 
-      expose :uri
+      expose :id
+
+      expose :uri do |status|
+        status.local? ? unique_tag(status.stream_entry.created_at, status.stream_entry.activity_id, status.stream_entry.activity_type) : status.uri
+      end
+
+      expose :url do |status|
+        status.local? ? status_url(name: status.account.username, id: status.id) : status.url
+      end
+
       expose :text
+      expose :in_reply_to_id
+
+      expose :reblog_of_id
+      expose :reblog, using: Mastodon::Entities::Status
+
       expose :account, using: Mastodon::Entities::Account
 
       with_options(format_with: :iso_timestamp) do
diff --git a/app/api/mastodon/rest.rb b/app/api/mastodon/rest.rb
index eaf337938..25a53202b 100644
--- a/app/api/mastodon/rest.rb
+++ b/app/api/mastodon/rest.rb
@@ -3,11 +3,11 @@ module Mastodon
     version 'v1', using: :path
     format :json
 
-    resource :statuses do
+    resource :timelines do
       desc 'Return a public timeline'
 
-      get :all do
-        present Status.all, with: Mastodon::Entities::Status
+      get :public do
+        # todo
       end
 
       desc 'Return the home timeline of a logged in user'