Files
music_library/lib/music_library_web/router.ex
T
2025-06-01 16:34:58 +01:00

96 lines
2.8 KiB
Elixir

defmodule MusicLibraryWeb.Router do
use MusicLibraryWeb, :router
import MusicLibraryWeb.Auth, only: [require_logged_in: 2, require_api_token: 2]
import Oban.Web.Router
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_live_flash
plug :put_root_layout, html: {MusicLibraryWeb.Layouts, :root}
plug :protect_from_forgery
plug :put_secure_browser_headers
end
pipeline :api do
plug :accepts, ["json"]
plug :require_api_token
end
pipeline :logged_in do
plug :require_logged_in
end
scope "/", MusicLibraryWeb do
pipe_through :browser
get "/health", HealthController, :index
get "/login", SessionController, :new
post "/sessions/create", SessionController, :create
get "/auth/last_fm/callback", LastFmController, :callback
scope "/" do
pipe_through :logged_in
get "/backup", ArchiveController, :backup
get "/covers/:record_id", CoverController, :show
get "/artists/:musicbrainz_id/image", ArtistController, :image
live_session :default,
on_mount: MusicLibraryWeb.Hooks.StaticAssets do
live "/", StatsLive.Index, :index
live "/collection", CollectionLive.Index, :index
live "/collection/import", CollectionLive.Index, :import
live "/collection/scan", CollectionLive.Index, :barcode_scan
live "/collection/:id/edit", CollectionLive.Index, :edit
live "/collection/:id", CollectionLive.Show, :show
live "/collection/:id/show/edit", CollectionLive.Show, :edit
live "/wishlist", WishlistLive.Index, :index
live "/wishlist/import", WishlistLive.Index, :import
live "/wishlist/:id/edit", WishlistLive.Index, :edit
live "/wishlist/:id", WishlistLive.Show, :show
live "/wishlist/:id/show/edit", WishlistLive.Show, :edit
live "/artists/:musicbrainz_id", ArtistLive.Show, :show
live "/artists/:musicbrainz_id/import", ArtistLive.Show, :import
end
end
end
scope "/api", MusicLibraryWeb do
pipe_through :api
get "/collection/latest", CollectionController, :latest
get "/collection/random", CollectionController, :random
get "/collection", CollectionController, :index
get "/covers/:record_id", CoverController, :show
get "/backup", ArchiveController, :backup
end
if Application.compile_env(:music_library, :monitoring_routes) do
use ErrorTracker.Web, :router
import Phoenix.LiveDashboard.Router
scope "/dev" do
pipe_through [:browser, :logged_in]
error_tracker_dashboard("/errors")
live_dashboard "/dashboard",
metrics: MusicLibraryWeb.Telemetry,
metrics_history: {MusicLibraryWeb.Telemetry.Storage, :metrics_history, []},
ecto_repos: [MusicLibrary.Repo, MusicLibrary.BackgroundRepo, MusicLibrary.ErrorRepo]
oban_dashboard "/oban"
end
end
end