Module: EZApi::Client

Defined in:
lib/ezapi/client.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#base_urlObject

Returns the value of attribute base_url.



9
10
11
# File 'lib/ezapi/client.rb', line 9

def base_url
  @base_url
end

#keyObject

Returns the value of attribute key.



9
10
11
# File 'lib/ezapi/client.rb', line 9

def key
  @key
end

Class Method Details

.extended(base) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/ezapi/client.rb', line 10

def self.extended(base)
  [:get, :post, :put, :patch, :delete].each do |method|
    define_method(method) do |path, params={}, headers=request_headers, request_arguments={}|
      full_path = full_api_path(path)
      request(full_path, method, params, headers, request_arguments)
    end
  end
end

Instance Method Details

#api_key(key) ⇒ Object



23
24
25
# File 'lib/ezapi/client.rb', line 23

def api_key(key)
  self.key = key
end

#api_url(url) ⇒ Object



19
20
21
# File 'lib/ezapi/client.rb', line 19

def api_url(url)
  self.base_url = url
end

#raw_request(full_url, method, params = {}, headers = self.request_headers, request_arguments = {}) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/ezapi/client.rb', line 41

def raw_request(full_url, method, params={}, headers=self.request_headers, request_arguments={})
  default_request = {method: method, url: full_url, payload: params, headers: headers}
  begin
    RestClient::Request.execute(default_request.merge(request_arguments))
  rescue RestClient::ExceptionWithResponse => e
    if response_code = e.http_code and response_body = e.http_body
      handle_api_error(response_code, response_body)
    else
      handle_restclient_error(e)
    end
  rescue RestClient::Exception, Errno::ECONNREFUSED, SocketError => e
    handle_restclient_error(e)
  end
end

#request(full_url, method, params = {}, headers = self.request_headers, request_arguments = {}) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/ezapi/client.rb', line 27

def request(full_url, method, params={}, headers=self.request_headers, request_arguments={})
  response = raw_request(full_url, method, params, headers, request_arguments)

  begin
    if response.headers && response.headers[:content_type] == "application/xml"
      Nokogiri::XML(response.body)
    else
      JSON.parse(response.body) unless response.empty?
    end
  rescue JSON::ParserError => e
    nil
  end
end