opinionated_http 0.1.0 → 0.1.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 +4 -4
- data/lib/opinionated_http/client.rb +28 -4
- data/lib/opinionated_http/request.rb +1 -1
- data/lib/opinionated_http/response.rb +1 -1
- data/lib/opinionated_http/version.rb +1 -1
- data/test/client_test.rb +10 -2
- 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: 70883413762ba2277b74061e20f9fd5faa73fccee8a762595a40793a93ed2689
|
4
|
+
data.tar.gz: 45bf3291006a3577a29f5fd603ad27c34b1d6948c54e67f71efb20862c0af613
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eec7f0a191186d29a970284e04dc571a2c8329587a414fa41576852e59d08503928594e14fc8e65f9ebea1570f90e15ad5e878a7b26259eae4adc605e7e9063f
|
7
|
+
data.tar.gz: ac1ce6b6f65d720cf7ddac4d93621c608f609ad1e113ead056e710e0cfe37df70792459940cdd3ca9effe0d8a123e60df11e89cf2a713ab7855c1148ea29e86d
|
@@ -39,9 +39,10 @@ module OpinionatedHTTP
|
|
39
39
|
force_retry: true,
|
40
40
|
max_redirects: 10,
|
41
41
|
after_connect: nil,
|
42
|
-
verify_peer: false,
|
42
|
+
verify_peer: false, # TODO: PersistentHTTP keeps returning cert expired even when it is valid.
|
43
43
|
certificate: nil,
|
44
|
-
private_key: nil
|
44
|
+
private_key: nil,
|
45
|
+
header: nil
|
45
46
|
)
|
46
47
|
@metric_prefix = metric_prefix
|
47
48
|
@logger = logger || SemanticLogger[self]
|
@@ -90,7 +91,8 @@ module OpinionatedHTTP
|
|
90
91
|
after_connect: @after_connect,
|
91
92
|
certificate: @certificate,
|
92
93
|
private_key: @private_key,
|
93
|
-
verify_mode: @verify_peer ? OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT : OpenSSL::SSL::VERIFY_NONE
|
94
|
+
verify_mode: @verify_peer ? OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT : OpenSSL::SSL::VERIFY_NONE,
|
95
|
+
header: header
|
94
96
|
)
|
95
97
|
end
|
96
98
|
|
@@ -101,13 +103,35 @@ module OpinionatedHTTP
|
|
101
103
|
Response.new(http_response, request)
|
102
104
|
end
|
103
105
|
|
104
|
-
def post(request: nil, **args)
|
106
|
+
def post(request: nil, json: nil, body: nil, **args)
|
107
|
+
raise(ArgumentError, "Either set :json or :body") if json && body
|
108
|
+
|
105
109
|
request ||= Request.new(**args)
|
110
|
+
if json
|
111
|
+
request.format = :json
|
112
|
+
request.body = json
|
113
|
+
else
|
114
|
+
request.body = body
|
115
|
+
end
|
106
116
|
request.verb = "Post"
|
107
117
|
http_response = request(request)
|
108
118
|
Response.new(http_response, request)
|
109
119
|
end
|
110
120
|
|
121
|
+
def delete(request: nil, **args)
|
122
|
+
request ||= Request.new(**args)
|
123
|
+
request.verb = "Delete"
|
124
|
+
http_response = request(request)
|
125
|
+
Response.new(http_response, request)
|
126
|
+
end
|
127
|
+
|
128
|
+
def patch(request: nil, **args)
|
129
|
+
request ||= Request.new(**args)
|
130
|
+
request.verb = "Patch"
|
131
|
+
http_response = request(request)
|
132
|
+
Response.new(http_response, request)
|
133
|
+
end
|
134
|
+
|
111
135
|
# Returns [Response] after submitting the [Request]
|
112
136
|
def request(request)
|
113
137
|
request.metric_prefix ||= metric_prefix
|
@@ -26,7 +26,7 @@ module OpinionatedHTTP
|
|
26
26
|
return body if success?
|
27
27
|
|
28
28
|
error_message = "HTTP #{verb.upcase}: #{action} Failure: (#{code}) #{message}"
|
29
|
-
logger.error(message: error_message, metric: "#{metric_prefix}/exception")
|
29
|
+
logger.error(message: error_message, metric: "#{metric_prefix}/exception", payload: {body: body})
|
30
30
|
raise(error_class, error_message)
|
31
31
|
end
|
32
32
|
|
data/test/client_test.rb
CHANGED
@@ -12,8 +12,7 @@ class ClientTest < Minitest::Test
|
|
12
12
|
secret_config_prefix: "fake_service",
|
13
13
|
metric_prefix: "FakeService",
|
14
14
|
logger: SemanticLogger["FakeService"],
|
15
|
-
error_class: ServiceError
|
16
|
-
header: {"Content-Type" => "application/json"}
|
15
|
+
error_class: ServiceError
|
17
16
|
)
|
18
17
|
end
|
19
18
|
|
@@ -58,6 +57,15 @@ class ClientTest < Minitest::Test
|
|
58
57
|
end
|
59
58
|
end
|
60
59
|
|
60
|
+
it "with JSON data" do
|
61
|
+
request = {zip: "12345", population: 54_321}
|
62
|
+
body = request.to_json
|
63
|
+
stub_request(Net::HTTPSuccess, 200, "OK", body) do
|
64
|
+
response = http.post(action: "lookup", json: request)
|
65
|
+
assert_equal request, response.body!.transform_keys!(&:to_sym)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
61
69
|
it "fails with body" do
|
62
70
|
message = "HTTP POST: lookup Failure: (403) Forbidden"
|
63
71
|
output = {zip: "12345", population: 54_321}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opinionated_http
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Reid Morrison
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03-
|
11
|
+
date: 2022-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: persistent_http
|