Class: Hey::Request::Base

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

Direct Known Subclasses

Get, Post

Constant Summary collapse

URL =
"http://api.justyo.co"
ERROR_CODE =
141

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(route, params = {}) ⇒ Base

Returns a new instance of Base.



13
14
15
16
# File 'lib/hey/request/base.rb', line 13

def initialize route, params = {}
  @response = send_request route, params
  raise_for_invalid_code!
end

Instance Attribute Details

#responseObject

Returns the value of attribute response.



11
12
13
# File 'lib/hey/request/base.rb', line 11

def response
  @response
end

Instance Method Details

#error_messageObject



36
37
38
# File 'lib/hey/request/base.rb', line 36

def error_message
  json["error"]
end

#get_response_body(request) ⇒ Object

:nodoc:



40
41
42
# File 'lib/hey/request/base.rb', line 40

def get_response_body request #:nodoc:
  request && request.body ? JSON.parse(request.body) : nil
end

#has_error?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/hey/request/base.rb', line 32

def has_error?
  json && json["code"] == ERROR_CODE
end

#jsonObject



44
45
46
# File 'lib/hey/request/base.rb', line 44

def json
  @json ||= get_response_body @response
end

#raise_for_invalid_code!Object

:nodoc:



22
23
24
25
26
27
28
29
30
# File 'lib/hey/request/base.rb', line 22

def raise_for_invalid_code! #:nodoc:
  return unless has_error?
  case error_message
  when "NO SUCH USER"
    raise NoSuchUserError 
  else
    raise InvalidAPITokenError
  end
end

#uri(route, data = nil) ⇒ Object

:nodoc:



18
19
20
# File 'lib/hey/request/base.rb', line 18

def uri route, data = nil #:nodoc:
  URI([URL, route, data].join("/"))
end