eac_rest 0.4.0 → 0.5.0
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/lib/eac_rest/api.rb +9 -1
- data/lib/eac_rest/response.rb +41 -1
- data/lib/eac_rest/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: ec5c659c04fb86d3d9764a999b685150bc2ccde5933584fcb36efe95ea98acaf
|
4
|
+
data.tar.gz: 60ccb2b06749fdf1a7543871c85b8b6a9e94aae9101284ed84a7d4393b39feb9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 532f9ee524f10fa97f41e94b674a3cc1fa01913fb86912e418c5e654fd3a9ab19cb8458aa9968cb7c660fc28360f331b477d13685bac884db2ca902c4c5dd865
|
7
|
+
data.tar.gz: 289128a0de9b339b1779cc74c1f4b306de7f5002e902c2776473fd2fd63abfe6b1853d3cd6f1a4b0cf8297abf19c8de5a3ec4a3277eed1ca71ab0108da80c042
|
data/lib/eac_rest/api.rb
CHANGED
@@ -28,12 +28,20 @@ module EacRest
|
|
28
28
|
|
29
29
|
# @return [Addressable::URI]
|
30
30
|
def build_service_url(suffix)
|
31
|
-
|
31
|
+
r = ::Addressable::URI.parse(suffix)
|
32
|
+
return r if r.scheme.present?
|
33
|
+
|
34
|
+
s = build_service_url_suffix(suffix)
|
32
35
|
r = ::Addressable::URI.parse(root_url)
|
33
36
|
r.path += s.path
|
34
37
|
r.query_values = r.query_values(::Array).if_present([]) +
|
35
38
|
s.query_values(::Array).if_present([])
|
36
39
|
r
|
37
40
|
end
|
41
|
+
|
42
|
+
# @return [Addressable::URI]
|
43
|
+
def build_service_url_suffix(suffix)
|
44
|
+
::Addressable::URI.parse(suffix)
|
45
|
+
end
|
38
46
|
end
|
39
47
|
end
|
data/lib/eac_rest/response.rb
CHANGED
@@ -6,6 +6,18 @@ require 'json'
|
|
6
6
|
|
7
7
|
module EacRest
|
8
8
|
class Response < ::StandardError
|
9
|
+
HEADER_LINE_PARSER = /\A([^:]+):(.*)\z/.to_parser do |m|
|
10
|
+
[m[1].strip, m[2].strip]
|
11
|
+
end
|
12
|
+
|
13
|
+
# https://www.w3.org/wiki/LinkHeader
|
14
|
+
LINKS_HEADER_NAME = 'Link'
|
15
|
+
|
16
|
+
# https://www.w3.org/wiki/LinkHeader
|
17
|
+
LINK_PARSER = /\A\<(.+)\>\s*;\s*rel\s*=\s*\"(.*)\"\z/.to_parser do |m|
|
18
|
+
[m[2], m[1]]
|
19
|
+
end
|
20
|
+
|
9
21
|
common_constructor :curl, :body_data_proc
|
10
22
|
|
11
23
|
def body_data
|
@@ -23,7 +35,7 @@ module EacRest
|
|
23
35
|
body_data
|
24
36
|
end
|
25
37
|
|
26
|
-
delegate :body_str,
|
38
|
+
delegate :body_str, to: :performed_curl
|
27
39
|
|
28
40
|
def body_str_or_raise
|
29
41
|
raise_unless_200
|
@@ -31,6 +43,26 @@ module EacRest
|
|
31
43
|
body_str
|
32
44
|
end
|
33
45
|
|
46
|
+
def header(name)
|
47
|
+
hash_search(headers, name)
|
48
|
+
end
|
49
|
+
|
50
|
+
def headers
|
51
|
+
performed_curl.header_str.each_line.map(&:strip)[1..-1].reject(&:blank?)
|
52
|
+
.map { |header_line| HEADER_LINE_PARSER.parse!(header_line) }
|
53
|
+
.to_h
|
54
|
+
end
|
55
|
+
|
56
|
+
def link(rel)
|
57
|
+
hash_search(links, rel)
|
58
|
+
end
|
59
|
+
|
60
|
+
def links
|
61
|
+
header(LINKS_HEADER_NAME).if_present({}) do |v|
|
62
|
+
v.split(',').map { |w| LINK_PARSER.parse!(w.strip) }.to_h
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
34
66
|
def raise_unless_200
|
35
67
|
return nil if status == 200
|
36
68
|
|
@@ -57,6 +89,14 @@ module EacRest
|
|
57
89
|
Hash.from_xml(body_str)
|
58
90
|
end
|
59
91
|
|
92
|
+
def hash_search(hash, key)
|
93
|
+
key = key.to_s.downcase
|
94
|
+
hash.each do |k, v|
|
95
|
+
return v if k.to_s.downcase == key
|
96
|
+
end
|
97
|
+
nil
|
98
|
+
end
|
99
|
+
|
60
100
|
def perform
|
61
101
|
@perform ||= begin
|
62
102
|
curl.perform || raise("CURL perform failed for #{url}")
|
data/lib/eac_rest/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eac_rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eduardo H. Bogoni
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eac_ruby_utils
|