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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d96e607c780a2bf0f4b9a76576137b973ba71daa719b17838836a9890fece4c4
4
- data.tar.gz: 696d365b78f1a133f40d5bc784e96a1e2d86a1a49f8f42eb7ba4f23379bd9473
3
+ metadata.gz: e7de0e8574474d4faaab1875af8c7a6300a59b4c1ce50e4759a2cd3dad57ec8d
4
+ data.tar.gz: 78339277c6d7f8350c8c9a1ef46fe323be17aa50c432cd2066cbbc13bf509899
5
5
  SHA512:
6
- metadata.gz: bf03752615829aa961327be7a13a8c56662e3796ec0fe4b565495c873ffa8f2eb31229d740475930ef3bbe69e9f345c695c3fa37f31236bef9cfbc4d5cd62856
7
- data.tar.gz: 074b41b7a673cb4687f6c6a3331162d33159b5a30cde121b4921f41c7433eb6a9f2bea945188a2830df5281eb7111bc47e19e82aee3a822fe30224538a688198
6
+ metadata.gz: 619bb65f75be72e79b0ae9edc545e31aca08d29acae094763d4f492ed84b26d353544ada9056b597cf199ed2b510fbe27efc3d09f579616c4dbc0492cd7ccc10
7
+ data.tar.gz: 8caef78820ca8117b3f095f3e91a61db1048a96c5d90ba93ae41c04e16dd3099e44cef87ce19cab4feccc67a9187d733be42c36ae93451b5bae670bf3605aaec
@@ -11,16 +11,16 @@ module Request
11
11
  end
12
12
 
13
13
  module ClassMethods
14
- def config(conf=nil)
15
- @config ||= conf.deep_dup || RequestConfig.new
14
+ def config
15
+ @config ||= RequestConfig.new
16
16
  end
17
17
 
18
18
  def configure(conf = nil, &block)
19
- config(conf)
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 = [:params, :callbacks, :headers, :body, :host, :path, :method, :request_middleware, :response_middleware, :adapter, :logger, :timeout]
8
+ attrs = [:host, :path, :method, :request_middleware, :response_middleware, :adapter, :logger, :timeout]
9
9
 
10
- attr_reader :context, :stubs
11
- attr_writer *attrs, :stubs, :context
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 = Request::Builder.default_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[name] = block
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
- if value.nil? && block.nil?
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 param(key, value = nil, &block)
85
- if value.nil? && block.nil?
86
- value_with_context(params[key])
87
- else
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 each_header
93
- headers.each do |key, value|
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 each_param
99
- params.each do |key, value|
100
- yield key, value_with_context(value)
101
- end
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
@@ -5,7 +5,7 @@ module Request
5
5
  return obj unless obj.is_a?(Proc)
6
6
 
7
7
  case obj.arity
8
- when 1, -1, -2 then instance_exec(self, &obj)
8
+ when 1, -1, -2 then instance_exec(@context, &obj)
9
9
  else instance_exec(&obj)
10
10
  end
11
11
  end
@@ -1,5 +1,5 @@
1
1
  module Request
2
2
  module Builder
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.11"
4
4
  end
5
5
  end
@@ -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.each_param do |key, value|
61
+ config.params.each do |key, value|
63
62
  req.params[key] = value
64
63
  end
65
64
 
66
- config.each_header do |key, value|
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.2
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-12-17 00:00:00.000000000 Z
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