grac 3.1.0 → 4.0.1
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 +5 -5
- data/lib/grac/client.rb +41 -8
- data/lib/grac/response.rb +3 -4
- data/lib/grac/version.rb +1 -1
- metadata +53 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e07dfd433cf6ddc13c769efafc1f17601b543d261293f36fadc0729fa4179d8a
|
4
|
+
data.tar.gz: 7d809236ea5e09c13da7beb1fa86c8d1469b27066c4485b3a6253259d11338fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: faa8e139d25822e970ca9ed824608cc1199fea454c19d28094d9f92da1a36963fa51d6719b3020a5ce08b57255b91967cc310e5635ae84ad47db2a89ba7e6dfa
|
7
|
+
data.tar.gz: 74437d90aee461c093d1fcf19cc24116292b9d2b9192b59b5767cfca62ba8894ec7bd46189e570f89a40ffbf90f0b9b8e29c25f851f32e0dae927bc02d0e8466
|
data/lib/grac/client.rb
CHANGED
@@ -22,13 +22,29 @@ module Grac
|
|
22
22
|
"User-Agent" => "Grac v#{Grac::VERSION}",
|
23
23
|
"Content-Type" => "application/json;charset=utf-8"
|
24
24
|
}.merge(options[:headers] || {}),
|
25
|
-
:postprocessing =>
|
25
|
+
:postprocessing => {},
|
26
26
|
:middleware => options[:middleware] || []
|
27
27
|
}
|
28
|
+
|
29
|
+
if options[:postprocessing]
|
30
|
+
options[:postprocessing]
|
31
|
+
.each_with_object(postprocessing = {}) do |(pattern, transformation), obj|
|
32
|
+
if pattern.kind_of?(Regexp)
|
33
|
+
obj[pattern] = transformation
|
34
|
+
else
|
35
|
+
obj[Regexp.new(pattern)] = transformation
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
@options[:postprocessing] = postprocessing
|
40
|
+
end
|
41
|
+
|
28
42
|
@options.freeze
|
43
|
+
|
29
44
|
[:params, :headers, :postprocessing, :middleware].each do |k|
|
30
45
|
@options[k].freeze
|
31
46
|
end
|
47
|
+
|
32
48
|
@uri.freeze
|
33
49
|
end
|
34
50
|
|
@@ -104,11 +120,31 @@ module Grac
|
|
104
120
|
private
|
105
121
|
|
106
122
|
def build_and_run(method, options = {})
|
107
|
-
body = options[:body]
|
123
|
+
body = prepare_body_by_content_type(options[:body])
|
108
124
|
params = @options[:params].merge(options[:params] || {})
|
109
125
|
return middleware_chain.call(@options, uri, method, params, body)
|
110
126
|
end
|
111
127
|
|
128
|
+
def headers
|
129
|
+
@options[:headers] || {}
|
130
|
+
end
|
131
|
+
|
132
|
+
def prepare_body_by_content_type(body)
|
133
|
+
return nil if body.nil? || body.empty?
|
134
|
+
|
135
|
+
case headers['Content-Type']
|
136
|
+
when /\Aapplication\/json/
|
137
|
+
return body.to_json
|
138
|
+
when /\Aapplication\/x-www-form-urlencoded/
|
139
|
+
# Typhoeus will take care of the encoding when receiving a hash
|
140
|
+
return body
|
141
|
+
else
|
142
|
+
# Do not encode other unknown Content-Types either.
|
143
|
+
# The default is JSON through the Content-Type header which is set by default.
|
144
|
+
return body
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
112
148
|
def middleware_chain
|
113
149
|
callee = self
|
114
150
|
|
@@ -174,14 +210,11 @@ module Grac
|
|
174
210
|
if data.kind_of?(Hash)
|
175
211
|
data.each do |key, value|
|
176
212
|
processing = nil
|
177
|
-
@options[:postprocessing].
|
178
|
-
pattern = Regexp.new(regex).freeze
|
213
|
+
regexp = @options[:postprocessing].keys.detect { |pattern| pattern.match?(key) }
|
179
214
|
|
180
|
-
|
181
|
-
|
182
|
-
end
|
215
|
+
if !regexp.nil?
|
216
|
+
processing = @options[:postprocessing][regexp]
|
183
217
|
end
|
184
|
-
|
185
218
|
data[key] = postprocessing(value, processing)
|
186
219
|
end
|
187
220
|
elsif data.kind_of?(Array)
|
data/lib/grac/response.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
|
-
require '
|
1
|
+
require 'oj'
|
2
2
|
require 'forwardable'
|
3
|
-
|
4
3
|
require_relative './exception'
|
5
4
|
|
6
5
|
module Grac
|
@@ -26,8 +25,8 @@ module Grac
|
|
26
25
|
end
|
27
26
|
|
28
27
|
def parsed_json
|
29
|
-
|
30
|
-
rescue
|
28
|
+
Oj.load(body)
|
29
|
+
rescue Oj::ParseError, EncodingError
|
31
30
|
raise Exception::InvalidContent.new(body, 'json')
|
32
31
|
end
|
33
32
|
|
data/lib/grac/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grac
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Schoknecht
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '13.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '13.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '3.
|
33
|
+
version: '3.8'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '3.
|
40
|
+
version: '3.8'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: builder
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,20 +52,62 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.2'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: benchmark-ips
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.7'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.7'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rack
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.2.3
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 2.2.3
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: rack-test
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
58
86
|
requirements:
|
59
87
|
- - "~>"
|
60
88
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
89
|
+
version: 0.6.3
|
62
90
|
type: :development
|
63
91
|
prerelease: false
|
64
92
|
version_requirements: !ruby/object:Gem::Requirement
|
65
93
|
requirements:
|
66
94
|
- - "~>"
|
67
95
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
96
|
+
version: 0.6.3
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: oj
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 3.6.13
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 3.6.13
|
69
111
|
- !ruby/object:Gem::Dependency
|
70
112
|
name: typhoeus
|
71
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,17 +144,16 @@ require_paths:
|
|
102
144
|
- lib
|
103
145
|
required_ruby_version: !ruby/object:Gem::Requirement
|
104
146
|
requirements:
|
105
|
-
- - "
|
147
|
+
- - "~>"
|
106
148
|
- !ruby/object:Gem::Version
|
107
|
-
version: '
|
149
|
+
version: '2.4'
|
108
150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
151
|
requirements:
|
110
152
|
- - ">="
|
111
153
|
- !ruby/object:Gem::Version
|
112
154
|
version: '0'
|
113
155
|
requirements: []
|
114
|
-
|
115
|
-
rubygems_version: 2.4.8
|
156
|
+
rubygems_version: 3.0.6
|
116
157
|
signing_key:
|
117
158
|
specification_version: 4
|
118
159
|
summary: Very generic client for REST API with basic error handling
|