Rails.application.routes.draw do
  require 'sidekiq/web'
  mount Sidekiq::Web, at: '/sidekiq'

  concern :followable do
    member do
      post :follow
      delete :unfollow
    end
  end

  concern :taggable do
    member do
      post :tagging
      delete :untagging
    end
  end

  concern :sociable do
    member do
      post :like
      delete :unlike
    end
  end

  concern :reviewable do
    resources :reviews, except: :update do
      member do
        post :rate
      end
    end
  end

  scope :v1 do
    mount_devise_token_auth_for 'User', skip: [:omniauth_callbacks], at: :auth
  end

  # devise_for :users, :controllers => { :omniauth_callbacks => "callbacks" }
  namespace :v1 do
    resources :users, concerns: :followable do
      member do
        resources :bookmarks, module: 'users', only: [:index, :create]

        delete :bookmarks, to: 'bookmarks#destroy'
      end
    end
    resources :collections, concerns: [:followable, :sociable, :reviewable, :taggable]
    resources :learning_objects, concerns: [:sociable, :reviewable, :taggable] do
      member do
        resource :chunk, module: 'learning_objects', only: [:create, :show]
        resource :upload, module: 'learning_objects', only: :create
      end
    end
    resources :institutions do
      member do
        get :users, to: 'institutions#users'
      end
    end
    resources :scores, only: [:index, :update]
    resources :object_types, except: [:new, :edit]
    resources :mime_types, except: [:new, :edit]
    resources :languages, except: [:new, :edit]
    resources :complaints, only: [:index, :create]
  end
end