Class: UniversalGitClient::Normalizers::Base
- Inherits:
-
Object
- Object
- UniversalGitClient::Normalizers::Base
show all
- Defined in:
- lib/universal-git-client/normalizers/base.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(response, resource) ⇒ Base
Returns a new instance of Base.
14
15
16
17
|
# File 'lib/universal-git-client/normalizers/base.rb', line 14
def initialize(response, resource)
@response = response
@resource = resource
end
|
Instance Attribute Details
#resource ⇒ Object
Returns the value of attribute resource.
12
13
14
|
# File 'lib/universal-git-client/normalizers/base.rb', line 12
def resource
@resource
end
|
#response ⇒ Object
Returns the value of attribute response.
12
13
14
|
# File 'lib/universal-git-client/normalizers/base.rb', line 12
def response
@response
end
|
Instance Method Details
#body_as_object ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/universal-git-client/normalizers/base.rb', line 31
def body_as_object
@body_as_object ||= begin
struct = JSON.parse(response.body, object_class: OpenStruct)
if !struct.is_a?(Array) && struct.values
struct.values
else
struct
end
end
end
|
#current_page_index ⇒ Object
58
59
60
61
62
|
# File 'lib/universal-git-client/normalizers/base.rb', line 58
def current_page_index
response.request.options[:query][:page].to_s
rescue StandardError
nil
end
|
#first_page_index ⇒ Object
64
65
66
|
# File 'lib/universal-git-client/normalizers/base.rb', line 64
def first_page_index
fetch_rel_value('first')
end
|
#last_page_index ⇒ Object
76
77
78
|
# File 'lib/universal-git-client/normalizers/base.rb', line 76
def last_page_index
fetch_rel_value('last')
end
|
#next_page_index ⇒ Object
72
73
74
|
# File 'lib/universal-git-client/normalizers/base.rb', line 72
def next_page_index
fetch_rel_value('next')
end
|
#normalize ⇒ Object
19
20
21
22
23
24
25
|
# File 'lib/universal-git-client/normalizers/base.rb', line 19
def normalize
object = body_as_object
serializer = serializer_for_resource
serializer_options = {}
serializer_options.deep_merge!() if object.is_a?(Array)
serializer.new(object, serializer_options)
end
|
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/universal-git-client/normalizers/base.rb', line 43
def
{
meta: {
pagination: {
self: current_page_index,
first: first_page_index,
prev: prev_page_index,
next: next_page_index,
last: last_page_index,
per_page: per_page_index
}
}
}
end
|
#per_page_index ⇒ Object
80
81
82
83
84
|
# File 'lib/universal-git-client/normalizers/base.rb', line 80
def per_page_index
response.request.options[:query][:per_page].to_s
rescue StandardError
nil
end
|
#prev_page_index ⇒ Object
68
69
70
|
# File 'lib/universal-git-client/normalizers/base.rb', line 68
def prev_page_index
fetch_rel_value('prev')
end
|
#serializer_for_resource ⇒ Object
27
28
29
|
# File 'lib/universal-git-client/normalizers/base.rb', line 27
def serializer_for_resource
self.class.const_get("#{resource}Serializer")
end
|