Sha256: 5e9eb5e8882a229a3aca93cd4947e784f99faaa6dd33b79e34e8128609ed30ae

Contents?: true

Size: 1.56 KB

Versions: 2

Compression:

Stored size: 1.56 KB

Contents

require_dependency 'landable/api_controller'
require_dependency 'landable/asset_search_engine'

module Landable
  module Api
    class AssetsController < ApiController
      # filters
      before_filter :load_asset, except: [:create, :index]

      # RESTful methods
      def create
        asset = Asset.new(asset_params)
        original = asset.duplicate_of

        if original
          head :moved_permanently, location: asset_url(original)
          return
        end

        Asset.transaction do
          asset.author = current_author
          asset.save!
        end

        respond_with asset, status: :created, location: asset_url(asset)
      end

      def destroy
        @asset.try(:deactivate)

        respond_with @asset
      end

      def index
        search = Landable::AssetSearchEngine.new(search_params.merge(ids: params[:ids]))
        respond_with search.results, meta: search.meta
      end

      def reactivate
        @asset.try(:reactivate)

        respond_with @asset
      end

      def show
        respond_with @asset
      end

      def update
        @asset.update_attributes!(asset_params)

        respond_with @asset
      end

      # custom methods

      private

      def asset_params
        params.require(:asset).permit(:id, :name, :description, :data, :file)
      end

      def load_asset
        @asset = Asset.find(params[:id])
      end

      def search_params
        @search_params ||=
          begin
            hash = params.permit(search: [:name])
            hash[:search] || {}
          end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
landable-1.14.0 app/controllers/landable/api/assets_controller.rb
landable-1.13.2 app/controllers/landable/api/assets_controller.rb