require 'oath/constraints/signed_in' require 'sidekiq/web' Rails.application.routes.draw do AVAILABLE_LOCALES_REGEX = /#{I18n.available_locales.join("|")}/.freeze concern :confirmable do resources :video_release_confirmations, only: [:new, :create, :destroy] end concern :contractable do resource :contracts, only: [:show] end concern :notable do resources :notes, only: [:index, :new, :create] end concern :photoable do resource :photos, only: [:edit, :update] end concern :taggable do resources :acts_as_taggable_on_tags, only: [:new, :create, :destroy], controller: "tags" end concern :file_uploadable do resource :files, only: [:edit, :update] end concern :approvable do resource :approvals, only: [:new, :create] end constraints AdminSignedInConstraint.new do namespace :admin do mount Sidekiq::Web => '/background_queue', as: :background_queue resources :accounts, only: [:index, :new, :create, :edit, :update, :show] do resource :account_lock, path: :lock, as: :lock, only: [:create, :destroy] end resources :users, only: [:index, :new, :create, :edit, :update, :destroy] do resource :masquerade, only: :create end resources :task_requests, only: [:index, :edit, :update, :show] resources :broadcasts, only: [:edit, :update] root to: "accounts#index", as: :signed_in_root end end namespace :admin do resource :masquerade, only: :destroy end scope "(:locale)", locale: AVAILABLE_LOCALES_REGEX do resource :account_session, only: [:update] resource :session, only: [:destroy] resource :account, only: [:new, :create, :update] do get 'locked' => 'locked_accounts#index' end resources :account_auths, only: [:index, :create, :update, :destroy] resources :projects, shallow: true do resources :acquired_media_releases, except: [:show], concerns: [:contractable, :notable, :file_uploadable] resources :appearance_releases, except: [:show], concerns: [:contractable, :notable] resources :appearance_release_imports, only: [:create] resources :location_releases, except: [:show], concerns: [:contractable, :notable, :photoable] resources :material_releases, except: [:show], concerns: [:contractable, :notable, :file_uploadable] resources :music_releases, except: [:show], concerns: [:contractable, :notable] resources :talent_releases, except: [:show], concerns: [:contractable, :notable, :photoable] resources :medical_releases, except: [:show], concerns: [:contractable, :notable, :photoable] resources :misc_releases, except: [:show], concerns: [:contractable, :notable, :photoable] resources :contract_templates, only: [:index, :new, :create, :edit, :update, :destroy] do resource :qr_codes, only: [:show], controller: "contract_templates/qr_codes" resource :blank_contracts, only: [:show, :new, :create], controller: "contract_templates/blank_contracts" resource :duplicates, only: [:create], controller: "contract_templates/duplicates" end resource :release_template_imports, only: [:new, :create] resources :project_memberships, only: [:index, :create, :destroy] resources :reports, only: [:index] resource :contract_downloads, only: [:create] resources :downloads, only: [:index, :destroy] resource :report_downloads, only: [:create] resources :videos, only: [:index, :new, :create, :edit, :update] do collection do get :landing end resources :bookmarks, only: [:new, :create, :destroy, :edit, :update] resource :video_reports, only: [:show] resource :graphic_reports, only: [:show] resource :audio_reports, only: [:show] resource :issues_and_concerns_reports, only: [:show] resource :report_publications, only: [:create, :destroy], controller: "videos/report_publications" resource :video_analyses, only: [:create, :show] do resources :audio_confirmations, only: [:new, :create, :destroy], controller: "video_analyses/audio_confirmations" resources :unreleased_appearances, only: [:new, :create, :edit, :update, :destroy], controller: "video_analyses/unreleased_appearances" resources :edl_events, only: [:create], controller: "video_analyses/edl_events" resources :graphics_elements, only: [:new, :create, :edit, :update, :destroy], controller: "video_analyses/graphics_elements" resources :talent_releases, only: [:index], controller: "video_analyses/talent_releases" resources :appearance_releases, only: [:index], controller: "video_analyses/appearance_releases" resources :location_releases, only: [:index], controller: "video_analyses/location_releases" resources :music_releases, only: [:index], controller: "video_analyses/music_releases" resources :acquired_media_releases, only: [:index], controller: "video_analyses/acquired_media_releases" resources :material_releases, only: [:index], controller: "video_analyses/material_releases" end end end resources :projects, only: [] do resources :broadcasts, except: [:edit] do member do delete :destroy_file end resource :live_meeting, only: [:show] resource :zoom_meeting, only: [:show] resources :broadcast_recordings, only: [:destroy] end resources :directories, except: [:index] do member do get :new_file delete :destroy_file end end resources :task_requests, except: :destroy do member do post :cancel end end resources :tasks, only: :index end resource :profile, only: [:show, :update] resources :videos, only: [] do resources :talent_releases, only: [], concerns: :confirmable resources :appearance_releases, only: [], concerns: :confirmable resources :location_releases, only: [], concerns: :confirmable resources :acquired_media_releases, only: [], concerns: :confirmable resources :music_releases, only: [], concerns: :confirmable resources :material_releases, only: [], concerns: :confirmable end scope module: :public do resources :accounts, only: [] do resources :projects, only: [] do resources :contract_templates, only: [:index] do resources :talent_releases, only: [:new, :create] resources :appearance_releases, only: [:new, :create] do resources :amendments, only: [:new, :create] end resources :acquired_media_releases, only: [:new, :create] resources :location_releases, only: [:new, :create] do resources :amendments, only: [:new, :create] end resources :material_releases, only: [:new, :create] resources :medical_releases, only: [:new, :create] resources :misc_releases, only: [:new, :create] end end end resources :broadcasts, param: :token, only: [:show, :update] do resource :live_meeting, only: [:show] resource :zoom_meeting, only: [:show] resources :broadcast_recordings, only: [:edit, :update] do resources :broadcast_recording_starrings, only: :create end end end RELEASES = [:acquired_media_releases, :appearance_releases, :talent_releases, :material_releases, :medical_releases, :misc_releases, :location_releases].freeze ALL_RELEASES = RELEASES + [:music_releases] ALL_RELEASES.each do |release| resources release, only: [], concerns: [:taggable, :approvable] end resources :bulk_taggings, only: [:new, :create] namespace :api do scope 'v1' do get 'sync' => 'sync#index' post 'user_token' => 'user_token#create' post 'users' => 'users#create' resource :profiles, only: [:show] resources :projects, only: [:index] do resources :broadcasts, only: [:index, :show, :update] RELEASES.each do |release| resources release, only: [:index] end resources :contract_templates, only: [:index] end resources :contract_templates, only: [:show] do (RELEASES - [:misc_releases, :medical_releases]).each do |release| resources release, controller: release, only: [:create] end end (RELEASES - [:appearance_releases]).each do |release| resources release, only: [:show, :update] do resources :notes, controller: "notes", only: [:create, :index] end end resources :appearance_releases, only: [:show] do resources :notes, controller: "notes", only: [:create, :index] end resources :direct_uploads, only: [:create] end end # TODO: what's the format on this? JSON only? resources :notifications, only: [:create] resources :stream_notifications, only: [:create] resources :zoom_notifications, only: [:create] get '/multipart_signatures', to: 'multipart_signatures#create', as: :multipart_signatures get "cookies_disabled" => 'pages#show', id: "cookies_disabled", as: :cookies_disabled get "accountless_user" => 'pages#show', id: "accountless_user", as: :accountless_user get "nanocosmos_player" => 'pages#show', id: "nanocosmos_player", as: :nanocosmos_player resource :session, only: [:new, :create] resources :password_resets, only: [:new, :create, :edit, :update] root to: 'projects#index', as: :signed_in_root end end