wrapi 0.4.4 → 0.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/wrapi/entity.rb +34 -21
- data/lib/wrapi/request.rb +31 -15
- data/lib/wrapi/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b7bed56656363a708f42ca25752e0d7235e9172e479a929e2f0c42674f42197
|
4
|
+
data.tar.gz: 0d0ea9163649d1da64a89c37c548dbb657a98f74fd0da8e3eb871c6994afe8f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81cc81edf7e4e9cf2d6b0c837e599332dd717d0914b87aba76ce56da736cdd588a43b863dcf9196e7eec8c86fbfb1df5e5d6586292a5f58c619487f8b7952bff
|
7
|
+
data.tar.gz: d1e12b22efcaf3ba181dd62407f9acf4e15e2f45f7c03848d8c076763fdd94ad9904f3b3751bd5491a00a820e0bec8ffd53bef60e910e4f541b4df9a04ed1be3
|
data/CHANGELOG.md
CHANGED
data/lib/wrapi/entity.rb
CHANGED
@@ -4,32 +4,39 @@ module WrAPI
|
|
4
4
|
# Defines HTTP request methods
|
5
5
|
module Request
|
6
6
|
class Entity
|
7
|
-
attr_reader :attributes
|
8
|
-
|
9
7
|
# factory method to create entity or array of entities
|
10
|
-
def self.create(
|
11
|
-
if
|
12
|
-
Entity.entify(
|
8
|
+
def self.create(attr)
|
9
|
+
if attr.is_a? Array
|
10
|
+
Entity.entify(attr)
|
13
11
|
else
|
14
|
-
Entity.new(
|
12
|
+
Entity.new(attr) if attr
|
15
13
|
end
|
16
14
|
end
|
17
15
|
|
18
|
-
def initialize(
|
19
|
-
case
|
16
|
+
def initialize(attr)
|
17
|
+
case attr
|
20
18
|
when Hash
|
21
|
-
@attributes =
|
19
|
+
@attributes = attr.clone.transform_keys(&:to_s)
|
22
20
|
else
|
23
|
-
@attributes =
|
21
|
+
@attributes = attr.clone
|
24
22
|
end
|
25
23
|
end
|
24
|
+
|
25
|
+
def attributes
|
26
|
+
@attributes || {}
|
27
|
+
end
|
28
|
+
|
29
|
+
def attributes= val
|
30
|
+
@attributes = val || {}
|
31
|
+
end
|
26
32
|
|
27
33
|
def method_missing(method_sym, *arguments, &block)
|
28
34
|
# assignment
|
29
|
-
|
35
|
+
assignment = method_sym[/.*(?==\z)/m]
|
36
|
+
if assignment
|
30
37
|
raise ArgumentError, "wrong number of arguments (given #{arguments.length}, expected 1)", caller(1) unless arguments.length == 1
|
31
38
|
|
32
|
-
@attributes[
|
39
|
+
@attributes[assignment] = arguments[0]
|
33
40
|
elsif @attributes.include? method_sym.to_s
|
34
41
|
accessor(method_sym.to_s)
|
35
42
|
else
|
@@ -39,6 +46,7 @@ module WrAPI
|
|
39
46
|
end
|
40
47
|
|
41
48
|
def respond_to?(method_sym, include_private = false)
|
49
|
+
@attributes ||= {}
|
42
50
|
if @attributes.include? method_sym.to_s
|
43
51
|
true
|
44
52
|
else
|
@@ -51,15 +59,15 @@ module WrAPI
|
|
51
59
|
end
|
52
60
|
|
53
61
|
def accessor(method)
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
62
|
+
case @attributes[method]
|
63
|
+
when Hash
|
64
|
+
@attributes[method] = self.class.new(@attributes[method])
|
65
|
+
when Array
|
66
|
+
# make deep copy
|
67
|
+
@attributes[method] = Entity.entify(@attributes[method])
|
68
|
+
else
|
69
|
+
@attributes[method]
|
70
|
+
end
|
63
71
|
end
|
64
72
|
|
65
73
|
def clone
|
@@ -68,6 +76,11 @@ module WrAPI
|
|
68
76
|
c
|
69
77
|
end
|
70
78
|
|
79
|
+
def ==(other)
|
80
|
+
(self.class == other.class) && (self.attributes.eql? other.attributes)
|
81
|
+
end
|
82
|
+
alias eql? ==
|
83
|
+
|
71
84
|
def self.entify(a)
|
72
85
|
if ( a.count > 0 ) && ( a.first.is_a? Hash )
|
73
86
|
a.dup.map do |item|
|
data/lib/wrapi/request.rb
CHANGED
@@ -5,11 +5,12 @@ module WrAPI
|
|
5
5
|
# Defines HTTP request methods
|
6
6
|
# required attributes format
|
7
7
|
module Request
|
8
|
-
|
8
|
+
CONTENT_TYPE_HDR = 'Content-Type'.freeze
|
9
9
|
# Perform an HTTP GET request and return entity incase format is :json
|
10
10
|
# @return if format is :json and !raw an [Entity] is returned, otherwhise the response body
|
11
11
|
def get(path, options = {}, raw=false)
|
12
12
|
response = request(:get, path, options) do |request|
|
13
|
+
# inject headers...
|
13
14
|
yield(request) if block_given?
|
14
15
|
end
|
15
16
|
entity_response(response, raw)
|
@@ -25,18 +26,14 @@ module WrAPI
|
|
25
26
|
pager = create_pager
|
26
27
|
while pager.more_pages?
|
27
28
|
response = request(:get, path, options.merge(pager.page_options)) do |req|
|
29
|
+
# inject headers...
|
28
30
|
request_labda.call(req) if request_labda
|
29
31
|
end
|
30
|
-
|
31
|
-
d = Entity.create(d)
|
32
|
+
handle_data(response.body,pager) do |d|
|
32
33
|
if block_given?
|
33
34
|
yield(d)
|
34
35
|
else
|
35
|
-
|
36
|
-
result += d
|
37
|
-
else
|
38
|
-
result << d
|
39
|
-
end
|
36
|
+
result = add_data(result,d)
|
40
37
|
end
|
41
38
|
end
|
42
39
|
pager.next_page!(response.body)
|
@@ -75,7 +72,7 @@ module WrAPI
|
|
75
72
|
format && 'json'.eql?(format.to_s)
|
76
73
|
end
|
77
74
|
|
78
|
-
|
75
|
+
private
|
79
76
|
|
80
77
|
def create_pager
|
81
78
|
pagination_class ? pagination_class.new(page_size) : WrAPI::RequestPagination::DefaultPager
|
@@ -85,7 +82,7 @@ module WrAPI
|
|
85
82
|
def request(method, path, options)
|
86
83
|
response = connection.send(method) do |request|
|
87
84
|
yield(request) if block_given?
|
88
|
-
request.headers[
|
85
|
+
request.headers[CONTENT_TYPE_HDR] = "application/#{format}" unless request.headers[CONTENT_TYPE_HDR]
|
89
86
|
uri = URI::Parser.new
|
90
87
|
_path = uri.parse(path)
|
91
88
|
_path.path = uri.escape(_path.path)
|
@@ -94,11 +91,7 @@ module WrAPI
|
|
94
91
|
request.url(_path.to_s, options)
|
95
92
|
when :post, :put
|
96
93
|
request.path = _path.to_s
|
97
|
-
|
98
|
-
request.body = options.to_json
|
99
|
-
else
|
100
|
-
request.body = URI.encode_www_form(options) unless options.empty?
|
101
|
-
end
|
94
|
+
set_body(request,options)
|
102
95
|
end
|
103
96
|
end
|
104
97
|
response
|
@@ -111,5 +104,28 @@ module WrAPI
|
|
111
104
|
response
|
112
105
|
end
|
113
106
|
end
|
107
|
+
|
108
|
+
# set post body depending json content-type
|
109
|
+
def set_body(request,options)
|
110
|
+
if is_json? && !options.empty?
|
111
|
+
request.body = options.to_json
|
112
|
+
else
|
113
|
+
request.body = URI.encode_www_form(options) unless options.empty?
|
114
|
+
end
|
115
|
+
end
|
116
|
+
def handle_data(body,pager)
|
117
|
+
if d = pager.class.data(body)
|
118
|
+
d = Entity.create(d)
|
119
|
+
yield(d) if block_given?
|
120
|
+
end
|
121
|
+
end
|
122
|
+
# add data to array and check if data itself is an array
|
123
|
+
def add_data(result,data)
|
124
|
+
if data.is_a? Array
|
125
|
+
result += data
|
126
|
+
else
|
127
|
+
result << data
|
128
|
+
end
|
129
|
+
end
|
114
130
|
end
|
115
131
|
end
|
data/lib/wrapi/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wrapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Janco Tanis
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|