mastodon/config/routes.rb

225 lines
6.9 KiB
Ruby
Raw Normal View History

2016-11-28 13:36:47 +01:00
# frozen_string_literal: true
require 'sidekiq/web'
2017-05-08 03:52:57 +02:00
require 'sidekiq-scheduler/web'
2016-02-20 22:53:20 +01:00
Rails.application.routes.draw do
2017-01-21 22:19:13 +01:00
mount LetterOpenerWeb::Engine, at: 'letter_opener' if Rails.env.development?
2016-08-18 15:49:51 +02:00
authenticate :user, lambda { |u| u.admin? } do
2016-12-13 13:42:10 +01:00
mount Sidekiq::Web, at: 'sidekiq', as: :sidekiq
mount PgHero::Engine, at: 'pghero', as: :pghero
end
use_doorkeeper do
controllers authorizations: 'oauth/authorizations', authorized_applications: 'oauth/authorized_applications'
end
get '.well-known/host-meta', to: 'well_known/host_meta#show', as: :host_meta, defaults: { format: 'xml' }
get '.well-known/webfinger', to: 'well_known/webfinger#show', as: :webfinger
get 'manifest', to: 'manifests#show', defaults: { format: 'json' }
2016-02-22 16:00:20 +01:00
devise_for :users, path: 'auth', controllers: {
sessions: 'auth/sessions',
registrations: 'auth/registrations',
2016-10-03 16:38:22 +02:00
passwords: 'auth/passwords',
2016-11-28 13:36:47 +01:00
confirmations: 'auth/confirmations',
}
2016-03-05 13:12:24 +01:00
2017-03-22 19:26:22 +01:00
get '/users/:username', to: redirect('/@%{username}'), constraints: { format: :html }
resources :accounts, path: 'users', only: [:show], param: :username do
resources :stream_entries, path: 'updates', only: [:show] do
member do
get :embed
end
end
2017-01-01 19:52:25 +01:00
get :remote_follow, to: 'remote_follow#new'
post :remote_follow, to: 'remote_follow#create'
resources :followers, only: [:index], controller: :follower_accounts
resources :following, only: [:index], controller: :following_accounts
resource :follow, only: [:create], controller: :account_follow
resource :unfollow, only: [:create], controller: :account_unfollow
end
2016-02-22 16:00:20 +01:00
2017-03-22 19:26:22 +01:00
get '/@:username', to: 'accounts#show', as: :short_account
get '/@:account_username/:id', to: 'statuses#show', as: :short_account_status
2016-10-14 02:28:49 +02:00
namespace :settings do
resource :profile, only: [:show, :update]
resource :preferences, only: [:show, :update]
resource :import, only: [:show, :create]
2017-03-19 20:29:41 +01:00
resource :export, only: [:show]
namespace :exports, constraints: { format: :csv } do
resources :follows, only: :index, controller: :following_accounts
resources :blocks, only: :index, controller: :blocked_accounts
resources :mutes, only: :index, controller: :muted_accounts
2017-03-19 20:29:41 +01:00
end
resource :two_factor_authentication, only: [:show, :create, :destroy]
namespace :two_factor_authentication do
resources :recovery_codes, only: [:create]
resource :confirmation, only: [:new, :create]
end
resource :follower_domains, only: [:show, :update]
resource :delete, only: [:show, :destroy]
2016-10-14 02:28:49 +02:00
end
resources :media, only: [:show]
2016-11-05 15:20:05 +01:00
resources :tags, only: [:show]
# Remote follow
resource :authorize_follow, only: [:show, :create]
namespace :admin do
resources :subscriptions, only: [:index]
resources :domain_blocks, only: [:index, :new, :create, :show, :destroy]
resource :settings, only: [:edit, :update]
resources :instances, only: [:index]
resources :reports, only: [:index, :show, :update] do
resources :reported_statuses, only: [:update, :destroy]
end
2017-02-15 00:22:58 +01:00
resources :accounts, only: [:index, :show] do
member do
post :subscribe
post :unsubscribe
post :redownload
end
resource :reset, only: [:create]
resource :silence, only: [:create, :destroy]
resource :suspension, only: [:create, :destroy]
resource :confirmation, only: [:create]
end
resources :users, only: [] do
resource :two_factor_authentication, only: [:destroy]
end
end
2017-05-07 15:21:31 +02:00
get '/admin', to: redirect('/admin/settings/edit', status: 302)
namespace :api do
2016-11-28 13:36:47 +01:00
# PubSubHubbub outgoing subscriptions
resources :subscriptions, only: [:show]
post '/subscriptions/:id', to: 'subscriptions#update'
2016-11-28 13:36:47 +01:00
# PubSubHubbub incoming subscriptions
post '/push', to: 'push#update', as: :push
# Salmon
post '/salmon/:id', to: 'salmon#update', as: :salmon
# OEmbed
get '/oembed', to: 'oembed#show', as: :oembed
# ActivityPub
namespace :activitypub do
get '/users/:id/outbox', to: 'outbox#show', as: :outbox
get '/statuses/:id', to: 'activities#show_status', as: :status
resources :notes, only: [:show]
end
# JSON / REST API
2016-09-27 16:58:23 +02:00
namespace :v1 do
resources :statuses, only: [:create, :show, :destroy] do
scope module: :statuses do
resources :reblogged_by, controller: :reblogged_by_accounts, only: :index
resources :favourited_by, controller: :favourited_by_accounts, only: :index
resource :reblog, only: :create
post :unreblog, to: 'reblogs#destroy'
resource :favourite, only: :create
post :unfavourite, to: 'favourites#destroy'
resource :mute, only: :create
post :unmute, to: 'mutes#destroy'
end
2016-09-27 16:58:23 +02:00
member do
get :context
get :card
2016-09-27 16:58:23 +02:00
end
end
namespace :timelines do
resource :home, only: :show, controller: :home
resource :public, only: :show, controller: :public
resources :tag, only: :show
end
resources :streaming, only: [:index]
get '/search', to: 'search#index', as: :search
resources :follows, only: [:create]
resources :media, only: [:create]
resources :apps, only: [:create]
resources :blocks, only: [:index]
resources :mutes, only: [:index]
resources :favourites, only: [:index]
resources :reports, only: [:index, :create]
Account domain blocks (#2381) * Add <ostatus:conversation /> tag to Atom input/output Only uses ref attribute (not href) because href would be the alternate link that's always included also. Creates new conversation for every non-reply status. Carries over conversation for every reply. Keeps remote URIs verbatim, generates local URIs on the fly like the rest of them. * Conversation muting - prevents notifications that reference a conversation (including replies, favourites, reblogs) from being created. API endpoints /api/v1/statuses/:id/mute and /api/v1/statuses/:id/unmute Currently no way to tell when a status/conversation is muted, so the web UI only has a "disable notifications" button, doesn't work as a toggle * Display "Dismiss notifications" on all statuses in notifications column, not just own * Add "muted" as a boolean attribute on statuses JSON For now always false on contained reblogs, since it's only relevant for statuses returned from the notifications endpoint, which are not nested Remove "Disable notifications" from detailed status view, since it's only relevant in the notifications column * Up max class length * Remove pending test for conversation mute * Add tests, clean up * Rename to "mute conversation" and "unmute conversation" * Raise validation error when trying to mute/unmute status without conversation * Adding account domain blocks that filter notifications and public timelines * Add tests for domain blocks in notifications, public timelines Filter reblogs of blocked domains from home * Add API for listing and creating account domain blocks * API for creating/deleting domain blocks, tests for Status#ancestors and Status#descendants, filter domain blocks from them * Filter domains in streaming API * Update account_domain_block_spec.rb
2017-05-19 01:14:30 +02:00
resource :instance, only: [:show]
resource :domain_blocks, only: [:show, :create, :destroy]
2016-12-26 19:30:45 +01:00
resources :follow_requests, only: [:index] do
member do
post :authorize
post :reject
end
end
resources :notifications, only: [:index, :show, :destroy] do
collection do
post :clear
post :dismiss
end
end
namespace :accounts do
get :verify_credentials, to: 'credentials#show'
patch :update_credentials, to: 'credentials#update'
resource :search, only: :show, controller: :search
resources :relationships, only: :index
end
2016-09-27 16:58:23 +02:00
resources :accounts, only: [:show] do
resources :statuses, only: :index, controller: 'accounts/statuses'
resources :followers, only: :index, controller: 'accounts/follower_accounts'
resources :following, only: :index, controller: 'accounts/following_accounts'
2016-09-27 16:58:23 +02:00
member do
post :follow
post :unfollow
2016-10-03 18:17:06 +02:00
post :block
post :unblock
post :mute
post :unmute
2016-09-27 16:58:23 +02:00
end
end
end
namespace :web do
resource :settings, only: [:update]
end
end
2016-02-22 16:00:20 +01:00
2017-01-04 15:35:36 +01:00
get '/web/(*any)', to: 'home#index', as: :web
get '/about', to: 'about#show'
2017-01-13 03:24:41 +01:00
get '/about/more', to: 'about#more'
get '/terms', to: 'about#terms'
2016-02-22 16:00:20 +01:00
root 'home#index'
2016-09-08 02:40:51 +02:00
match '*unmatched_route',
via: :all,
to: 'application#raise_not_found',
format: false
2016-02-20 22:53:20 +01:00
end