You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.4 KiB
81 lines
2.4 KiB
defmodule GcIndexRelayWeb.Router do |
|
use GcIndexRelayWeb, :router |
|
|
|
pipeline :browser do |
|
plug :accepts, ["html"] |
|
plug :fetch_session |
|
plug :fetch_live_flash |
|
plug :put_root_layout, html: {GcIndexRelayWeb.Layouts, :root} |
|
plug :protect_from_forgery |
|
plug :put_secure_browser_headers |
|
end |
|
|
|
pipeline :api do |
|
plug :accepts, ["json"] |
|
end |
|
|
|
scope "/", GcIndexRelayWeb do |
|
pipe_through :browser |
|
|
|
get "/", PageController, :home |
|
end |
|
|
|
get "/health", GcIndexRelayWeb.HealthController, :check |
|
|
|
scope "/api", GcIndexRelayWeb do |
|
pipe_through :api |
|
|
|
get "/", ApiController, :index |
|
get "/events", FilterController, :index |
|
post "/events/filter", FilterController, :query |
|
resources "/events", EventController, only: [:show, :create, :delete] |
|
end |
|
|
|
def swagger_info do |
|
%{ |
|
schemes: ["https", "wss"], |
|
info: %{ |
|
version: Application.spec(:gc_index_relay, :vsn) |> to_string(), |
|
title: "Mercury Index-Relay", |
|
description: """ |
|
A Nostr index relay by [GitCitadel](https://gitcitadel.eu). \ |
|
Stores and serves Nostr events via a REST API with NIP-01 filter-based querying. |
|
|
|
**Supported NIPs:** NIP-11 (relay info), NIP-70 (protected events) |
|
|
|
Relay information document available at `GET /` with `Accept: application/nostr+json`. |
|
""" |
|
}, |
|
consumes: ["application/json"], |
|
produces: ["application/json"] |
|
} |
|
end |
|
|
|
scope "/api/swagger" do |
|
forward "/", PhoenixSwagger.Plug.SwaggerUI, |
|
otp_app: :gc_index_relay, |
|
swagger_file: "swagger.json" |
|
end |
|
|
|
# Other scopes may use custom stacks. |
|
# scope "/api", GcIndexRelayWeb do |
|
# pipe_through :api |
|
# end |
|
|
|
# Enable LiveDashboard and Swoosh mailbox preview in development |
|
if Application.compile_env(:gc_index_relay, :dev_routes) do |
|
# If you want to use the LiveDashboard in production, you should put |
|
# it behind authentication and allow only admins to access it. |
|
# If your application does not have an admins-only section yet, |
|
# you can use Plug.BasicAuth to set up some basic authentication |
|
# as long as you are also using SSL (which you should anyway). |
|
import Phoenix.LiveDashboard.Router |
|
|
|
scope "/dev" do |
|
pipe_through :browser |
|
|
|
live_dashboard "/dashboard", metrics: GcIndexRelayWeb.Telemetry |
|
forward "/mailbox", Plug.Swoosh.MailboxPreview |
|
end |
|
end |
|
end
|
|
|