request-builder 0.1.111 → 0.2.0

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: 0aac9f219c56f616535a5bfc7a4bd5c5f3582b14cf073222072163df5854567e
4
- data.tar.gz: 781222b721bec58b7176c748b534cc6a056028e4ec311939c894659fa0d5c490
3
+ metadata.gz: 5cf3a97fe30fcae542fe7408baeb64a43e780756289223976cb2dec000fe7f55
4
+ data.tar.gz: c14f4e0302f6b9cdd7dfee85c9cc8a2fdc02e8dbe15d8602ee7d63523abbaa26
5
5
  SHA512:
6
- metadata.gz: 8e88f125fdc7c80476816ffadbe2c53682ee744566c28e84aceeb1f9c012cc83d0076e91b7888173a512dc60ebfc6de0d6dcf83de4815301b6c7e9013cea1ce4
7
- data.tar.gz: 52211f5fd41ef89cde1275a238dda030bde4873d433c77e97dc8238b0d7aa3deb8f00d1d4fa832658068a93eaab4e62b5f2858e93e5beca771f61e98c629bf75
6
+ metadata.gz: bab01b5e370fa9bc933f885444c6d1a70dca7e67d3b587690f4fa28e69ad1e60f1e6ee7d2ef8dced6b0ac4c7853e41c1531c38545e64d111fd44492d8fc2fd36
7
+ data.tar.gz: 88397b03a03cc68e9294588360ff1a9c2a5c125d7d778c1747228576937e47c903053416e261dc8a4c5f2851ac01b0e0329be1bc8fb139aaedeac1ff233310c8
@@ -11,16 +11,16 @@ module Request
11
11
  end
12
12
 
13
13
  module ClassMethods
14
- def config
15
- @config ||= RequestConfig.new
14
+ def config(conf=nil)
15
+ @config ||= conf.deep_dup || RequestConfig.new
16
16
  end
17
17
 
18
18
  def configure(conf = nil, &block)
19
- @config = conf.dup if conf
19
+ config(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
@@ -5,14 +5,13 @@ module Request
5
5
 
6
6
  delegate_missing_to :context
7
7
 
8
- attrs = [:host, :path, :method, :request_middleware, :response_middleware, :adapter, :logger, :timeout]
8
+ attrs = [:params, :callbacks, :headers, :body, :host, :path, :method, :request_middleware, :response_middleware, :adapter, :logger, :timeout]
9
9
 
10
- attr_reader :context, :body_conf, :headers_conf, :params_conf, :callbacks_conf, :stubs
11
- attr_writer *attrs, :stubs
12
-
13
- alias callbacks callbacks_conf
10
+ attr_reader :context, :stubs
11
+ attr_writer *attrs, :stubs, :context
14
12
 
15
13
  def initialize
14
+ @body = nil
16
15
  @host = nil
17
16
  @path = '/'
18
17
  @method = :get
@@ -22,11 +21,8 @@ module Request
22
21
  @stubs = Faraday::Adapter::Test::Stubs.new
23
22
  @logger = nil
24
23
  @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
29
24
  @response_schema = Dry::Schema.Params
25
+ @context = nil
30
26
  end
31
27
 
32
28
  attrs.each do |attr|
@@ -41,10 +37,22 @@ module Request
41
37
 
42
38
  [:before_validate].each do |name|
43
39
  define_method name do |&block|
44
- callbacks.send(name, &block)
40
+ callbacks[name] = block
45
41
  end
46
42
  end
47
43
 
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
+
48
56
  def stubs(value = nil, &block)
49
57
  if block_given?
50
58
  @stubs.instance_eval(&block)
@@ -65,36 +73,32 @@ module Request
65
73
  end
66
74
  end
67
75
 
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
-
80
76
  def header(key, value = nil, &block)
81
- headers_conf.header(key, value, &block)
82
- end
83
-
84
- def params(&block)
85
- params_conf.instance_eval(&block) if block_given?
86
-
87
- params_conf
77
+ if value.nil? && block.nil?
78
+ value_with_context(headers[key])
79
+ else
80
+ headers[key] = block || value
81
+ end
88
82
  end
89
83
 
90
84
  def param(key, value = nil, &block)
91
- params_conf.param(key, value, &block)
85
+ if value.nil? && block.nil?
86
+ value_with_context(params[key])
87
+ else
88
+ params[key] = block || value
89
+ end
92
90
  end
93
91
 
94
- def context=(context)
95
- @context = context
92
+ def each_header
93
+ headers.each do |key, value|
94
+ yield key, value_with_context(value)
95
+ end
96
+ end
96
97
 
97
- [body_conf, headers_conf, params_conf, callbacks_conf].each { |cnf| cnf.context = context }
98
+ def each_param
99
+ params.each do |key, value|
100
+ yield key, value_with_context(value)
101
+ end
98
102
  end
99
103
 
100
104
  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(@context, &obj)
8
+ when 1, -1, -2 then instance_exec(self, &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.111"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -6,11 +6,6 @@ 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"
14
9
  require_relative "builder/result"
15
10
  require_relative "builder/dsl"
16
11
  require_relative "builder/connection"
@@ -64,11 +59,11 @@ module Request
64
59
  @response = connection.send(config.method.downcase, config.path) do |req|
65
60
  req.options.timeout = config.timeout
66
61
 
67
- config.params.each do |key, value|
62
+ config.each_param do |key, value|
68
63
  req.params[key] = value
69
64
  end
70
65
 
71
- config.headers.each do |key, value|
66
+ config.each_header do |key, value|
72
67
  req.headers[key] = value
73
68
  end
74
69
 
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.111
4
+ version: 0.2.0
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-10-04 00:00:00.000000000 Z
11
+ date: 2022-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -127,11 +127,6 @@ 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
135
130
  - lib/request/builder/result.rb
136
131
  - lib/request/builder/value_with_context.rb
137
132
  - lib/request/builder/version.rb
@@ -1,37 +0,0 @@
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
@@ -1,21 +0,0 @@
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
@@ -1,29 +0,0 @@
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
@@ -1,17 +0,0 @@
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
@@ -1,17 +0,0 @@
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