request-builder 0.1.2 → 0.1.11

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: 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