request-builder 0.1.1 → 0.1.2

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: 7ef65f89b3f06c126d7607aac92943b498c8f039d90f3c08edcd1b7d0487b88a
4
- data.tar.gz: d7f48ebb1fff73fe3f80b6bb50ac23a1a744bcbb76078d1afb964f5b33540cf8
3
+ metadata.gz: d96e607c780a2bf0f4b9a76576137b973ba71daa719b17838836a9890fece4c4
4
+ data.tar.gz: 696d365b78f1a133f40d5bc784e96a1e2d86a1a49f8f42eb7ba4f23379bd9473
5
5
  SHA512:
6
- metadata.gz: 976ed740ebb730981e5f301e6562d00d54eaa2cb874e384840ee53845699f5871eb4ee3b725d0d5da3213d6ff2a17f6d2d10070e7223920d4a9368c4c3a90c44
7
- data.tar.gz: '08423c1ccd725ec0e7069d94cb03cf66f5635f5ee6656204e71c3cbe3a1925e815a786a19293cc9f062159e4b366ce17cbe2ee169c36a993ce5a0aae53c3d8cf'
6
+ metadata.gz: bf03752615829aa961327be7a13a8c56662e3796ec0fe4b565495c873ffa8f2eb31229d740475930ef3bbe69e9f345c695c3fa37f31236bef9cfbc4d5cd62856
7
+ data.tar.gz: 074b41b7a673cb4687f6c6a3331162d33159b5a30cde121b4921f41c7433eb6a9f2bea945188a2830df5281eb7111bc47e19e82aee3a822fe30224538a688198
data/README.md CHANGED
@@ -45,7 +45,7 @@ class MyApiClient
45
45
  # this allows you to use object variables or configuration variables
46
46
  param 'param1', &:my_option
47
47
  param 'param2', -> { "#{my_option}" }
48
- param 'param3' { my_option }
48
+ param('param3') { my_option }
49
49
  param 'param4' 'string'
50
50
  end
51
51
 
@@ -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,28 +5,24 @@ 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
19
18
  @request_middleware = :json
20
19
  @response_middleware = :json
21
- @adapter = :net_http
20
+ @adapter = Request::Builder.default_adapter
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.1"
3
+ VERSION = "0.1.2"
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"
@@ -25,8 +20,8 @@ module Request
25
20
 
26
21
  class << base
27
22
  alias_method :__new, :new
28
- def new(*args)
29
- e = __new(*args)
23
+ def new(*args, **kwargs)
24
+ e = __new(*args, **kwargs)
30
25
  e.send(:set_config_context)
31
26
  e
32
27
  end
@@ -34,12 +29,18 @@ module Request
34
29
  end
35
30
 
36
31
  module ClassMethods
37
- def call(**args)
38
- new(**args).call
32
+ def call(*args, **kwargs)
33
+ new(*args, **kwargs).call
39
34
  end
40
35
  alias perform call
41
36
  end
42
37
 
38
+ def self.default_adapter(adapter = nil)
39
+ @default_adapter = adapter if adapter
40
+
41
+ @default_adapter || :net_http
42
+ end
43
+
43
44
  def call
44
45
  do_request
45
46
  result
@@ -58,11 +59,11 @@ module Request
58
59
  @response = connection.send(config.method.downcase, config.path) do |req|
59
60
  req.options.timeout = config.timeout
60
61
 
61
- config.params.each do |key, value|
62
+ config.each_param do |key, value|
62
63
  req.params[key] = value
63
64
  end
64
65
 
65
- config.headers.each do |key, value|
66
+ config.each_header do |key, value|
66
67
  req.headers[key] = value
67
68
  end
68
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.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Kostyuk
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-17 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
@@ -142,7 +137,7 @@ licenses:
142
137
  metadata:
143
138
  homepage_uri: https://github.com/RainbowPonny/ruby-request-builder
144
139
  source_code_uri: https://github.com/RainbowPonny/ruby-request-builder
145
- post_install_message:
140
+ post_install_message:
146
141
  rdoc_options: []
147
142
  require_paths:
148
143
  - lib
@@ -157,8 +152,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
152
  - !ruby/object:Gem::Version
158
153
  version: '0'
159
154
  requirements: []
160
- rubygems_version: 3.1.6
161
- signing_key:
155
+ rubygems_version: 3.3.7
156
+ signing_key:
162
157
  specification_version: 4
163
158
  summary: Ruby Request DSL
164
159
  test_files: []
@@ -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