Class: Zoomba::Base

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

Direct Known Subclasses

User

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.perform_request(action, data = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/zoomba/base.rb', line 11

def self.perform_request(action, data = {})
  uri = URI("#{Zoomba.configuration.api_base_url}/#{resource_path_part}/#{action}")
  response = Net::HTTP.start(uri.host,
                             uri.port,
                             use_ssl: true) do |http|
    request = Net::HTTP::Post.new(uri)
    request.set_form_data(Zoomba.configuration.to_h.merge(data))
    http.request(request)
  end

  process_response(response)
end

.process_response(response) ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/zoomba/base.rb', line 28

def self.process_response(response)
  if response.code == '200'
    parsed = JSON.parse(response.body)
    return parsed if parsed['error'].nil?
    raise Error::ApiError.new(parsed['error']['message'],
                              parsed['error']['code'])
  end
end

.resource_path_partObject



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

def self.resource_path_part
  to_s.downcase.sub('zoomba::', '')
end

Instance Method Details

#assign(args = {}) ⇒ Object



3
4
5
6
7
8
9
# File 'lib/zoomba/base.rb', line 3

def assign(args = {})
  args.each do |key, value|
    next if key.to_sym == :id
    send("#{key}=", value)
  end
  self
end

#perform_request(action, data = {}) ⇒ Object



24
25
26
# File 'lib/zoomba/base.rb', line 24

def perform_request(action, data = {})
  self.class.perform_request(action, data)
end

#resource_path_partObject



41
42
43
# File 'lib/zoomba/base.rb', line 41

def resource_path_part
  self.class.resource_path_part
end