alias Pleroma.{Repo, User, Web.Router}
+ @instance Application.get_env(:pleroma, :instance)
+ @federating Keyword.get(@instance, :federating)
+
def user_fetcher(username) do
{:ok, Repo.get_by(User, %{nickname: username})}
end
plug Pleroma.Plugs.AuthenticationPlug, %{fetcher: &Router.user_fetcher/1, optional: true}
end
+ pipeline :pleroma_html do
+ plug :accepts, ["html"]
+ plug :fetch_session
+ plug Pleroma.Plugs.OAuthPlug
+ plug Pleroma.Plugs.AuthenticationPlug, %{fetcher: &Router.user_fetcher/1, optional: true}
+ end
+
pipeline :well_known do
plug :accepts, ["xml", "xrd+xml"]
end
get "/emoji", UtilController, :emoji
end
+ scope "/", Pleroma.Web.TwitterAPI do
+ pipe_through :pleroma_html
+ get "/ostatus_subscribe", UtilController, :remote_follow
+ post "/ostatus_subscribe", UtilController, :do_remote_follow
+ post "/main/ostatus", UtilController, :remote_subscribe
+ end
+
scope "/api/pleroma", Pleroma.Web.TwitterAPI do
pipe_through :authenticated_api
post "/follow_import", UtilController, :follow_import
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
end
pipeline :ostatus do
- plug :accepts, ["xml", "atom", "html"]
+ plug :accepts, ["xml", "atom", "html", "activity+json"]
end
scope "/", Pleroma.Web do
get "/objects/:uuid", OStatus.OStatusController, :object
get "/activities/:uuid", OStatus.OStatusController, :activity
get "/notice/:id", OStatus.OStatusController, :notice
-
get "/users/:nickname/feed", OStatus.OStatusController, :feed
get "/users/:nickname", OStatus.OStatusController, :feed_redirect
- post "/users/:nickname/salmon", OStatus.OStatusController, :salmon_incoming
- post "/push/hub/:nickname", Websub.WebsubController, :websub_subscription_request
- get "/push/subscriptions/:id", Websub.WebsubController, :websub_subscription_confirmation
- post "/push/subscriptions/:id", Websub.WebsubController, :websub_incoming
+
+ if @federating do
+ post "/users/:nickname/salmon", OStatus.OStatusController, :salmon_incoming
+ post "/push/hub/:nickname", Websub.WebsubController, :websub_subscription_request
+ get "/push/subscriptions/:id", Websub.WebsubController, :websub_subscription_confirmation
+ post "/push/subscriptions/:id", Websub.WebsubController, :websub_incoming
+ end
+
+ end
+
+ pipeline :activitypub do
+ plug :accepts, ["activity+json"]
+ plug Pleroma.Web.Plugs.HTTPSignaturePlug
end
- scope "/.well-known", Pleroma.Web do
- pipe_through :well_known
+ scope "/", Pleroma.Web.ActivityPub do
+ # XXX: not really ostatus
+ pipe_through :ostatus
- get "/host-meta", WebFinger.WebFingerController, :host_meta
- get "/webfinger", WebFinger.WebFingerController, :webfinger
+ 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
+
+ get "/host-meta", WebFinger.WebFingerController, :host_meta
+ get "/webfinger", WebFinger.WebFingerController, :webfinger
+ end
end
scope "/", Pleroma.Web.MastodonAPI do