opinionated_http 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|