activitypub: add outbox endpoint
[akkoma] / lib / pleroma / web / router.ex
index 59fb5cd6b123fdd03a74f61bf425a3aab65bee8e..ec06e2ffd64b8becfc14661bbafc20c6a5e62550 100644 (file)
@@ -132,6 +132,7 @@ defmodule Pleroma.Web.Router do
 
     get "/statuses/:id", MastodonAPIController, :get_status
     get "/statuses/:id/context", MastodonAPIController, :get_context
+    get "/statuses/:id/card", MastodonAPIController, :empty_object
     get "/statuses/:id/favourited_by", MastodonAPIController, :favourited_by
     get "/statuses/:id/reblogged_by", MastodonAPIController, :reblogged_by
 
@@ -222,7 +223,7 @@ defmodule Pleroma.Web.Router do
   end
 
   pipeline :ostatus do
-    plug :accepts, ["xml", "atom", "html"]
+    plug :accepts, ["xml", "atom", "html", "activity+json"]
   end
 
   scope "/", Pleroma.Web do
@@ -243,7 +244,27 @@ defmodule Pleroma.Web.Router do
 
   end
 
+  pipeline :activitypub do
+    plug :accepts, ["activity+json"]
+    plug Pleroma.Web.Plugs.HTTPSignaturePlug
+  end
+
+  scope "/", Pleroma.Web.ActivityPub do
+    # XXX: not really ostatus
+    pipe_through :ostatus
+
+    get "/users/:nickname/followers", ActivityPubController, :followers
+    get "/users/:nickname/following", ActivityPubController, :following
+    get "/users/:nickname/outbox", ActivityPubController, :outbox
+  end
+
   if @federating do
+    scope "/", Pleroma.Web.ActivityPub do
+      pipe_through :activitypub
+      post "/users/:nickname/inbox", ActivityPubController, :inbox
+      post "/inbox", ActivityPubController, :inbox
+    end
+
     scope "/.well-known", Pleroma.Web do
       pipe_through :well_known