Newer
Older
Mauricio Giacomini Girardello
committed
require 'uri'
class V1::LearningObjectsController < ApplicationController
include ::SociableController
include ::TaggableController
include ::Paginator
include ::DeletedObjectsController
include ::HighlightsController
Mauricio Giacomini Girardello
committed
before_action :authenticate_user!, except: [:index, :show]
before_action :set_learning_object, only: [:show, :update, :destroy]
Mauricio Giacomini Girardello
committed
before_action :authorize!, only: [:update, :destroy]
Mauricio Giacomini Girardello
committed
def index
limit = params[:limit] || 10
offset = params[:offset] || 0
serializer = params[:obaa].nil? ? LearningObjectSerializer : LearningObjectObaaSerializer
Marcela Ribeiro de Oliveira
committed
response.headers['X-Total-Count'] = LearningObject.count
render json: LearningObject.includes(:tags, :publisher, :language, :license).limit(limit).offset(offset), each_serializer: serializer
Mauricio Giacomini Girardello
committed
end
# GET /learning_objects/1
# GET /learning_objects/1.json
def show
render json: params[:obaa].nil? ? @learning_object : LearningObjectObaaSerializer.new(@learning_object)
Mauricio Giacomini Girardello
committed
end
# POST /learning_objects
# POST /learning_objects.json
def create
@learning_object = ::LearningObject::DraftBuilder.build current_user, learning_object_params
publisher = LearningObjectPublisher.new(DspaceService.create_client)
if publisher.create_draft @learning_object
render json: @learning_object, status: :created
else
render json: @learning_object.errors, status: :unprocessable_entity
end
end
# PATCH/PUT /learning_objects/1
# PATCH/PUT /learning_objects/1.json
def update
if LearningObject.update(learning_object_params)
render json: @learning_object, status: :ok
else
render json: @learning_object.errors, status: :unprocessable_entity
end
end
# DELETE /learning_objects/1
# DELETE /learning_objects/1.json
def destroy
LearningObject.destroy @learning_object
Mauricio Giacomini Girardello
committed
end
private
def deleted_resource; LearningObject; end
def highlights_resource; LearningObject; end
def sociable; set_learning_object; end
def taggable; set_learning_object; end
Mauricio Giacomini Girardello
committed
# Use callbacks to share common setup or constraints between actions.
def set_learning_object
@learning_object ||= LearningObject.unscoped.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def learning_object_params
params[:learning_object].permit(:author, :name, :object_type_id, :description, :school_level, :language, :link, tags: [:name] )
Mauricio Giacomini Girardello
committed
end
def authorize!
@learning_object ||= LearningObject.new
authorize @learning_object
end
end