Class: Recurly::API

Inherits:
Object
  • Object
show all
Extended by:
Net::HTTPAdapter
Defined in:
lib/recurly/api.rb,
lib/recurly/api/errors.rb,
lib/recurly/api/net_http_adapter.rb

Overview

The API class handles all requests to the Recurly API. While most of its functionality is leveraged by the Resource class, it can be used directly, as well.

Requests are made with methods named after the four main HTTP verbs recognized by the Recurly API.

Examples:

Recurly::API.get 'accounts'             # => #<Net::HTTPOK ...>
Recurly::API.post 'accounts', xml_body  # => #<Net::HTTPCreated ...>
Recurly::API.put 'accounts/1', xml_body # => #<Net::HTTPOK ...>
Recurly::API.delete 'accounts/1'        # => #<Net::HTTPNoContent ...>

Defined Under Namespace

Modules: Net Classes: BadRequest, ClientError, Forbidden, GatewayError, InternalServerError, MethodNotAllowed, NotAcceptable, NotFound, NotModified, PaymentRequired, PreconditionFailed, Redirection, ResponseError, ServerError, ServiceUnavailable, Unauthorized, UnprocessableEntity, UnsupportedMediaType

Constant Summary

FORMATS =
Helper.hash_with_indifferent_read_access(
  'pdf' => 'application/pdf',
  'xml' => 'application/xml'
)
ERRORS =

Error mapping by status code.

Hash.new { |hash, code|
  unless hash.key? code
    case code
      when 400...500 then ClientError
      when 500...600 then ServerError
      else                ResponseError
    end
  end
}.update(
  304 => NotModified,
  400 => BadRequest,
  401 => Unauthorized,
  402 => PaymentRequired,
  403 => Forbidden,
  404 => NotFound,
  406 => NotAcceptable,
  412 => PreconditionFailed,
  415 => UnsupportedMediaType,
  422 => UnprocessableEntity,
  500 => InternalServerError,
  502 => GatewayError,
  503 => ServiceUnavailable
).freeze
@@base_uri =
"https://api.recurly.com/v2/"

Instance Attribute Summary

Attributes included from Net::HTTPAdapter

#net_http

Class Method Summary collapse

Class Method Details

.accept_languageString?



32
33
34
# File 'lib/recurly/api.rb', line 32

def accept_language
  headers['Accept-Language']
end

.accept_language=(language) ⇒ Object



37
38
39
# File 'lib/recurly/api.rb', line 37

def accept_language=(language)
  headers['Accept-Language'] = language
end

.base_uriURI::Generic



72
73
74
# File 'lib/recurly/api.rb', line 72

def base_uri
  URI.parse @@base_uri.sub('api', Recurly.subdomain)
end

.delete(uri, body = nil, options = {}) ⇒ Net::HTTPNoContent, Net::HTTPResponse

Raises:



67
68
69
# File 'lib/recurly/api.rb', line 67

def delete uri, body = nil, options = {}
  request :delete, uri, options
end

.get(uri, params = {}, options = {}) ⇒ Net::HTTPOK, Net::HTTPResponse

Raises:



49
50
51
# File 'lib/recurly/api.rb', line 49

def get uri, params = {}, options = {}
  request :get, uri, { :params => params || {} }.merge(options)
end

.head(uri, params = {}, options = {}) ⇒ Net::HTTPOK, Net::HTTPResponse

Raises:



43
44
45
# File 'lib/recurly/api.rb', line 43

def head uri, params = {}, options = {}
  request :head, uri, { :params => params || {} }.merge(options)
end

.headersHash{String => String}

Additional HTTP headers sent with each API call



27
28
29
# File 'lib/recurly/api.rb', line 27

def headers
  @headers ||= { 'Accept' => accept, 'User-Agent' => user_agent }
end

.post(uri, body = nil, options = {}) ⇒ Net::HTTPCreated, Net::HTTPResponse

Raises:



55
56
57
# File 'lib/recurly/api.rb', line 55

def post uri, body = nil, options = {}
  request :post, uri, { :body => body.to_s }.merge(options)
end

.put(uri, body = nil, options = {}) ⇒ Net::HTTPOK, Net::HTTPResponse

Raises:



61
62
63
# File 'lib/recurly/api.rb', line 61

def put uri, body = nil, options = {}
  request :put, uri, { :body => body.to_s }.merge(options)
end

.user_agentString



77
78
79
# File 'lib/recurly/api.rb', line 77

def user_agent
  "Recurly/#{Version}; #{RUBY_DESCRIPTION}"
end