Sha256: b6bb242a596cfe9ffc3a3ddf1a165e4d62d4262e55c0dbe7bafa89a76c9e9574

Contents?: true

Size: 750 Bytes

Versions: 10

Compression:

Stored size: 750 Bytes

Contents

require 'sinatra/base'
require 'compel'

class SinatraApp < Sinatra::Base

  set :show_exceptions, false
  set :raise_errors, true

  before do
    content_type :json
  end

  helpers do

    def compel(schema)
      params.merge! Compel.run!(params, Compel.hash.keys(schema))
    end

  end

  error Compel::InvalidObjectError do |exception|
    status 400
    { errors: exception.object[:errors] }.to_json
  end

  configure :development do
    set :show_exceptions, false
    set :raise_errors, true
  end

  post '/api/posts' do
    compel({
      post: Compel.hash.keys({
        title: Compel.string.required,
        body: Compel.string,
        published: Compel.boolean.default(false)
      }).required
    })

    params.to_json
  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
compel-0.5.1 spec/support/sinatra_app.rb
compel-0.5.0 spec/support/sinatra_app.rb
compel-0.4.3 spec/support/sinatra_app.rb
compel-0.4.2 spec/support/sinatra_app.rb
compel-0.4.0 spec/support/sinatra_app.rb
compel-0.3.7 spec/support/sinatra_app.rb
compel-0.3.6 spec/support/sinatra_app.rb
compel-0.3.4 spec/support/sinatra_app.rb
compel-0.3.2 spec/support/sinatra_app.rb
compel-0.3.1 spec/support/sinatra_app.rb