require 'uri' class V1::LearningObjectsController < ApplicationController include ::SociableController include ::TaggableController include ::Paginator include ::DeletedObjectsController before_action :authenticate_user!, except: [:index, :show] before_action :set_learning_object, only: [:show, :update, :destroy] before_action :authorize!, only: [:show, :update, :destroy] def index serializer = params[:obaa].nil? ? LearningObjectSerializer : LearningObjectObaaSerializer render json: ActiveModel::ArraySerializer.new(LearningObject.limit(limit).offset(offset).all, each_serializer: serializer) end # GET /learning_objects/1 # GET /learning_objects/1.json def show render json: params[:obaa].nil? ? @learning_object : LearningObjectObaaSerializer.new(@learning_object) 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 render nothing: true, status: :ok end private def deleted_resource LearningObject end def sociable set_learning_object end def taggable set_learning_object end # 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] ) end def authorize! @learning_object ||= LearningObject.new authorize @learning_object end end