Class: ChartMogul::APIResource
- Inherits:
-
Object
- Object
- Object
- ChartMogul::APIResource
show all
- Extended by:
- Forwardable
- Defined in:
- lib/chartmogul/api_resource.rb
Direct Known Subclasses
Customer, CustomerInvoices, Customers, DataSource, Enrichment::Customers, Enrichment::DeprecatedCustomer, Metrics::ARPAs, Metrics::ARRs, Metrics::ASPs, Metrics::Activities, Metrics::AllKeyMetrics, Metrics::CustomerChurnRates, Metrics::CustomerCounts, Metrics::LTVs, Metrics::MRRChurnRates, Metrics::MRRs, Metrics::Subscriptions, Ping, Plan, Subscription, Transactions::Payment, Transactions::Refund
Class Attribute Summary collapse
Class Method Summary
collapse
Methods inherited from Object
#allowed_for_write?, #assign_all_attributes, #assign_writeable_attributes, attributes, define_private_writer, define_reader, define_writer, #initialize, #instance_attributes, new_from_json, readonly_attr, #serialize_for_write, #serialized_value_for_attr, writeable_attr, writeable_attributes
Class Attribute Details
.resource_name ⇒ Object
Returns the value of attribute resource_name.
7
8
9
|
# File 'lib/chartmogul/api_resource.rb', line 7
def resource_name
@resource_name
end
|
.resource_path ⇒ Object
Returns the value of attribute resource_path.
7
8
9
|
# File 'lib/chartmogul/api_resource.rb', line 7
def resource_path
@resource_path
end
|
.resource_root_key ⇒ Object
Returns the value of attribute resource_root_key.
7
8
9
|
# File 'lib/chartmogul/api_resource.rb', line 7
def resource_root_key
@resource_root_key
end
|
Class Method Details
.connection ⇒ Object
21
22
23
24
25
26
27
|
# File 'lib/chartmogul/api_resource.rb', line 21
def self.connection
@connection ||= Faraday.new(url: ChartMogul::API_BASE) do |faraday|
faraday.use Faraday::Request::BasicAuthentication, ChartMogul.account_token, ChartMogul.secret_key
faraday.use Faraday::Response::RaiseError
faraday.use Faraday::Adapter::NetHttp
end
end
|
.handle_other_error(exception) ⇒ Object
62
63
64
|
# File 'lib/chartmogul/api_resource.rb', line 62
def self.handle_other_error(exception)
raise ChartMogul::ChartMogulError.new(exception.message)
end
|
.handle_request_error(exception) ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/chartmogul/api_resource.rb', line 37
def self.handle_request_error(exception)
response = exception.response[:body]
http_status = exception.response[:status]
case http_status
when 400
message = "JSON schema validation hasn't passed."
raise ChartMogul::SchemaInvalidError.new(message, http_status: 400, response: response)
when 401
message = 'No valid API key provided'
raise ChartMogul::UnauthorizedError.new(message, http_status: 401, response: response)
when 403
message = "The requested action is forbidden."
raise ChartMogul::ForbiddenError.new(message, http_status: 403, response: response)
when 404
message = "The requested #{resource_name} could not be found."
raise ChartMogul::NotFoundError.new(message, http_status: 404, response: response)
when 422
message = "The #{resource_name} could not be created or updated."
raise ChartMogul::ResourceInvalidError.new(message, http_status: 422, response: response)
else
message = "#{resource_name} request error has occurred."
raise ChartMogul::ChartMogulError.new(message, http_status: http_status, response: response)
end
end
|
.handling_errors ⇒ Object
29
30
31
32
33
34
35
|
# File 'lib/chartmogul/api_resource.rb', line 29
def self.handling_errors
yield
rescue Faraday::ClientError => exception
exception.response ? handle_request_error(exception) : handle_other_error(exception)
rescue => exception
handle_other_error(exception)
end
|
.set_resource_name(name) ⇒ Object
13
14
15
|
# File 'lib/chartmogul/api_resource.rb', line 13
def self.set_resource_name(name)
@resource_name = name
end
|
.set_resource_path(path) ⇒ Object
9
10
11
|
# File 'lib/chartmogul/api_resource.rb', line 9
def self.set_resource_path(path)
@resource_path = ChartMogul::ResourcePath.new(path)
end
|
.set_resource_root_key(root_key) ⇒ Object
17
18
19
|
# File 'lib/chartmogul/api_resource.rb', line 17
def self.set_resource_root_key(root_key)
@resource_root_key = root_key
end
|