Newer
Older
Mauricio Giacomini Girardello
committed
require 'uri'
class V1::LearningObjectsController < ApplicationController
include ::SociableController
include ::TaggableController
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
learning_objects = paginate LearningObject.includes(:tags, :publisher, :language, :license).all
serializer = params[:obaa].nil? ? LearningObjectSerializer : LearningObjectObaaSerializer
render json: learning_objects, 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