class Forward::API::Resource
Constants
- DEFAULT_ERROR_MESSAGE
Attributes
http[RW]
uri[RW]
Public Class Methods
new()
click to toggle source
# File lib/forward/api/resource.rb, line 26 def initialize @http = EM::HttpRequest.new(Forward::API.host) @http.use JSONify end
Public Instance Methods
add_body!()
click to toggle source
# File lib/forward/api/resource.rb, line 70 def add_body! return unless @options.has_key?(:params) logger.debug "[API] request params: #{@options[:params].inspect}" @options[:body] = @options.delete(:params).to_json end
add_head!()
click to toggle source
# File lib/forward/api/resource.rb, line 77 def add_head! @options[:head] ||= { 'content-type' => 'application/json', 'accept' => 'application/json' } @options[:head]['authorization'] = "Token token=#{config.api_key}" if @options[:authenticated] end
delete(options = {}, &block)
click to toggle source
# File lib/forward/api/resource.rb, line 66 def delete(options = {}, &block) request(:delete, options, &block) end
get(options = {}, &block)
click to toggle source
# File lib/forward/api/resource.rb, line 58 def get(options = {}, &block) request(:get, options, &block) end
post(options = {}, &block)
click to toggle source
# File lib/forward/api/resource.rb, line 62 def post(options = {}, &block) request(:post, options, &block) end
request(method = :get, options = {}, &block)
click to toggle source
# File lib/forward/api/resource.rb, line 32 def request(method = :get, options = {}, &block) logger.debug "[API] request: #{method.to_s.upcase} #{@http.uri}#{options[:path]}" @options = options || {} add_head! add_body! @_request = @http.send(method, @options) @_request.callback { status = @_request.response_header.status logger.debug "[API] response: #{status} #{@_request.response}" if @_request.response.is_a?(String) && !@_request.response.empty? # no JSON response exit_with_error DEFAULT_ERROR_MESSAGE else block.call(@_request.response, status) end } @_request.errback { exit_with_error DEFAULT_ERROR_MESSAGE } end