Module: Moonclerk
- Defined in:
- lib/moonclerk.rb,
lib/moonclerk/form.rb,
lib/moonclerk/util.rb,
lib/moonclerk/payment.rb,
lib/moonclerk/version.rb,
lib/moonclerk/customer.rb,
lib/moonclerk/list_object.rb,
lib/moonclerk/api_resource.rb,
lib/moonclerk/errors/api_error.rb,
lib/moonclerk/moonclerk_object.rb,
lib/moonclerk/api_operations/list.rb,
lib/moonclerk/api_operations/request.rb,
lib/moonclerk/errors/moonclerk_error.rb,
lib/moonclerk/errors/authentication_error.rb,
lib/moonclerk/errors/invalid_request_error.rb
Defined Under Namespace
Modules: APIOperations, Util
Classes: APIError, APIResource, AuthenticationError, Customer, Form, InvalidRequestError, ListObject, MoonclerkError, MoonclerkObject, Payment
Constant Summary
collapse
- API_BASE =
"https://api.moonclerk.com"
- API_VERSION =
1
- VERSION =
"1.0.1"
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.api_key ⇒ Object
Returns the value of attribute api_key.
31
32
33
|
# File 'lib/moonclerk.rb', line 31
def api_key
@api_key
end
|
Class Method Details
.api_error(error, response, error_obj) ⇒ Object
107
108
109
|
# File 'lib/moonclerk.rb', line 107
def self.api_error(error, response, error_obj)
APIError.new(error[:message], response.status, response.body, error_obj, response.)
end
|
.authentication_error(error, response, error_obj) ⇒ Object
102
103
104
105
|
# File 'lib/moonclerk.rb', line 102
def self.authentication_error(error, response, error_obj)
AuthenticationError.new(error[:message], response.status, response.body, error_obj,
response.)
end
|
.default_param_keys ⇒ Object
67
68
69
|
# File 'lib/moonclerk.rb', line 67
def self.default_param_keys
[:count, :offset]
end
|
.general_api_error(status, response_body) ⇒ Object
71
72
73
74
|
# File 'lib/moonclerk.rb', line 71
def self.general_api_error(status, response_body)
APIError.new("Invalid response object from API: #{response_body.inspect} " +
"(HTTP response code was #{status})", status, response_body)
end
|
.handle_api_error(response) ⇒ Object
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/moonclerk.rb', line 76
def self.handle_api_error(response)
begin
error_obj = JSON.parse(response.body)
error_obj = Util.symbolize_names(error_obj)
error = error_obj[:error]
raise MoonclerkError.new unless error && error.is_a?(Hash)
rescue JSON::ParserError, StripeError
raise general_api_error(response.status, response.body)
end
case response.status
when 400, 404
raise invalid_request_error(error, response, error_obj)
when 401
raise authentication_error(error, response, error_obj)
else
raise api_error(error, response, error_obj)
end
end
|
60
61
62
63
64
65
|
# File 'lib/moonclerk.rb', line 60
def self.
{
"Authorization" => "Token token=#{api_key}",
"Accept" => "application/vnd.moonclerk+json;version=#{API_VERSION}"
}
end
|
.invalid_request_error(error, response, error_obj) ⇒ Object
97
98
99
100
|
# File 'lib/moonclerk.rb', line 97
def self.invalid_request_error(error, response, error_obj)
InvalidRequestError.new(error[:message], response.status, response.body, error_obj,
response.)
end
|
.request(method, url, params = {}) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/moonclerk.rb', line 34
def self.request(method, url, params = {})
unless api_key
raise AuthenticationError.new('No API key provided. ' \
'Set your API key using "Moonclerk.api_key = <API-KEY>". ' \
'You can generate API keys from the Moonclerk web interface' \
'by logging in at moonclerk.com.')
end
if api_key =~ /\s/
raise AuthenticationError.new('Your API key is invalid, as it contains ' \
'whitespace. (HINT: You can double-check your API key from the ' \
'MoonClerk web interface by logging in at moonclerk.com.)')
end
connection = Faraday.new
response = connection.send(method, url, params, )
parsed_response = JSON.parse(response.body)
symbolized_response = Util.symbolize_names(parsed_response)
if symbolized_response[:error]
handle_api_error(response)
else
symbolized_response[symbolized_response.keys.first]
end
end
|