eac_envs-http 0.2.0 → 0.3.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: f17385384c0f2915178b63b4a4e655c826cb6593da72b2c77ba5e93ecb67911e
4
- data.tar.gz: 8088ab907a1f99ae71a0b528fc110639505885e5dcf063060c09442766cda90a
3
+ metadata.gz: a6c22151cda479613cd35ca7c01f5b838db242db70ab052a646c1e83fcf54509
4
+ data.tar.gz: 27f012142091b0dbefeb57c49cabfa0e31823edc4f4dd84f8bf68fb818802717
5
5
  SHA512:
6
- metadata.gz: 55fc48bfb2a0daafec4ccf30d422ca8f69ce850f17bb2a0834b04190bb941c20bdd0f7468996b69b3c7dd6623fd92831705f7b21978ebc4f064a1d8d850b4000
7
- data.tar.gz: cc7ff67747a6001d997407a6c9d511e8a9449010bfe1190de4e97904cd09f500e27c1d5f20bcced5f36fd1d5c3dcfc529f3f43774732b0189a6c1f7de1e4e46a
6
+ metadata.gz: d42a1a5f35cbb274efb9251fb651bf3ff730b735951a85d9e20b5a6edfa1cd1df4499c40e27c3415d4f41c146266ab87200e1fad559a1dec225490bb47e31ebd
7
+ data.tar.gz: 1778ddfdb370f27756547f89285be738f030a776e194a7a6a0a4f950a3a23ac438c4eb108a02c0aae7b0ce12c6213a8ef2a8a06e218cbe7307263a8e3f12b387
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'faraday'
5
+ require 'faraday/follow_redirects'
6
+ require 'faraday/gzip'
7
+ require 'faraday/multipart'
8
+ require 'faraday/retry'
9
+
10
+ module EacEnvs
11
+ module Http
12
+ class Request
13
+ class FaradayConnection
14
+ enable_method_class
15
+ common_constructor :request
16
+
17
+ SETUPS = %i[multipart authorization follow_redirect gzip retry].freeze
18
+
19
+ # @return [Faraday::Connection]
20
+ def result
21
+ ::Faraday.default_connection_options[:headers] = {}
22
+ ::Faraday::Connection.new(connection_options) do |conn|
23
+ SETUPS.each { |setup| send("setup_#{setup}", conn) }
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ # @return [Boolean]
30
+ def body_with_file?
31
+ request.body_fields.with_file?
32
+ end
33
+
34
+ # @return [Hash]
35
+ def connection_options
36
+ {
37
+ request: { params_encoder: Faraday::FlatParamsEncoder },
38
+ ssl: { verify: request.ssl_verify? }
39
+ }
40
+ end
41
+
42
+ # @param conn [Faraday::Connection]
43
+ def setup_authorization(conn)
44
+ request.auth.if_present do |v|
45
+ conn.request :authorization, :basic, v.username, v.password
46
+ end
47
+ end
48
+
49
+ # @param conn [Faraday::Connection]
50
+ def setup_follow_redirect(conn)
51
+ conn.response :follow_redirects if request.follow_redirect?
52
+ end
53
+
54
+ # @param conn [Faraday::Connection]
55
+ def setup_gzip(conn)
56
+ conn.request :gzip
57
+ end
58
+
59
+ # @param conn [Faraday::Connection]
60
+ def setup_multipart(conn)
61
+ if body_with_file?
62
+ conn.request :multipart, flat_encode: true
63
+ else
64
+ conn.request :url_encoded
65
+ end
66
+ end
67
+
68
+ # @param conn [Faraday::Connection]
69
+ def setup_retry(conn)
70
+ conn.request :retry if request.retry?
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -2,13 +2,11 @@
2
2
 
3
3
  require 'eac_envs/http/response'
4
4
  require 'eac_ruby_utils/core_ext'
5
- require 'faraday'
6
- require 'faraday/multipart'
7
5
 
8
6
  module EacEnvs
9
7
  module Http
10
8
  class Request
11
- BOOLEAN_MODIFIERS = %w[ssl_verify].freeze
9
+ BOOLEAN_MODIFIERS = %w[follow_redirect retry ssl_verify].freeze
12
10
  COMMON_MODIFIERS = %w[auth body_data response_body_data_proc url verb].freeze
13
11
  HASH_MODIFIERS = %w[header].freeze
14
12
  MODIFIERS = COMMON_MODIFIERS + BOOLEAN_MODIFIERS + HASH_MODIFIERS.map(&:pluralize)
@@ -25,24 +23,9 @@ module EacEnvs
25
23
  auth(::Struct.new(:username, :password).new(username, password))
26
24
  end
27
25
 
28
- # @return [Faraday::Connection]
29
- def faraday_connection
30
- ::Faraday.default_connection_options[:headers] = {}
31
- ::Faraday::Connection.new(faraday_connection_options) do |conn|
32
- if body_with_file?
33
- conn.request :multipart, flat_encode: true
34
- else
35
- conn.request :url_encoded
36
- end
37
- auth.if_present { |v| conn.request :authorization, :basic, v.username, v.password }
38
- end
39
- end
40
-
41
- # @return [Hash]
42
- def faraday_connection_options
43
- {
44
- request: { params_encoder: Faraday::FlatParamsEncoder }, ssl: { verify: ssl_verify? }
45
- }
26
+ # @return [EacEnvs::Http::Request::BodyFields]
27
+ def body_fields
28
+ @body_fields ||= ::EacEnvs::Http::Request::BodyFields.new(body_data)
46
29
  end
47
30
 
48
31
  # @return [Faraday::Response]
@@ -65,20 +48,11 @@ module EacEnvs
65
48
 
66
49
  private
67
50
 
68
- def body_fields
69
- @body_fields ||= ::EacEnvs::Http::Request::BodyFields.new(body_data)
70
- end
71
-
72
- # @return [Boolean]
73
- def body_with_file?
74
- body_fields.with_file?
75
- end
76
-
77
51
  def sanitized_body_data
78
52
  body_fields.to_h || body_data
79
53
  end
80
54
 
81
- require_sub __FILE__
55
+ require_sub __FILE__, require_dependency: true
82
56
  end
83
57
  end
84
58
  end
@@ -9,6 +9,7 @@ require 'json'
9
9
  module EacEnvs
10
10
  module Http
11
11
  class Response < ::StandardError
12
+ COMMON_HEADERS = %w[Content-Type].freeze
12
13
  HEADER_LINE_PARSER = /\A([^:]+):(.*)\z/.to_parser do |m|
13
14
  [m[1].strip, m[2].strip]
14
15
  end
@@ -54,10 +55,9 @@ module EacEnvs
54
55
  hash_search(headers, name)
55
56
  end
56
57
 
58
+ # @return [Hash<String, String>]
57
59
  def headers
58
- performed.header_str.each_line.map(&:strip)[1..-1].reject(&:blank?)
59
- .map { |header_line| HEADER_LINE_PARSER.parse!(header_line) }
60
- .to_h
60
+ performed.headers.to_hash
61
61
  end
62
62
 
63
63
  def link(rel)
@@ -86,6 +86,12 @@ module EacEnvs
86
86
  "URL: #{url}\nStatus: #{status}\nBody:\n\n#{body_str}"
87
87
  end
88
88
 
89
+ COMMON_HEADERS.each do |header_key|
90
+ define_method header_key.underscore do
91
+ header(header_key)
92
+ end
93
+ end
94
+
89
95
  private
90
96
 
91
97
  def body_data_from_application_json
@@ -2,6 +2,6 @@
2
2
 
3
3
  module EacEnvs
4
4
  module Http
5
- VERSION = '0.2.0'
5
+ VERSION = '0.3.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_envs-http
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-28 00:00:00.000000000 Z
11
+ date: 2023-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_fs
@@ -58,6 +58,34 @@ dependencies:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: 2.7.4
61
+ - !ruby/object:Gem::Dependency
62
+ name: faraday-follow_redirects
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '0.3'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '0.3'
75
+ - !ruby/object:Gem::Dependency
76
+ name: faraday-gzip
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0.1'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '0.1'
61
89
  - !ruby/object:Gem::Dependency
62
90
  name: faraday-multipart
63
91
  requirement: !ruby/object:Gem::Requirement
@@ -78,6 +106,20 @@ dependencies:
78
106
  - - ">="
79
107
  - !ruby/object:Gem::Version
80
108
  version: 1.0.4
109
+ - !ruby/object:Gem::Dependency
110
+ name: faraday-retry
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '2.1'
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '2.1'
81
123
  - !ruby/object:Gem::Dependency
82
124
  name: aranha-parsers
83
125
  requirement: !ruby/object:Gem::Requirement
@@ -124,6 +166,7 @@ files:
124
166
  - lib/eac_envs/http/request/body_field.rb
125
167
  - lib/eac_envs/http/request/body_field_value.rb
126
168
  - lib/eac_envs/http/request/body_fields.rb
169
+ - lib/eac_envs/http/request/faraday_connection.rb
127
170
  - lib/eac_envs/http/response.rb
128
171
  - lib/eac_envs/http/rspec.rb
129
172
  - lib/eac_envs/http/rspec/echo_server.rb