request-builder 0.1.1 → 0.1.2

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