Rails.application.routes.draw do # require 'sidekiq/web' # mount Sidekiq::Web, at: '/sidekiq' concern :deletable do collection do get :deleted end end concern :followable do member do post 'follow', as: :follow, action: :follow delete 'follow', as: :unfollow, action: :unfollow put 'follow', as: :follow_toggle, action: :follow_toggle end end concern :taggable do member do post 'tagging', as: :tagging, action: :tagging delete 'tagging', as: :untagging, action: :untagging end end concern :subjectable do member do post 'subjects', as: :subjecting, action: :subjecting delete 'subjects', as: :unsubjecting, action: :unsubjecting end end concern :stageable do member do post 'educational_stages', as: :add_stages, action: :add_stages delete 'educational_stages', as: :remove_stages, action: :remove_stages end end concern :sociable do member do put 'like', as: :like, action: :like end end concern :downloadable do member do get 'download', as: :download, action: :download end end concern :reviewable do resources :reviews, only: [:index, :create, :update, :destroy], concerns: :deletable do member do post :rate end end end concern :submission do collection do get :submissions end member do post :submit end end concern :highlights do collection do get :this_week get :this_month end end # GET /users/1/learning_objects/ concern :publisher do member do get 'drafts', as: :get_drafts, action: :show_all_drafts get 'learning_objects', as: :get_learning_objects, action: :show_all_learning_objects get 'learning_objects/liked', as: :get_liked_learning_objects, action: :show_liked_learning_objects get 'collections', as: :get_collections, action: :show_all_collections get 'collections/liked', as: :get_liked_collections, action: :show_liked_collections end end # GET /learning_objects/1/versions/123 # GET /learning_objects/1/versions # POST /learning_objects/1/versions/234/checkout concern :versionable do resources :versions, only: [:show, :index] do member do post :checkout end end end scope :v1 do mount_devise_token_auth_for 'User', at: 'auth', controllers: { omniauth_callbacks: 'v1/omniauth_callbacks' } end namespace :v1 do resources :activities, only: :index resources :feed, only: [:index] resources :users, concerns: [:followable, :deletable, :publisher, :versionable] do resources :bookmarks, module: 'users', only: [:index, :create, :destroy] member do get 'following/:object_type', to: 'users#following' get 'followers', to: 'users#followers' get 'activities', to: 'activities#user_activities' get 'reviews/own', to: 'users#own_reviews' get 'reviews/received', to: 'users#received_reviews' end end resources :reviews, only: :show # search routes resources :search, only: :index do collection do get :autocomplete end end resources :collections, concerns: [:followable, :sociable, :downloadable, :reviewable, :taggable, :versionable, :deletable, :highlights, :subjectable, :stageable] do member do post :items, to: 'collections#add_object' delete :items, to: 'collections#delete_object' end end resources :learning_objects, concerns: [:sociable, :downloadable, :reviewable, :taggable, :versionable, :deletable, :highlights, :subjectable, :stageable, :submission] do member do resource :chunk, module: 'learning_objects', only: [:create, :show] resource :upload, module: 'learning_objects', only: :create resource :publish, module: 'learning_objects', only: :create end resources :attachment, module: 'learning_objects', only: :destroy, on: :member end resources :institutions, concerns: :deletable do member do get :users, to: 'institutions#users' end end resources :complaints, only: [:index, :create], concerns: :deletable resources :languages, except: [:new, :edit] resources :licenses, except: [:new, :edit] resources :mime_types, except: [:new, :edit] resources :object_types, except: [:new, :edit] resources :roles, except: [:new, :edit] resources :scores, only: [:index, :show, :update] resources :ratings, except: [:new, :edit] resources :contacts resources :suggestions resources :statistics, only: [:index] post '/package', to: 'packages#link' get '/subjects', to: 'subjects#index' get '/educational_stages', to: 'educational_stages#index' get '/activities/me', to: 'activities#me' get 'learning_objects/magnetlink/:magnetlink', to: 'learning_objects#magnetlink', as: 'magnetlink_learning_objects' end end