138 lines
4.6 KiB
Elixir
138 lines
4.6 KiB
Elixir
defmodule EventosWeb.Router do
|
|
@moduledoc """
|
|
Router for eventos app
|
|
"""
|
|
use EventosWeb, :router
|
|
|
|
pipeline :api do
|
|
plug :accepts, ["json"]
|
|
end
|
|
|
|
pipeline :well_known do
|
|
plug :accepts, ["json/application", "jrd-json"]
|
|
end
|
|
|
|
pipeline :activity_pub do
|
|
plug :accepts, ["activity-json"]
|
|
plug(EventosWeb.HTTPSignaturePlug)
|
|
end
|
|
|
|
pipeline :api_auth do
|
|
plug :accepts, ["json"]
|
|
plug EventosWeb.AuthPipeline
|
|
end
|
|
|
|
pipeline :browser do
|
|
plug :accepts, ["html"]
|
|
plug :fetch_session
|
|
plug :fetch_flash
|
|
plug :protect_from_forgery
|
|
plug :put_secure_browser_headers
|
|
end
|
|
|
|
scope "/api", EventosWeb do
|
|
pipe_through :api
|
|
|
|
scope "/v1" do
|
|
|
|
post "/users", UserController, :register
|
|
get "/users/validate/:token", UserController, :validate
|
|
post "/users/resend", UserController, :resend_confirmation
|
|
|
|
post "/users/password-reset/send", UserController, :send_reset_password
|
|
post "/users/password-reset/post", UserController, :reset_password
|
|
|
|
post "/login", UserSessionController, :sign_in
|
|
get "/groups", GroupController, :index
|
|
get "/events", EventController, :index
|
|
get "/events/search/:name", EventController, :search
|
|
get "/events/:uuid/ics", EventController, :export_to_ics
|
|
get "/events/:uuid/tracks", TrackController, :show_tracks_for_event
|
|
get "/events/:uuid/sessions", SessionController, :show_sessions_for_event
|
|
get "/events/:uuid", EventController, :show
|
|
get "/comments/:uuid", CommentController, :show
|
|
get "/bots/:id", BotController, :show
|
|
get "/bots", BotController, :index
|
|
|
|
get "/actors", ActorController, :index
|
|
get "/actors/search/:name", ActorController, :search
|
|
get "/actors/:name", ActorController, :show
|
|
resources "/tags", TagController, only: [:index, :show]
|
|
resources "/categories", CategoryController, only: [:index, :show]
|
|
resources "/sessions", SessionController, only: [:index, :show]
|
|
resources "/tracks", TrackController, only: [:index, :show]
|
|
resources "/addresses", AddressController, only: [:index, :show]
|
|
|
|
get "/search/:name", SearchController, :search
|
|
end
|
|
end
|
|
|
|
# Other scopes may use custom stacks.
|
|
scope "/api", EventosWeb do
|
|
pipe_through :api_auth
|
|
|
|
scope "/v1" do
|
|
|
|
get "/user", UserController, :show_current_actor
|
|
post "/sign-out", UserSessionController, :sign_out
|
|
resources "/users", UserController, except: [:new, :edit, :show]
|
|
post "/actors", ActorController, :create
|
|
patch "/actors/:name", ActorController, :update
|
|
post "/events", EventController, :create
|
|
patch "/events/:uuid", EventController, :update
|
|
put "/events/:uuid", EventController, :update
|
|
delete "/events/:uuid", EventController, :delete
|
|
post "/events/:uuid/join", ParticipantController, :join
|
|
post "/comments", CommentController, :create
|
|
patch "/comments/:uuid", CommentController, :update
|
|
put "/comments/:uuid", CommentController, :update
|
|
delete "/comments/:uuid", CommentController, :delete
|
|
resources "/bots", BotController, except: [:new, :edit, :show, :index]
|
|
post "/groups", GroupController, :create
|
|
post "/groups/:name/join", GroupController, :join
|
|
resources "/members", MemberController
|
|
resources "/sessions", SessionController, except: [:index, :show]
|
|
resources "/tracks", TrackController, except: [:index, :show]
|
|
get "/tracks/:id/sessions", SessionController, :show_sessions_for_track
|
|
resources "/categories", CategoryController
|
|
resources "/tags", TagController
|
|
resources "/addresses", AddressController, except: [:index, :show]
|
|
end
|
|
end
|
|
|
|
scope "/.well-known", EventosWeb do
|
|
pipe_through :well_known
|
|
|
|
get "/host-meta", WebFingerController, :host_meta
|
|
get "/webfinger", WebFingerController, :webfinger
|
|
get "/nodeinfo", NodeinfoController, :schemas
|
|
end
|
|
|
|
scope "/nodeinfo", EventosWeb do
|
|
get("/:version", NodeinfoController, :nodeinfo)
|
|
end
|
|
|
|
scope "/", EventosWeb do
|
|
pipe_through :activity_pub
|
|
|
|
get "/@:name", ActivityPubController, :actor
|
|
get "/@:name/outbox", ActivityPubController, :outbox
|
|
get "/@:name/following", ActivityPubController, :following
|
|
get "/@:name/followers", ActivityPubController, :followers
|
|
get "/events/:uuid", ActivityPubController, :event
|
|
post "/@:name/inbox", ActivityPubController, :inbox
|
|
post "/inbox", ActivityPubController, :inbox
|
|
end
|
|
|
|
if Mix.env == :dev do
|
|
# If using Phoenix
|
|
forward "/sent_emails", Bamboo.SentEmailViewerPlug
|
|
end
|
|
|
|
scope "/", EventosWeb do
|
|
pipe_through :browser
|
|
|
|
get "/*path", PageController, :index
|
|
end
|
|
end
|