Class: Payable::Resource

Inherits:
Dry::Struct
  • Object
show all
Defined in:
lib/payable/resource.rb

Direct Known Subclasses

Payment, Work, WorkType, Worker

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.api_urlObject



12
13
14
# File 'lib/payable/resource.rb', line 12

def self.api_url
  Addressable::URI.parse Payable.config.api_url
end

.collectionObject

Raises:

  • (NotImplementedError)


26
27
28
29
30
31
32
33
34
35
# File 'lib/payable/resource.rb', line 26

def self.collection
  raise NotImplementedError if self == Payable::Resource

  @collection ||= begin
    collection = name.split('::').last
    collection = collection.split(/(?=[A-Z])/).map(&:downcase)

    "#{ collection.join('_') }s"
  end
end

.list(options = {}) ⇒ Object



37
38
39
# File 'lib/payable/resource.rb', line 37

def self.list(options = {})
  ResourceList.new(self, options)
end

.retrieve(id, client: Payable.client, params: {}) ⇒ Object



20
21
22
23
24
# File 'lib/payable/resource.rb', line 20

def self.retrieve(id, client: Payable.client, params: {})
  response = client.get(url_template.expand(id: id), params)

  new(response.body)
end

.url_templateObject



16
17
18
# File 'lib/payable/resource.rb', line 16

def self.url_template
  Addressable::Template.new api_url.join("#{collection}/{id}")
end

Instance Method Details

#urlObject



41
42
43
# File 'lib/payable/resource.rb', line 41

def url
  self.class.url_template.expand(id: id)
end