Class: EnotasApi::Request

Inherits:
Object
  • Object
show all
Includes:
EncodingHelper, Filterable, Paginable, Searchable, Sortable
Defined in:
lib/enotas_api/common/request.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Sortable

included

Methods included from Searchable

included

Methods included from Paginable

included

Methods included from Filterable

included

Methods included from EncodingHelper

#encode_query_params, #url_encode

Constructor Details

#initialize(uri:, method: :GET, content: nil, result_object: EnotasApi::JsonResult) ⇒ Request

Returns a new instance of Request.



21
22
23
24
25
26
27
28
29
# File 'lib/enotas_api/common/request.rb', line 21

def initialize(uri:, method: :GET, content: nil, result_object: EnotasApi::JsonResult)
  @method = method
  @uri = uri
  @content = content
  @result_object = result_object
  @params = {}
  page if respond_to?(:page)
  super()
end

Instance Attribute Details

#contentObject (readonly)

Returns the value of attribute content.



19
20
21
# File 'lib/enotas_api/common/request.rb', line 19

def content
  @content
end

#methodObject (readonly)

Returns the value of attribute method.



19
20
21
# File 'lib/enotas_api/common/request.rb', line 19

def method
  @method
end

#paramsObject (readonly)

Returns the value of attribute params.



19
20
21
# File 'lib/enotas_api/common/request.rb', line 19

def params
  @params
end

#result_objectObject (readonly)

Returns the value of attribute result_object.



19
20
21
# File 'lib/enotas_api/common/request.rb', line 19

def result_object
  @result_object
end

#uriObject (readonly)

Returns the value of attribute uri.



19
20
21
# File 'lib/enotas_api/common/request.rb', line 19

def uri
  @uri
end

Instance Method Details

#callObject



31
32
33
34
35
# File 'lib/enotas_api/common/request.rb', line 31

def call
  code, content = make_request

  result_object.new(code, content)
end

#call!Object

Raises:



37
38
39
40
41
42
# File 'lib/enotas_api/common/request.rb', line 37

def call!
  result = call
  raise EnotasApi::Error, "[Request][ERROR] Status:#{result.status_code}\n#{result.to_json}" if result.error?

  result
end

#param(name, value) ⇒ Object



59
60
61
62
# File 'lib/enotas_api/common/request.rb', line 59

def param(name, value)
  @params[name] = value
  self
end

#to_json(options = nil) ⇒ Object



53
54
55
56
57
# File 'lib/enotas_api/common/request.rb', line 53

def to_json(options = nil)
  return nil if content.nil?

  content.is_a?(String) ? content : content.to_json(options)
end

#to_urlObject



44
45
46
47
48
49
50
51
# File 'lib/enotas_api/common/request.rb', line 44

def to_url
  url = "#{base_url}#{uri}"

  query_params = encode_query_params(params) if params
  url += "?#{query_params}" unless query_params&.empty?

  url
end