Class: DarujmeCz::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/darujme_cz/base.rb

Direct Known Subclasses

Pledge, Project, Transaction

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes) ⇒ Base

Returns a new instance of Base.

Parameters:

  • attributes (Hash)


37
38
39
# File 'lib/darujme_cz/base.rb', line 37

def initialize(attributes)
  @source = attributes
end

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



34
35
36
# File 'lib/darujme_cz/base.rb', line 34

def id
  @id
end

Class Method Details

.all(params = {}) ⇒ Object

Parameters:

  • params (Hash) (defaults to: {})

Options Hash (params):

  • organization_id (Integer) — default: nil

    ID of organization



10
11
12
# File 'lib/darujme_cz/base.rb', line 10

def self.all(params = {})
  where params
end

.base_path(params = {}) ⇒ Object

Raises:

  • (ArgumentError)


27
28
29
30
31
32
# File 'lib/darujme_cz/base.rb', line 27

def self.base_path(params = {})
  org = params.delete(:organization_id) || DarujmeCz.config.organization_id
  raise ArgumentError, "Missing organization ID" if org.nil?

  "organization/#{org}"
end

.connection(params = {}) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/darujme_cz/base.rb', line 19

def self.connection(params = {})
  credentials = params.delete(:connection) || {
    app_id: DarujmeCz.config.app_id,
    api_key: DarujmeCz.config.app_secret,
  }
  Connection.new(**credentials)
end

.define_attributes(list) ⇒ Object

Parameters:

  • list (Array<String>)


42
43
44
45
46
47
48
# File 'lib/darujme_cz/base.rb', line 42

def self.define_attributes(list)
  list.each do |attribute|
    define_method attribute.underscore do
      @source[attribute]
    end
  end
end

.endpointObject

This method is abstract.

Define name of endpoint, which is also name of root element

Raises:

  • (NotImplementedError)


4
5
6
# File 'lib/darujme_cz/base.rb', line 4

def self.endpoint
  raise NotImplementedError
end

.where(params = {}) ⇒ Object



14
15
16
17
# File 'lib/darujme_cz/base.rb', line 14

def self.where(params = {})
  data = connection(params).get "#{base_path(params)}/#{endpoint}-by-filter", params
  data[endpoint].map { |i| new(i) }
end