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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e0b33ff41de4de2487017dcb16c8af1bd049d8f59b99af148c2782f5aadbf90f
4
- data.tar.gz: fbb4ddce12a6aabb67827d124fd579e91d4a2b4def78d74c893dc82687519c96
3
+ metadata.gz: 70883413762ba2277b74061e20f9fd5faa73fccee8a762595a40793a93ed2689
4
+ data.tar.gz: 45bf3291006a3577a29f5fd603ad27c34b1d6948c54e67f71efb20862c0af613
5
5
  SHA512:
6
- metadata.gz: a3b31d0083666203057f05a38bdc0e7a5519af9757df935c9c772ca514bb7f8777c9b52a24edb960b201e5816bca356508d9470bfcd42fdcf83ee3bd622ec51b
7
- data.tar.gz: b6b9ba368403e795fc19b81a759e30cd03de38fd436c52222db7f7e73f79d4ad38fb1054c7ad6a23a2cddf5c6f55654127e334c76b0f5fd5f0ab3deab606163d
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, # TODO: PersistentHTTP keeps returning cert expired even when it is valid.
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
@@ -56,7 +56,7 @@ module OpinionatedHTTP
56
56
  case format
57
57
  when :json
58
58
  headers["Content-Type"] = "application/json"
59
- body.to_json #unless body.is_a?(String) || body.nil?
59
+ body.to_json unless body.is_a?(String) || body.nil?
60
60
  when nil
61
61
  body
62
62
  else
@@ -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
 
@@ -1,3 +1,3 @@
1
1
  module OpinionatedHTTP
2
- VERSION = "0.1.0".freeze
2
+ VERSION = "0.1.1".freeze
3
3
  end
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.0
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 00:00:00.000000000 Z
11
+ date: 2022-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: persistent_http