aitch 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -0
- data/CHANGELOG.md +2 -0
- data/lib/aitch/location.rb +3 -1
- data/lib/aitch/request.rb +17 -8
- data/lib/aitch/response.rb +16 -7
- data/lib/aitch/utils.rb +4 -1
- data/lib/aitch/version.rb +1 -1
- data/test/aitch/aitch_test.rb +20 -20
- data/test/aitch/configuration_test.rb +2 -1
- data/test/aitch/dsl_test.rb +6 -0
- data/test/aitch/execute_test.rb +1 -1
- data/test/aitch/request/client_https_test.rb +2 -1
- data/test/aitch/request/follow_redirect_test.rb +1 -1
- data/test/aitch/request/request_class_test.rb +1 -0
- data/test/aitch/request_test.rb +17 -0
- data/test/aitch/response/html_response_test.rb +1 -1
- data/test/aitch/response/json_response_test.rb +1 -1
- data/test/aitch/response/status_3xx_test.rb +6 -4
- data/test/aitch/response/status_4xx_test.rb +1 -1
- data/test/aitch/response/status_5xx_test.rb +1 -1
- data/test/aitch/response/xml_response_test.rb +1 -1
- data/test/aitch/response_test.rb +7 -2
- data/test/aitch/uri_test.rb +1 -0
- data/test/aitch/utils/symbolize_keys_test.rb +1 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c49091163504e6a6587170951f8e4545b4474b1912c85c5bcfeb102763a214b7
|
4
|
+
data.tar.gz: 7fac91b61ee9ad82e8f880f25758b9f6a433ad8ed3bcc5134b261e64f5da61fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 859bdbfb5f70d99646c628f16a2cea718385299ca1b48d32e0ecfb8c9598ad27b8cf3363498b50eaddf8585901212faa1f588dc9dc29ad1982891f2a3c26b1fa
|
7
|
+
data.tar.gz: a7045d8d2a6c9d172b2b90180cd4d2afb13a5ceac088b74b9cb7ccc63fa9050920df69310e0eef1ae745b44d0edd4c45f6779c9a6fe420c3951878be4ff3fbf1
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/lib/aitch/location.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
module Aitch
|
4
4
|
class Location
|
5
|
+
MATCHER = %r{\A/}.freeze
|
6
|
+
|
5
7
|
attr_reader :redirect_stack, :current_url
|
6
8
|
|
7
9
|
def initialize(redirect_stack, current_url)
|
@@ -10,7 +12,7 @@ module Aitch
|
|
10
12
|
end
|
11
13
|
|
12
14
|
def location
|
13
|
-
return current_url unless current_url.match?(
|
15
|
+
return current_url unless current_url.match?(MATCHER)
|
14
16
|
|
15
17
|
uri = find_uri_with_host
|
16
18
|
url = ["#{uri.scheme}://#{uri.hostname}"]
|
data/lib/aitch/request.rb
CHANGED
@@ -4,6 +4,14 @@ module Aitch
|
|
4
4
|
class Request
|
5
5
|
attr_accessor :request_method, :url, :data, :headers, :options, :redirects
|
6
6
|
|
7
|
+
CONTENT_TYPE = "Content-Type"
|
8
|
+
USER_AGENT = "User-Agent"
|
9
|
+
ACCEPT_ENCODING = "Accept-Encoding"
|
10
|
+
GZIP_DEFLATE = "gzip,deflate"
|
11
|
+
HTTPS = "https"
|
12
|
+
HEADER_SEPARATOR_RE = /[-_]/.freeze
|
13
|
+
JSON_RE = /\bjson\b/.freeze
|
14
|
+
|
7
15
|
alias params= data=
|
8
16
|
alias body= data=
|
9
17
|
|
@@ -30,12 +38,12 @@ module Aitch
|
|
30
38
|
end
|
31
39
|
|
32
40
|
def content_type=(content_type)
|
33
|
-
headers[
|
41
|
+
headers[CONTENT_TYPE] = content_type
|
34
42
|
end
|
35
43
|
|
36
44
|
def content_type
|
37
|
-
headers[
|
38
|
-
options.fetch(:default_headers, {})[
|
45
|
+
headers[CONTENT_TYPE] ||
|
46
|
+
options.fetch(:default_headers, {})[CONTENT_TYPE]
|
39
47
|
end
|
40
48
|
|
41
49
|
def request
|
@@ -79,7 +87,7 @@ module Aitch
|
|
79
87
|
body_data = data
|
80
88
|
body_data = data.to_h if data.respond_to?(:to_h) && !data.is_a?(Array)
|
81
89
|
|
82
|
-
if content_type.to_s.match?(
|
90
|
+
if content_type.to_s.match?(JSON_RE)
|
83
91
|
body_data = ResponseParser::JSONParser.engine.dump(body_data)
|
84
92
|
end
|
85
93
|
|
@@ -95,7 +103,8 @@ module Aitch
|
|
95
103
|
|
96
104
|
all_headers.each do |name, value|
|
97
105
|
value = value.respond_to?(:call) ? value.call : value
|
98
|
-
|
106
|
+
name = name.to_s.split(HEADER_SEPARATOR_RE).map(&:capitalize).join("-")
|
107
|
+
request[name] = value.to_s
|
99
108
|
end
|
100
109
|
end
|
101
110
|
|
@@ -106,7 +115,7 @@ module Aitch
|
|
106
115
|
end
|
107
116
|
|
108
117
|
private def set_https(client)
|
109
|
-
client.use_ssl = uri.scheme ==
|
118
|
+
client.use_ssl = uri.scheme == HTTPS
|
110
119
|
client.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
111
120
|
end
|
112
121
|
|
@@ -120,11 +129,11 @@ module Aitch
|
|
120
129
|
end
|
121
130
|
|
122
131
|
private def set_user_agent(request)
|
123
|
-
request[
|
132
|
+
request[USER_AGENT] = options[:user_agent]
|
124
133
|
end
|
125
134
|
|
126
135
|
private def set_gzip(request)
|
127
|
-
request[
|
136
|
+
request[ACCEPT_ENCODING] = GZIP_DEFLATE
|
128
137
|
end
|
129
138
|
|
130
139
|
def timeout_exception
|
data/lib/aitch/response.rb
CHANGED
@@ -4,11 +4,20 @@ module Aitch
|
|
4
4
|
class Response
|
5
5
|
extend Forwardable
|
6
6
|
|
7
|
+
JSON_STR = "json"
|
8
|
+
XML_STR = "xml"
|
9
|
+
HTML_STR = "html"
|
10
|
+
EMPTY_STR = ""
|
11
|
+
DOUBLE_COLON = "::"
|
12
|
+
SPACE_STR = " "
|
13
|
+
ERROR_SUFFIX = "_error"
|
14
|
+
X_RE = /^x-/.freeze
|
15
|
+
|
7
16
|
def_delegators :@http_response, :content_type
|
8
17
|
attr_accessor :redirected_from, :url
|
9
18
|
|
10
19
|
def self.description_for_code(code)
|
11
|
-
[code, DESCRIPTION[code]].compact.join(
|
20
|
+
[code, DESCRIPTION[code]].compact.join(SPACE_STR)
|
12
21
|
end
|
13
22
|
|
14
23
|
def initialize(options, http_response)
|
@@ -19,8 +28,8 @@ module Aitch
|
|
19
28
|
|
20
29
|
ERRORS.each do |status_code, exception|
|
21
30
|
method_name = Utils
|
22
|
-
.underscore(exception.name.split(
|
23
|
-
.gsub(
|
31
|
+
.underscore(exception.name.split(DOUBLE_COLON).last)
|
32
|
+
.gsub(ERROR_SUFFIX, EMPTY_STR)
|
24
33
|
|
25
34
|
define_method "#{method_name}?" do
|
26
35
|
code == status_code
|
@@ -53,15 +62,15 @@ module Aitch
|
|
53
62
|
end
|
54
63
|
|
55
64
|
def json?
|
56
|
-
content_type.include?(
|
65
|
+
content_type.include?(JSON_STR)
|
57
66
|
end
|
58
67
|
|
59
68
|
def xml?
|
60
|
-
content_type.include?(
|
69
|
+
content_type.include?(XML_STR)
|
61
70
|
end
|
62
71
|
|
63
72
|
def html?
|
64
|
-
content_type.include?(
|
73
|
+
content_type.include?(HTML_STR)
|
65
74
|
end
|
66
75
|
|
67
76
|
def data
|
@@ -71,7 +80,7 @@ module Aitch
|
|
71
80
|
def headers
|
72
81
|
@headers ||= {}.tap do |headers|
|
73
82
|
@http_response.each_header do |name, value|
|
74
|
-
headers[name.gsub(
|
83
|
+
headers[name.gsub(X_RE, EMPTY_STR)] = value
|
75
84
|
end
|
76
85
|
end
|
77
86
|
end
|
data/lib/aitch/utils.rb
CHANGED
data/lib/aitch/version.rb
CHANGED
data/test/aitch/aitch_test.rb
CHANGED
@@ -4,25 +4,25 @@ require "test_helper"
|
|
4
4
|
|
5
5
|
class AitchTest < Minitest::Test
|
6
6
|
test "defines public API" do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
7
|
+
assert_respond_to Aitch, :get
|
8
|
+
assert_respond_to Aitch, :get!
|
9
|
+
assert_respond_to Aitch, :post
|
10
|
+
assert_respond_to Aitch, :post!
|
11
|
+
assert_respond_to Aitch, :put
|
12
|
+
assert_respond_to Aitch, :put!
|
13
|
+
assert_respond_to Aitch, :patch
|
14
|
+
assert_respond_to Aitch, :patch!
|
15
|
+
assert_respond_to Aitch, :delete
|
16
|
+
assert_respond_to Aitch, :delete!
|
17
|
+
assert_respond_to Aitch, :head
|
18
|
+
assert_respond_to Aitch, :head!
|
19
|
+
assert_respond_to Aitch, :options
|
20
|
+
assert_respond_to Aitch, :options!
|
21
|
+
assert_respond_to Aitch, :trace
|
22
|
+
assert_respond_to Aitch, :trace!
|
23
|
+
assert_respond_to Aitch, :execute
|
24
|
+
assert_respond_to Aitch, :execute!
|
25
|
+
assert_respond_to Aitch, :config
|
26
|
+
assert_respond_to Aitch, :configuration
|
27
27
|
end
|
28
28
|
end
|
@@ -9,6 +9,7 @@ class ConfigurationTest < Minitest::Test
|
|
9
9
|
|
10
10
|
test "sets default user agent" do
|
11
11
|
user_agent = "Aitch/#{Aitch::VERSION} (http://rubygems.org/gems/aitch)"
|
12
|
+
|
12
13
|
assert_equal user_agent, Aitch::Configuration.new.user_agent
|
13
14
|
end
|
14
15
|
|
@@ -17,7 +18,7 @@ class ConfigurationTest < Minitest::Test
|
|
17
18
|
end
|
18
19
|
|
19
20
|
test "sets default headers" do
|
20
|
-
|
21
|
+
assert_empty(Aitch::Configuration.new.default_headers)
|
21
22
|
end
|
22
23
|
|
23
24
|
test "configures aitch" do
|
data/test/aitch/dsl_test.rb
CHANGED
@@ -7,31 +7,37 @@ class DslTest < Minitest::Test
|
|
7
7
|
|
8
8
|
test "sets url" do
|
9
9
|
dsl.url "URL"
|
10
|
+
|
10
11
|
assert_equal "URL", dsl.url
|
11
12
|
end
|
12
13
|
|
13
14
|
test "sets options" do
|
14
15
|
dsl.options "OPTIONS"
|
16
|
+
|
15
17
|
assert_equal "OPTIONS", dsl.options
|
16
18
|
end
|
17
19
|
|
18
20
|
test "sets headers" do
|
19
21
|
dsl.headers "HEADERS"
|
22
|
+
|
20
23
|
assert_equal "HEADERS", dsl.headers
|
21
24
|
end
|
22
25
|
|
23
26
|
test "sets data" do
|
24
27
|
dsl.data "DATA"
|
28
|
+
|
25
29
|
assert_equal "DATA", dsl.data
|
26
30
|
end
|
27
31
|
|
28
32
|
test "sets data through params" do
|
29
33
|
dsl.params "PARAMS"
|
34
|
+
|
30
35
|
assert_equal "PARAMS", dsl.data
|
31
36
|
end
|
32
37
|
|
33
38
|
test "sets data through body" do
|
34
39
|
dsl.body "BODY"
|
40
|
+
|
35
41
|
assert_equal "BODY", dsl.data
|
36
42
|
end
|
37
43
|
|
data/test/aitch/execute_test.rb
CHANGED
@@ -41,6 +41,6 @@ class ExecuteBangTest < Minitest::Test
|
|
41
41
|
response = stub(error?: true, error: "ERROR")
|
42
42
|
Aitch::Request.any_instance.stubs(:perform).returns(response)
|
43
43
|
|
44
|
-
assert_raises("ERROR") { Aitch.get!("URL") }
|
44
|
+
assert_raises(StandardError, "ERROR") { Aitch.get!("URL") }
|
45
45
|
end
|
46
46
|
end
|
@@ -7,7 +7,7 @@ class ClientHttpsTest < Minitest::Test
|
|
7
7
|
let(:client) { request.client }
|
8
8
|
|
9
9
|
test "sets https" do
|
10
|
-
|
10
|
+
assert_predicate client, :use_ssl?
|
11
11
|
end
|
12
12
|
|
13
13
|
test "sets verification mode" do
|
@@ -16,6 +16,7 @@ class ClientHttpsTest < Minitest::Test
|
|
16
16
|
|
17
17
|
test "sets timeout" do
|
18
18
|
request.options[:timeout] = 20
|
19
|
+
|
19
20
|
assert_equal 20, client.read_timeout
|
20
21
|
end
|
21
22
|
end
|
@@ -14,7 +14,7 @@ class FollowRedirectTest < Minitest::Test
|
|
14
14
|
|
15
15
|
response = Aitch.get("http://example.org/")
|
16
16
|
|
17
|
-
|
17
|
+
refute_predicate response, :redirect?
|
18
18
|
assert_equal "Hello", response.body
|
19
19
|
assert_equal ["http://example.org/", "http://example.com/"], response.redirected_from
|
20
20
|
assert_equal "http://www.example.com/", response.url
|
data/test/aitch/request_test.rb
CHANGED
@@ -5,6 +5,7 @@ require "test_helper"
|
|
5
5
|
class RequestTest < Minitest::Test
|
6
6
|
test "sets content type" do
|
7
7
|
request = build_request(content_type: "application/json")
|
8
|
+
|
8
9
|
assert_equal "application/json", request.content_type
|
9
10
|
end
|
10
11
|
|
@@ -35,26 +36,31 @@ class RequestTest < Minitest::Test
|
|
35
36
|
|
36
37
|
test "requests gzip encoding" do
|
37
38
|
request = build_request.request
|
39
|
+
|
38
40
|
assert_equal "gzip,deflate", request["Accept-Encoding"]
|
39
41
|
end
|
40
42
|
|
41
43
|
test "sets path" do
|
42
44
|
request = build_request(url: "http://example.org/some/path").request
|
45
|
+
|
43
46
|
assert_equal "/some/path", request.path
|
44
47
|
end
|
45
48
|
|
46
49
|
test "sets request body from hash" do
|
47
50
|
request = build_request(request_method: "post", data: {a: 1}).request
|
51
|
+
|
48
52
|
assert_equal "a=1", request.body
|
49
53
|
end
|
50
54
|
|
51
55
|
test "sets request body from string" do
|
52
56
|
request = build_request(request_method: "post", data: "some body").request
|
57
|
+
|
53
58
|
assert_equal "some body", request.body
|
54
59
|
end
|
55
60
|
|
56
61
|
test "sets request body from params key" do
|
57
62
|
request = build_request(request_method: "post", params: "some body").request
|
63
|
+
|
58
64
|
assert_equal "some body", request.body
|
59
65
|
end
|
60
66
|
|
@@ -67,6 +73,7 @@ class RequestTest < Minitest::Test
|
|
67
73
|
).request
|
68
74
|
|
69
75
|
expected = {a: 1}.to_json
|
76
|
+
|
70
77
|
assert_equal expected, request.body
|
71
78
|
end
|
72
79
|
|
@@ -78,12 +85,14 @@ class RequestTest < Minitest::Test
|
|
78
85
|
).request
|
79
86
|
|
80
87
|
expected = {a: 1}.to_json
|
88
|
+
|
81
89
|
assert_equal expected, request.body
|
82
90
|
end
|
83
91
|
|
84
92
|
test "sets request body from to_h protocol" do
|
85
93
|
data = stub(to_h: {a: 1})
|
86
94
|
request = build_request(request_method: "post", data: data).request
|
95
|
+
|
87
96
|
assert_equal "a=1", request.body
|
88
97
|
end
|
89
98
|
|
@@ -123,11 +132,19 @@ class RequestTest < Minitest::Test
|
|
123
132
|
|
124
133
|
test "sets custom headers" do
|
125
134
|
request = build_request(headers: {"HEADER" => "VALUE"}).request
|
135
|
+
|
126
136
|
assert_equal "VALUE", request["HEADER"]
|
127
137
|
end
|
128
138
|
|
139
|
+
test "sets headers from underscored headers" do
|
140
|
+
request = build_request(headers: {content_type: "text/plain"}).request
|
141
|
+
|
142
|
+
assert_equal "text/plain", request["Content-Type"]
|
143
|
+
end
|
144
|
+
|
129
145
|
test "executes headers with callable protocol" do
|
130
146
|
request = build_request(headers: {"HEADER" => -> { "VALUE" }}).request
|
147
|
+
|
131
148
|
assert_equal "VALUE", request["HEADER"]
|
132
149
|
end
|
133
150
|
|
@@ -7,7 +7,7 @@ class HtmlResponseTest < Minitest::Test
|
|
7
7
|
register_uri(:get, "http://example.org/", body: "", content_type: "text/html")
|
8
8
|
response = Aitch.get("http://example.org/")
|
9
9
|
|
10
|
-
|
10
|
+
assert_predicate response, :html?
|
11
11
|
end
|
12
12
|
|
13
13
|
test "returns html" do
|
@@ -7,7 +7,7 @@ class JsonResponseTest < Minitest::Test
|
|
7
7
|
register_uri(:get, "http://example.org/", body: "[]", content_type: "application/json")
|
8
8
|
response = Aitch.get("http://example.org/")
|
9
9
|
|
10
|
-
|
10
|
+
assert_predicate response, :json?
|
11
11
|
end
|
12
12
|
|
13
13
|
test "returns json" do
|
@@ -6,7 +6,7 @@ class Status3xxTest < Minitest::Test
|
|
6
6
|
setup { Aitch.configuration.follow_redirect = false }
|
7
7
|
|
8
8
|
test "sets default redirected from" do
|
9
|
-
|
9
|
+
assert_empty Aitch::Response.new({}, stub("response")).redirected_from
|
10
10
|
end
|
11
11
|
|
12
12
|
test "uses provided redirected from" do
|
@@ -16,6 +16,7 @@ class Status3xxTest < Minitest::Test
|
|
16
16
|
test "has body" do
|
17
17
|
register_uri(:get, "http://example.org/", body: "Hello", status: 301)
|
18
18
|
response = Aitch.get("http://example.org/")
|
19
|
+
|
19
20
|
assert_equal "Hello", response.body
|
20
21
|
end
|
21
22
|
|
@@ -23,20 +24,21 @@ class Status3xxTest < Minitest::Test
|
|
23
24
|
register_uri(:get, "http://example.org/", status: 301)
|
24
25
|
response = Aitch.get("http://example.org/")
|
25
26
|
|
26
|
-
|
27
|
-
|
27
|
+
assert_predicate response, :success?
|
28
|
+
assert_predicate response, :ok?
|
28
29
|
end
|
29
30
|
|
30
31
|
test "detects as redirect" do
|
31
32
|
register_uri(:get, "http://example.org/", status: 301)
|
32
33
|
response = Aitch.get("http://example.org/")
|
33
34
|
|
34
|
-
|
35
|
+
assert_predicate response, :redirect?
|
35
36
|
end
|
36
37
|
|
37
38
|
test "returns location" do
|
38
39
|
register_uri(:get, "http://example.org/", status: 301, location: "https://example.com/")
|
39
40
|
response = Aitch.get("http://example.org/")
|
41
|
+
|
40
42
|
assert_equal "https://example.com/", response.location
|
41
43
|
end
|
42
44
|
|
@@ -7,7 +7,7 @@ class XmlResponseTest < Minitest::Test
|
|
7
7
|
register_uri(:get, "http://example.org/", body: "[]", content_type: "application/xml")
|
8
8
|
response = Aitch.get("http://example.org/")
|
9
9
|
|
10
|
-
|
10
|
+
assert_predicate response, :xml?
|
11
11
|
end
|
12
12
|
|
13
13
|
test "returns xml" do
|
data/test/aitch/response_test.rb
CHANGED
@@ -6,12 +6,14 @@ class ResponseTest < Minitest::Test
|
|
6
6
|
test "has body" do
|
7
7
|
register_uri(:get, "http://example.org/", body: "Hello")
|
8
8
|
response = Aitch.get("http://example.org/")
|
9
|
+
|
9
10
|
assert_equal "Hello", response.body
|
10
11
|
end
|
11
12
|
|
12
13
|
test "sets current url" do
|
13
14
|
register_uri(:get, "http://example.org/", body: "Hello")
|
14
15
|
response = Aitch.get("http://example.org/")
|
16
|
+
|
15
17
|
assert_equal "http://example.org/", response.url
|
16
18
|
end
|
17
19
|
|
@@ -39,19 +41,22 @@ class ResponseTest < Minitest::Test
|
|
39
41
|
test "returns status code" do
|
40
42
|
register_uri(:get, "http://example.org/", body: "")
|
41
43
|
response = Aitch.get("http://example.org/")
|
44
|
+
|
42
45
|
assert_equal 200, response.code
|
43
46
|
end
|
44
47
|
|
45
48
|
test "returns content type" do
|
46
49
|
register_uri(:get, "http://example.org/", content_type: "text/html")
|
47
50
|
response = Aitch.get("http://example.org/")
|
51
|
+
|
48
52
|
assert_equal "text/html", response.content_type
|
49
53
|
end
|
50
54
|
|
51
55
|
test "detects as successful response" do
|
52
56
|
register_uri(:get, "http://example.org/", content_type: "text/html")
|
53
57
|
response = Aitch.get("http://example.org/")
|
54
|
-
|
58
|
+
|
59
|
+
assert_predicate response, :success?
|
55
60
|
end
|
56
61
|
|
57
62
|
test "returns headers" do
|
@@ -74,7 +79,7 @@ class ResponseTest < Minitest::Test
|
|
74
79
|
response = Aitch.get("http://example.org/")
|
75
80
|
|
76
81
|
assert_equal "0.003", response.runtime
|
77
|
-
|
82
|
+
assert_respond_to response, :runtime
|
78
83
|
end
|
79
84
|
|
80
85
|
test "raises when have no method" do
|
data/test/aitch/uri_test.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aitch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nando Vieira
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -255,7 +255,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
255
255
|
- !ruby/object:Gem::Version
|
256
256
|
version: '0'
|
257
257
|
requirements: []
|
258
|
-
rubygems_version: 3.3
|
258
|
+
rubygems_version: 3.4.3
|
259
259
|
signing_key:
|
260
260
|
specification_version: 4
|
261
261
|
summary: A simple HTTP client
|