module Sinatra::API

TODO: accept nested parameters

Constants

ResourcePrefix
VERSION

Attributes

resource_aliases[RW]

Public Class Methods

alias_resource(original, resource_alias) click to toggle source
# File lib/sinatra/api/helpers.rb, line 269
def self.alias_resource(original, resource_alias)
  @@resource_aliases ||= {}
  @@resource_aliases[original.to_sym] ||= []
  @@resource_aliases[original.to_sym] << resource_alias.to_s

  puts "API resource #{original} is now aliased as #{resource_alias}"
end
aliases_for(resource) click to toggle source
# File lib/sinatra/api/helpers.rb, line 277
def self.aliases_for(resource)
  @@resource_aliases ||= {}
  @@resource_aliases[resource.to_sym] || []
end
registered(app) click to toggle source
# File lib/sinatra/api/helpers.rb, line 235
def self.registered(app)
  @@api_resource_aliases ||= {}

  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