kapellmeister 0.7.0 → 0.7.3

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: 923b108fbce0c08cee2eb79bf46fb2741a61d1e833f1ffc01fcad0d18bbae972
4
- data.tar.gz: 2dc7915c615149b8a7c5c1ff8a84960e212ffba27e65f2a29f45fd3b6ed174f8
3
+ metadata.gz: c63a59e324e6fd25a43b163b8db3a826b617cff0101f4cb001f1825f7fc9fc06
4
+ data.tar.gz: 38a102e6272a99813bf78181e7aa7aded4e3ab22864059c3582f0297d0263884
5
5
  SHA512:
6
- metadata.gz: 4011c6602baf6895abcb1ec4468dcdcd27ea987a56e5a4c4d6395f8ed523f020771b07e785bdfbbf2477696b31c4b5045c11042344548b3727fc1cc374918fdd
7
- data.tar.gz: 3c4df81ba7e805659df36374c384e52f788d1d4a4309fac1b5da09eea099d5a9c6d26a3d58088e73c4ea0aa431cba8a93154aee9c65d8b7bfc091adca12ce62a
6
+ metadata.gz: d05effbadfaba1923440b05ca4875d501a5fe281899b34c0c6fea5998e260159286d72f17800cea730b36fdff72c80409f3ce6d6059a504de6fb0fa92b990ddf
7
+ data.tar.gz: 2be64d2e49d7f78b51075a6477020bad5441f8edeb20e5ecc0ccdab8bf5cc9ee8978b11cf01efb6d0945e89db40cc39f828ff678b65424e27744abf3326d0794
@@ -24,6 +24,10 @@ class Kapellmeister::Dispatcher
24
24
  {}
25
25
  end
26
26
 
27
+ def query_params
28
+ {}
29
+ end
30
+
27
31
  def configuration
28
32
  self.class.module_parent.configuration
29
33
  end
@@ -33,12 +37,15 @@ class Kapellmeister::Dispatcher
33
37
  def connection_by(method_name, path, data = {})
34
38
  additional_headers = data.delete(:headers) || {}
35
39
  requests_data = data.delete(:request) || {}
40
+ data_json = data.blank? ? '' : data.to_json
36
41
 
37
42
  generated_connection = connection(additional_headers: additional_headers, requests_data: requests_data) # rubocop:disable Style/HashSyntax (for support ruby 2.4+)
38
43
 
39
- process generated_connection.run_request(method_name.downcase.to_sym, path, data.to_json, additional_headers)
40
- rescue NameError, RuntimeError
41
- raise "Library can't process method #{method_name} yet"
44
+ process generated_connection.run_request(method_name.downcase.to_sym,
45
+ url_with_params(path),
46
+ data_json,
47
+ additional_headers)
48
+
42
49
  rescue Faraday::ConnectionFailed, Faraday::TimeoutError => e
43
50
  failed_response(details: e.message)
44
51
  end
@@ -51,6 +58,7 @@ class Kapellmeister::Dispatcher
51
58
  faraday.request :multipart
52
59
  faraday.response :logger, logger
53
60
  faraday.response :json, content_type: 'application/json; charset=utf-8'
61
+ faraday.use FaradayMiddleware::FollowRedirects, limit: 5
54
62
  faraday.adapter :typhoeus do |http|
55
63
  http.timeout = 20
56
64
  end
@@ -72,10 +80,23 @@ class Kapellmeister::Dispatcher
72
80
  }
73
81
  end
74
82
 
83
+ def path_generate(path)
84
+ path.query_parameters
85
+ end
86
+
75
87
  def process(data)
76
88
  report(data).result
77
89
  end
78
90
 
91
+ def url_with_params(url)
92
+ return url if query_params.blank?
93
+
94
+ uri = URI(url)
95
+ params = URI.decode_www_form(uri.query || '').to_h.merge(query_params)
96
+ uri.query = URI.encode_www_form(params)
97
+ uri.to_s
98
+ end
99
+
79
100
  def failed_response(**args)
80
101
  FailedResponse.new(false, { message: "#{self.class} no connection" }, { status: 555, **args })
81
102
  end
@@ -3,7 +3,9 @@ module Kapellmeister::RequestsExtension
3
3
  proc do |name, request_data|
4
4
  define_method name do |data = {}|
5
5
  proc { |method:, path:, body: {}, query_params: {}, mock: ''|
6
- return ::Kapellmeister::Base.routes_scheme_parse(mock) if (Rails.try(:env) || ENV['APP_ENV']) == 'test'
6
+ if (Rails.try(:env) || ENV.fetch('APP_ENV', nil)) == 'test'
7
+ return ::Kapellmeister::Base.routes_scheme_parse(mock)
8
+ end
7
9
 
8
10
  valid_body?(data, body)
9
11
  valid_query?(data, query_params)
@@ -36,7 +38,7 @@ def valid_body?(data, body)
36
38
  return if body.blank? || body.is_a?(Hash)
37
39
 
38
40
  schema = Object.const_get(body).schema
39
- result = schema.(data)
41
+ result = schema.call(data)
40
42
  return data if result.success?
41
43
 
42
44
  raise ArgumentError, result.errors.to_h
@@ -44,6 +46,7 @@ end
44
46
 
45
47
  def valid_query?(data, query)
46
48
  return if query.blank?
49
+
47
50
  required_keys = query.keys
48
51
 
49
52
  from_data = data.slice(*required_keys)
@@ -51,8 +54,8 @@ def valid_query?(data, query)
51
54
  data[:query_params] ||= {}
52
55
  data[:query_params] = data[:query_params].to_h.merge!(from_data)
53
56
 
54
- diffirent_keys = data[:query_params].transform_keys(&:to_sym)
55
- return if required_keys.all? { |key| diffirent_keys.has_key? key.to_sym }
57
+ different_keys = data[:query_params].transform_keys(&:to_sym)
58
+ return if required_keys.all? { |key| different_keys.key? key.to_sym }
56
59
 
57
60
  raise ArgumentError, "Query params needs keys #{required_keys}"
58
61
  end
@@ -1,3 +1,3 @@
1
1
  module Kapellmeister
2
- VERSION = '0.7.0'.freeze
2
+ VERSION = '0.7.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kapellmeister
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - DarkWater
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-06 00:00:00.000000000 Z
11
+ date: 2022-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-schema