Sha256: 4835834b98b19509245b1f3ee22f8dc8705dd52493bca098a9a1429d2a0741b6

Contents?: true

Size: 1.68 KB

Versions: 13

Compression:

Stored size: 1.68 KB

Contents

module API
  module V1
    class Widgets < GrapeApeRails::API
      include GrapeApeRails::Handlers::All

      get "/thing" do
        { foo: 42 }
      end

      resource :widgets do
        desc "Get a single Widget"
        get ':id', rabl: 'v1/widget' do
          @widget = Widget.find(params[:id])
          @widget
        end

        desc "Get all Widgets"
        get '/', rabl: 'v1/widgets' do
          @widgets = Widget.all
          @widgets
        end

        desc "Get a Widget, requiring a name"
        params do
          requires :name
        end
        get ':id/named', rabl: 'v1/widget' do
          @widget = Widget.first
          @widget
        end

        desc "Create a Widget"
        params do
          requires :name
          requires :color
        end
        post "/", rabl: 'v1/widget' do
          widget_params = params.except(:route_info, :format)
          @widget = Widget.new widget_params
          unless @widget.save
            errs = @widget.errors.messages.map{ |a, m| "#{a} #{m.join(', ')}" }.join('; ')
            error!({ code: 'CREATE_WIDGET_FAILED', message: "Resource failed validation. #{errs}" }, 422)
          end
          @widget
        end

        desc "Update a Widget"
        put ":id", rabl: 'v1/widget' do
          widget_params = params.except(:route_info, :format)
          @widget = Widget.find(params[:id])
          unless @widget.update_attributes widget_params
            errs = @widget.errors.messages.map{ |a, m| "#{a} #{m.join(', ')}" }.join('; ')
            error!({ code: 'UPDATE_WIDGET_FAILED', message: "Resource failed validation. #{errs}" }, 422)
          end
          @widget
        end

      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
grape_ape_rails-0.9.13 spec/dummy/app/controllers/api/v1/widgets.rb
grape_ape_rails-0.9.12 spec/dummy/app/controllers/api/v1/widgets.rb
grape_ape_rails-0.9.11 spec/dummy/app/controllers/api/v1/widgets.rb
grape_ape_rails-0.9.10 spec/dummy/app/controllers/api/v1/widgets.rb
grape_ape_rails-0.9.9 spec/dummy/app/controllers/api/v1/widgets.rb
grape_ape_rails-0.9.8 spec/dummy/app/controllers/api/v1/widgets.rb
grape_ape_rails-0.9.7 spec/dummy/app/controllers/api/v1/widgets.rb
grape_ape_rails-0.9.6 spec/dummy/app/controllers/api/v1/widgets.rb
grape_ape_rails-0.9.5 spec/dummy/app/controllers/api/v1/widgets.rb
grape_ape_rails-0.9.4 spec/dummy/app/controllers/api/v1/widgets.rb
grape_ape_rails-0.9.3 spec/dummy/app/controllers/api/v1/widgets.rb
grape_ape_rails-0.9.2 spec/dummy/app/controllers/api/v1/widgets.rb
grape_ape_rails-0.9.1 spec/dummy/app/controllers/api/v1/widgets.rb