Class: Ponto::BaseResource
- Inherits:
-
OpenStruct
- Object
- OpenStruct
- Ponto::BaseResource
- Defined in:
- lib/ponto/api/base_resource.rb
Direct Known Subclasses
Account, BulkPayment, FinancialInstitution, Payment, Sandbox::FinancialInstitution, Sandbox::FinancialInstitutionAccount, Sandbox::FinancialInstitutionTransaction, Synchronization, Transaction
Class Method Summary collapse
- .create_by_uri(uri:, resource_type:, attributes:, access_token:, meta: nil) ⇒ Object
- .destroy_by_uri(uri:, access_token:, headers: nil) ⇒ Object
- .find_by_uri(uri:, access_token:, headers: nil) ⇒ Object
- .find_raw_by_uri(uri:, access_token:, headers: nil) ⇒ Object
- .list_by_uri(uri:, access_token:, query_params: {}, headers: nil) ⇒ Object
- .update_by_uri(uri:, resource_type:, attributes:, access_token:, meta: nil) ⇒ Object
Instance Method Summary collapse
-
#initialize(raw, access_token = nil) ⇒ BaseResource
constructor
A new instance of BaseResource.
- #reload! ⇒ Object
Constructor Details
#initialize(raw, access_token = nil) ⇒ BaseResource
Returns a new instance of BaseResource.
56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/ponto/api/base_resource.rb', line 56 def initialize(raw, access_token = nil) attributes = prepare_attributes(raw) super(attributes) relationships = raw["relationships"] || {} setup_relationships(relationships, access_token) links = raw["links"] || {} setup_links(links) = raw["meta"] || {} end |
Class Method Details
.create_by_uri(uri:, resource_type:, attributes:, access_token:, meta: nil) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 |
# File 'lib/ponto/api/base_resource.rb', line 3 def self.create_by_uri(uri:, resource_type:, attributes:, access_token:, meta: nil) payload = { data: { type: resource_type, attributes: attributes } } payload[:data][:meta] = if raw_item = Ponto.client.post(uri: uri, payload: payload, access_token: access_token) new(raw_item["data"]) end |
.destroy_by_uri(uri:, access_token:, headers: nil) ⇒ Object
51 52 53 54 |
# File 'lib/ponto/api/base_resource.rb', line 51 def self.destroy_by_uri(uri:, access_token:, headers: nil) raw_item = Ponto.client.delete(uri: uri, headers: headers, access_token: access_token) new(raw_item["data"]) end |
.find_by_uri(uri:, access_token:, headers: nil) ⇒ Object
42 43 44 |
# File 'lib/ponto/api/base_resource.rb', line 42 def self.find_by_uri(uri:, access_token:, headers: nil) new(find_raw_by_uri(uri: uri, headers: headers, access_token: access_token), access_token) end |
.find_raw_by_uri(uri:, access_token:, headers: nil) ⇒ Object
46 47 48 49 |
# File 'lib/ponto/api/base_resource.rb', line 46 def self.find_raw_by_uri(uri:, access_token:, headers: nil) raw_item = Ponto.client.get(uri: uri, headers: headers, access_token: access_token) raw_item["data"] end |
.list_by_uri(uri:, access_token:, query_params: {}, headers: nil) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/ponto/api/base_resource.rb', line 27 def self.list_by_uri(uri:, access_token:, query_params: {}, headers: nil) raw_response = Ponto.client.get(uri: uri, query_params: query_params, headers: headers, access_token: access_token) items = raw_response["data"].map do |raw_item| new(raw_item) end Ponto::Collection.new( klass: self, items: items, links: raw_response["links"], paging: raw_response.dig("meta", "paging"), synchronized_at: raw_response.dig("meta", "synchronizedAt"), latest_synchronization: raw_response.dig("meta", "latestSynchronization"), ) end |
.update_by_uri(uri:, resource_type:, attributes:, access_token:, meta: nil) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/ponto/api/base_resource.rb', line 15 def self.update_by_uri(uri:, resource_type:, attributes:, access_token:, meta: nil) payload = { data: { type: resource_type, attributes: attributes } } payload[:data][:meta] = if raw_item = Ponto.client.patch(uri: uri, payload: payload, access_token: access_token) new(raw_item["data"]) end |
Instance Method Details
#reload! ⇒ Object
69 70 71 72 73 74 75 76 |
# File 'lib/ponto/api/base_resource.rb', line 69 def reload! reloaded = self.class.find_raw_by_uri(uri) attributes = prepare_attributes(reloaded) attributes.each do |key, value| self[key] = value end self end |