request-builder 0.1.2 → 0.1.11
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/request/builder/dsl.rb +4 -4
- data/lib/request/builder/request_config/base.rb +37 -0
- data/lib/request/builder/request_config/body.rb +21 -0
- data/lib/request/builder/request_config/callbacks.rb +29 -0
- data/lib/request/builder/request_config/headers.rb +17 -0
- data/lib/request/builder/request_config/params.rb +17 -0
- data/lib/request/builder/request_config.rb +34 -38
- data/lib/request/builder/value_with_context.rb +1 -1
- data/lib/request/builder/version.rb +1 -1
- data/lib/request/builder.rb +7 -8
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e7de0e8574474d4faaab1875af8c7a6300a59b4c1ce50e4759a2cd3dad57ec8d
|
4
|
+
data.tar.gz: 78339277c6d7f8350c8c9a1ef46fe323be17aa50c432cd2066cbbc13bf509899
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 619bb65f75be72e79b0ae9edc545e31aca08d29acae094763d4f492ed84b26d353544ada9056b597cf199ed2b510fbe27efc3d09f579616c4dbc0492cd7ccc10
|
7
|
+
data.tar.gz: 8caef78820ca8117b3f095f3e91a61db1048a96c5d90ba93ae41c04e16dd3099e44cef87ce19cab4feccc67a9187d733be42c36ae93451b5bae670bf3605aaec
|
data/lib/request/builder/dsl.rb
CHANGED
@@ -11,16 +11,16 @@ module Request
|
|
11
11
|
end
|
12
12
|
|
13
13
|
module ClassMethods
|
14
|
-
def config
|
15
|
-
@config ||=
|
14
|
+
def config
|
15
|
+
@config ||= RequestConfig.new
|
16
16
|
end
|
17
17
|
|
18
18
|
def configure(conf = nil, &block)
|
19
|
-
config
|
19
|
+
@config = conf.dup if conf
|
20
20
|
|
21
21
|
config.instance_eval(&block) if block
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
26
|
-
end
|
26
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Request
|
2
|
+
module Builder
|
3
|
+
class RequestConfig::Base
|
4
|
+
include ValueWithContext
|
5
|
+
|
6
|
+
attr_accessor :context
|
7
|
+
attr_reader :store
|
8
|
+
|
9
|
+
delegate_missing_to :context
|
10
|
+
|
11
|
+
def initialize(context = nil)
|
12
|
+
@context = context
|
13
|
+
end
|
14
|
+
|
15
|
+
def each(&block)
|
16
|
+
raise NotImplementedError unless store.is_a?(Enumerable)
|
17
|
+
|
18
|
+
store.each do |value|
|
19
|
+
value[1] = value_with_context(value[1])
|
20
|
+
block.call(value)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def [] key
|
25
|
+
raise NotImplementedError unless store.is_a?(Enumerable)
|
26
|
+
|
27
|
+
value_with_context(store[key])
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def store
|
33
|
+
raise NotImplementedError
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Request
|
2
|
+
module Builder
|
3
|
+
class RequestConfig::Body < Request::Builder::RequestConfig::Base
|
4
|
+
def set(&block)
|
5
|
+
raise ArgumentError, 'You must provide a block' unless block_given?
|
6
|
+
|
7
|
+
@store = block
|
8
|
+
end
|
9
|
+
|
10
|
+
def to_h
|
11
|
+
value_with_context(store)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def store
|
17
|
+
@store ||= nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Request
|
2
|
+
module Builder
|
3
|
+
class RequestConfig::Callbacks < Request::Builder::RequestConfig::Base
|
4
|
+
[:before_validate].each do |name|
|
5
|
+
define_method name do |&block|
|
6
|
+
raise ArgumentError, 'You must provide a block' unless block
|
7
|
+
|
8
|
+
store[name] = block
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def each(&block)
|
13
|
+
store.each do |value|
|
14
|
+
block.call(value)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def [] key
|
19
|
+
store[key]
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def store
|
25
|
+
@store ||= HashWithIndifferentAccess.new
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Request
|
2
|
+
module Builder
|
3
|
+
class RequestConfig::Headers < Request::Builder::RequestConfig::Base
|
4
|
+
def header(key, value = nil, &block)
|
5
|
+
raise ArgumentError, 'Must provide a value or block' if !value && !block
|
6
|
+
|
7
|
+
store[key] = block || value
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def store
|
13
|
+
@store ||= HashWithIndifferentAccess.new
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Request
|
2
|
+
module Builder
|
3
|
+
class RequestConfig::Params < Request::Builder::RequestConfig::Base
|
4
|
+
def param(key, value = nil, &block)
|
5
|
+
raise ArgumentError, 'Must provide a value or block' if !value && !block
|
6
|
+
|
7
|
+
store[key] = block || value
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def store
|
13
|
+
@store ||= HashWithIndifferentAccess.new
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -5,24 +5,28 @@ module Request
|
|
5
5
|
|
6
6
|
delegate_missing_to :context
|
7
7
|
|
8
|
-
attrs = [:
|
8
|
+
attrs = [:host, :path, :method, :request_middleware, :response_middleware, :adapter, :logger, :timeout]
|
9
9
|
|
10
|
-
attr_reader :context, :stubs
|
11
|
-
attr_writer *attrs, :stubs
|
10
|
+
attr_reader :context, :body_conf, :headers_conf, :params_conf, :callbacks_conf, :stubs
|
11
|
+
attr_writer *attrs, :stubs
|
12
|
+
|
13
|
+
alias callbacks callbacks_conf
|
12
14
|
|
13
15
|
def initialize
|
14
|
-
@body = nil
|
15
16
|
@host = nil
|
16
17
|
@path = '/'
|
17
18
|
@method = :get
|
18
19
|
@request_middleware = :json
|
19
20
|
@response_middleware = :json
|
20
|
-
@adapter =
|
21
|
+
@adapter = :net_http
|
21
22
|
@stubs = Faraday::Adapter::Test::Stubs.new
|
22
23
|
@logger = nil
|
23
24
|
@timeout = 30
|
25
|
+
@body_conf = RequestConfig::Body.new
|
26
|
+
@headers_conf = RequestConfig::Headers.new
|
27
|
+
@params_conf = RequestConfig::Params.new
|
28
|
+
@callbacks_conf = RequestConfig::Callbacks.new
|
24
29
|
@response_schema = Dry::Schema.Params
|
25
|
-
@context = nil
|
26
30
|
end
|
27
31
|
|
28
32
|
attrs.each do |attr|
|
@@ -37,22 +41,10 @@ module Request
|
|
37
41
|
|
38
42
|
[:before_validate].each do |name|
|
39
43
|
define_method name do |&block|
|
40
|
-
callbacks
|
44
|
+
callbacks.send(name, &block)
|
41
45
|
end
|
42
46
|
end
|
43
47
|
|
44
|
-
def headers
|
45
|
-
@headers ||= HashWithIndifferentAccess.new
|
46
|
-
end
|
47
|
-
|
48
|
-
def params
|
49
|
-
@params ||= HashWithIndifferentAccess.new
|
50
|
-
end
|
51
|
-
|
52
|
-
def callbacks
|
53
|
-
@callbacks ||= HashWithIndifferentAccess.new
|
54
|
-
end
|
55
|
-
|
56
48
|
def stubs(value = nil, &block)
|
57
49
|
if block_given?
|
58
50
|
@stubs.instance_eval(&block)
|
@@ -73,32 +65,36 @@ module Request
|
|
73
65
|
end
|
74
66
|
end
|
75
67
|
|
68
|
+
def body(&block)
|
69
|
+
return body_conf.set(&block) if block_given?
|
70
|
+
|
71
|
+
body_conf.to_h
|
72
|
+
end
|
73
|
+
|
74
|
+
def headers(&block)
|
75
|
+
headers_conf.instance_eval(&block) if block_given?
|
76
|
+
|
77
|
+
headers_conf
|
78
|
+
end
|
79
|
+
|
76
80
|
def header(key, value = nil, &block)
|
77
|
-
|
78
|
-
value_with_context(headers[key])
|
79
|
-
else
|
80
|
-
headers[key] = block || value
|
81
|
-
end
|
81
|
+
headers_conf.header(key, value, &block)
|
82
82
|
end
|
83
83
|
|
84
|
-
def
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
params[key] = block || value
|
89
|
-
end
|
84
|
+
def params(&block)
|
85
|
+
params_conf.instance_eval(&block) if block_given?
|
86
|
+
|
87
|
+
params_conf
|
90
88
|
end
|
91
89
|
|
92
|
-
def
|
93
|
-
|
94
|
-
yield key, value_with_context(value)
|
95
|
-
end
|
90
|
+
def param(key, value = nil, &block)
|
91
|
+
params_conf.param(key, value, &block)
|
96
92
|
end
|
97
93
|
|
98
|
-
def
|
99
|
-
|
100
|
-
|
101
|
-
|
94
|
+
def context=(context)
|
95
|
+
@context = context
|
96
|
+
|
97
|
+
[body_conf, headers_conf, params_conf, callbacks_conf].each { |cnf| cnf.context = context }
|
102
98
|
end
|
103
99
|
|
104
100
|
def [] property
|
data/lib/request/builder.rb
CHANGED
@@ -6,6 +6,11 @@ require "active_support/core_ext/module/delegation"
|
|
6
6
|
require_relative "builder/version"
|
7
7
|
require_relative "builder/value_with_context"
|
8
8
|
require_relative "builder/request_config"
|
9
|
+
require_relative "builder/request_config/base"
|
10
|
+
require_relative "builder/request_config/body"
|
11
|
+
require_relative "builder/request_config/params"
|
12
|
+
require_relative "builder/request_config/headers"
|
13
|
+
require_relative "builder/request_config/callbacks"
|
9
14
|
require_relative "builder/result"
|
10
15
|
require_relative "builder/dsl"
|
11
16
|
require_relative "builder/connection"
|
@@ -35,12 +40,6 @@ module Request
|
|
35
40
|
alias perform call
|
36
41
|
end
|
37
42
|
|
38
|
-
def self.default_adapter(adapter = nil)
|
39
|
-
@default_adapter = adapter if adapter
|
40
|
-
|
41
|
-
@default_adapter || :net_http
|
42
|
-
end
|
43
|
-
|
44
43
|
def call
|
45
44
|
do_request
|
46
45
|
result
|
@@ -59,11 +58,11 @@ module Request
|
|
59
58
|
@response = connection.send(config.method.downcase, config.path) do |req|
|
60
59
|
req.options.timeout = config.timeout
|
61
60
|
|
62
|
-
config.
|
61
|
+
config.params.each do |key, value|
|
63
62
|
req.params[key] = value
|
64
63
|
end
|
65
64
|
|
66
|
-
config.
|
65
|
+
config.headers.each do |key, value|
|
67
66
|
req.headers[key] = value
|
68
67
|
end
|
69
68
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: request-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anton Kostyuk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -127,6 +127,11 @@ files:
|
|
127
127
|
- lib/request/builder/connection.rb
|
128
128
|
- lib/request/builder/dsl.rb
|
129
129
|
- lib/request/builder/request_config.rb
|
130
|
+
- lib/request/builder/request_config/base.rb
|
131
|
+
- lib/request/builder/request_config/body.rb
|
132
|
+
- lib/request/builder/request_config/callbacks.rb
|
133
|
+
- lib/request/builder/request_config/headers.rb
|
134
|
+
- lib/request/builder/request_config/params.rb
|
130
135
|
- lib/request/builder/result.rb
|
131
136
|
- lib/request/builder/value_with_context.rb
|
132
137
|
- lib/request/builder/version.rb
|