module Sinatra::API

TODO: accept nested parameters

Public Class Methods

registered(app) click to toggle source
# File lib/algol/sinatra/api_helpers.rb, line 201
def self.registered(app)
  app.helpers Helpers
  app.before do
    @api = { required: {}, optional: {} }
    @parent_resource = nil

    if api_call?
      request.body.rewind
      body = request.body.read.to_s || ''
      unless body.empty?
        begin;
          params.merge!(::JSON.parse(body))
          # puts params.inspect
          # puts request.path
        rescue ::JSON::ParserError => e
          puts e.message
          puts e.backtrace
          halt 400, "Malformed JSON content"
        end
      end
    end
  end

  app.set(:requires) do |*resources|
    condition do
      @required = resources.collect { |r| r.to_s }
      @required.each { |r| @parent_resource = __api_locate_resource(r, @parent_resource) }
    end
  end

end