http-client-generator 0.1.17 → 0.1.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/http_client_generator/plugs/encode_json_response.rb +0 -1
- data/lib/http_client_generator/plugs/set_header.rb +11 -2
- data/lib/http_client_generator/plugs/validate_response.rb +39 -0
- data/lib/http_client_generator/request.rb +8 -2
- data/lib/http_client_generator/resource.rb +1 -1
- data/lib/http_client_generator/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 796fa455e62adaafc95d3c213d52f5c0647efcbc96597c1cb52b4d4116eb7bf7
|
4
|
+
data.tar.gz: 2a6763039f05c5b6720ab163420f133f432355c5bf5604cd213ffd40cd63435d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7888c6ae59d9721a417c37394daf294382aad6d37f72d7cd2f8322e1322fb12c3d600db4b206625735bce0273e1e92e804a5617973e1c625f3870186a4a98fa3
|
7
|
+
data.tar.gz: c3c5f66284c72cb9bd524fd229c5681d3889c24027591220f74c9bf4a23548510d1ef948156295d9d4040490c8c6c528529219a575cc091b53cb9b5b9793a176
|
@@ -5,13 +5,22 @@ module HttpClientGenerator
|
|
5
5
|
class SetHeader
|
6
6
|
Plugs.register :set_header, self
|
7
7
|
|
8
|
-
def initialize(arg:, header:)
|
8
|
+
def initialize(arg:, header:, func: nil)
|
9
9
|
@arg = arg
|
10
10
|
@header = header
|
11
|
+
@func = func
|
11
12
|
end
|
12
13
|
|
13
14
|
def call(req)
|
14
|
-
|
15
|
+
arg = req.rest_args[@arg]
|
16
|
+
|
17
|
+
req.headers[@header] =
|
18
|
+
if @func
|
19
|
+
@func.(arg)
|
20
|
+
else
|
21
|
+
arg
|
22
|
+
end
|
23
|
+
|
15
24
|
req
|
16
25
|
end
|
17
26
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module HttpClientGenerator
|
4
|
+
class Plugs
|
5
|
+
class ValidateResponse
|
6
|
+
Plugs.register :validate_response, self
|
7
|
+
|
8
|
+
module SchemaBuilder
|
9
|
+
def schema_for(name, &block)
|
10
|
+
require 'datacaster'
|
11
|
+
|
12
|
+
@schemas ||= {}
|
13
|
+
@schemas[name] = Datacaster.choosy_schema(&block)
|
14
|
+
|
15
|
+
define_singleton_method(name) do |params|
|
16
|
+
@schemas[name].(params)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize(schema_helper:, strict: false)
|
22
|
+
@schema_helper = schema_helper
|
23
|
+
@strict = strict
|
24
|
+
end
|
25
|
+
|
26
|
+
def call(req)
|
27
|
+
schema_name = :"#{req.name}_#{req.verb}"
|
28
|
+
|
29
|
+
return req unless @schema_helper.respond_to?(schema_name)
|
30
|
+
|
31
|
+
req.response_body = @schema_helper.public_send(schema_name)
|
32
|
+
.value_or { |e| req.raise_message(e) }
|
33
|
+
|
34
|
+
req
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
@@ -15,10 +15,11 @@ module HttpClientGenerator
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
attr_accessor :verb, :content_type, :url, :headers, :body, :rest_args, :response_body, :base, :extra
|
18
|
+
attr_accessor :verb, :name, :content_type, :url, :headers, :body, :rest_args, :response_body, :base, :extra
|
19
19
|
|
20
|
-
def initialize(base:, verb:, content_type:, url:, body:, rest_args:)
|
20
|
+
def initialize(base:, name:, verb:, content_type:, url:, body:, rest_args:)
|
21
21
|
@base = base
|
22
|
+
@name = name
|
22
23
|
@verb = verb
|
23
24
|
@content_type = content_type
|
24
25
|
@url = url
|
@@ -37,6 +38,11 @@ module HttpClientGenerator
|
|
37
38
|
raise base::RequestError, e.message, e.backtrace, cause: nil
|
38
39
|
end
|
39
40
|
|
41
|
+
def raise_message(message)
|
42
|
+
Sentry.capture_message(message, extra: { request_id: extra[:request_id] }) if Object.const_defined?(:Sentry)
|
43
|
+
raise base::RequestError, message
|
44
|
+
end
|
45
|
+
|
40
46
|
private
|
41
47
|
|
42
48
|
def default_headers
|
@@ -38,7 +38,7 @@ module HttpClientGenerator
|
|
38
38
|
url = url_helper.public_send(:"#{name}", url_options)
|
39
39
|
|
40
40
|
request = Request.new(
|
41
|
-
verb: verb, url: url, content_type: content_type, body: body, rest_args: rest_args, base: base
|
41
|
+
name: name, verb: verb, url: url, content_type: content_type, body: body, rest_args: rest_args, base: base
|
42
42
|
)
|
43
43
|
|
44
44
|
req_plugs.reduce(request) { |req, plug| plug.call(req) }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: http-client-generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Egorov
|
@@ -54,6 +54,7 @@ files:
|
|
54
54
|
- lib/http_client_generator/plugs/set_header.rb
|
55
55
|
- lib/http_client_generator/plugs/set_request_id.rb
|
56
56
|
- lib/http_client_generator/plugs/underscore_response.rb
|
57
|
+
- lib/http_client_generator/plugs/validate_response.rb
|
57
58
|
- lib/http_client_generator/request.rb
|
58
59
|
- lib/http_client_generator/resource.rb
|
59
60
|
- lib/http_client_generator/resources_definition.rb
|