eac_envs-http 0.3.1 → 0.3.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: 815cab06daf5fa4e2baca67a1bb6fb9282228b081e963e34db3c19499b792904
4
- data.tar.gz: 0d35c7cbf823781ae5b11e293b6f8b189bf316a3fa3038374cd183120c39ff0f
3
+ metadata.gz: 91ef89fd4cd3ad1bb09137c2c314dbeb1014b473a31d6b3a619afd5a25f49011
4
+ data.tar.gz: 3d1cef722ed45d04b87ad33c7ed3b4ad14e908a311fbb5d1ce83a363491e8bc0
5
5
  SHA512:
6
- metadata.gz: 1eacb4a2df11f838367dea25261ceb5f3e7a682a2c9cbabe1d3728c18bed33e831817869400fd9b8f21e419fdac9120f5c618b91b8e7c1df2cf6a933b1f80537
7
- data.tar.gz: be9a22cce0b1e9ed7f71009d3d1025bedf1249d0a0d87a5148e445fba06a3b93c28660967c3ba3f5ec8fb39a01e72f3e6d449e65c70b575fac01fe6c889867fd
6
+ metadata.gz: 52fc388acde1ab6a9f8b45f4939dc79cfc39c6de87de58cc4f94e6219f1ef70f111db18ed951c86a6f41a8f71008d062f16162d21bc8756a03867ea021111d1b
7
+ data.tar.gz: 7f38854cabb1bc75efdfe04ed201a4f1a4ef360707e99e822b32c00959c33717103f823c6ea99f5d7871d54776d4eda9346a94238ceb41bb71fcf98f33b8bdcf
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'json'
5
+
6
+ module EacEnvs
7
+ module Http
8
+ class Response < ::StandardError
9
+ module Body
10
+ delegate :response_body_data_proc, to: :request
11
+
12
+ def body_data
13
+ r = body_data_method_name.if_present(body_str) do |v|
14
+ respond_to?(v, true) ? send(v) : body_str
15
+ end
16
+ r = response_body_data_proc.call(r) if response_body_data_proc.present?
17
+ r
18
+ end
19
+
20
+ def body_data_or_raise
21
+ raise_unless_200
22
+
23
+ body_data
24
+ end
25
+
26
+ # @return [String]
27
+ def body_str
28
+ performed.body
29
+ end
30
+
31
+ def body_str_or_raise
32
+ raise_unless_200
33
+
34
+ body_str
35
+ end
36
+
37
+ private
38
+
39
+ def body_data_from_application_json
40
+ ::JSON.parse(body_str)
41
+ end
42
+
43
+ def body_data_from_application_xml
44
+ Hash.from_xml(body_str)
45
+ end
46
+
47
+ # @return [String]
48
+ def body_data_method_name
49
+ content_type.if_present do |v|
50
+ 'body_data_from_' +
51
+ v.split(';').first.force_encoding(::Encoding::UTF_8).variableize
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacEnvs
6
+ module Http
7
+ class Response < ::StandardError
8
+ module Headers
9
+ COMMON_HEADERS = %w[Content-Type].freeze
10
+ HEADER_LINE_PARSER = /\A([^:]+):(.*)\z/.to_parser do |m|
11
+ [m[1].strip, m[2].strip]
12
+ end
13
+
14
+ def header(name)
15
+ hash_search(headers, name)
16
+ end
17
+
18
+ # @return [Hash<String, String>]
19
+ def headers
20
+ performed.headers.to_hash
21
+ end
22
+
23
+ COMMON_HEADERS.each do |header_key|
24
+ define_method header_key.underscore do
25
+ header(header_key)
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def hash_search(hash, key)
32
+ key = key.to_s.downcase
33
+ hash.each do |k, v|
34
+ return v if k.to_s.downcase == key
35
+ end
36
+ nil
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ module EacEnvs
5
+ module Http
6
+ class Response < ::StandardError
7
+ module Links
8
+ # https://www.w3.org/wiki/LinkHeader
9
+ LINKS_HEADER_NAME = 'Link'
10
+
11
+ # https://www.w3.org/wiki/LinkHeader
12
+ LINK_PARSER = /\A\<(.+)\>\s*;\s*rel\s*=\s*\"(.*)\"\z/.to_parser do |m|
13
+ [m[2], m[1]]
14
+ end
15
+
16
+ def link(rel)
17
+ hash_search(links, rel)
18
+ end
19
+
20
+ def links
21
+ header(LINKS_HEADER_NAME).if_present({}) do |v|
22
+ v.split(',').map { |w| LINK_PARSER.parse!(w.strip) }.to_h
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacEnvs
6
+ module Http
7
+ class Response < ::StandardError
8
+ module Statuses
9
+ def raise_unless_200
10
+ return nil if status == 200
11
+
12
+ raise self
13
+ end
14
+
15
+ def status
16
+ performed.status.to_i
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -9,112 +9,22 @@ require 'json'
9
9
  module EacEnvs
10
10
  module Http
11
11
  class Response < ::StandardError
12
- COMMON_HEADERS = %w[Content-Type].freeze
13
- HEADER_LINE_PARSER = /\A([^:]+):(.*)\z/.to_parser do |m|
14
- [m[1].strip, m[2].strip]
15
- end
16
-
17
- # https://www.w3.org/wiki/LinkHeader
18
- LINKS_HEADER_NAME = 'Link'
19
-
20
- # https://www.w3.org/wiki/LinkHeader
21
- LINK_PARSER = /\A\<(.+)\>\s*;\s*rel\s*=\s*\"(.*)\"\z/.to_parser do |m|
22
- [m[2], m[1]]
23
- end
24
-
25
12
  common_constructor :request
26
- delegate :response_body_data_proc, to: :request
27
-
28
- def body_data
29
- r = performed.headers['Accept'].if_present(body_str) do |v|
30
- method_name = "body_data_from_#{v.parameterize.underscore}"
31
- respond_to?(method_name) ? send(method_name) : body_str
32
- end
33
- r = response_body_data_proc.call(r) if response_body_data_proc.present?
34
- r
35
- end
36
-
37
- def body_data_or_raise
38
- raise_unless_200
39
-
40
- body_data
41
- end
42
-
43
- # @return [String]
44
- def body_str
45
- performed.body
46
- end
47
-
48
- def body_str_or_raise
49
- raise_unless_200
50
-
51
- body_str
52
- end
53
-
54
- def header(name)
55
- hash_search(headers, name)
56
- end
57
-
58
- # @return [Hash<String, String>]
59
- def headers
60
- performed.headers.to_hash
61
- end
62
-
63
- def link(rel)
64
- hash_search(links, rel)
65
- end
66
-
67
- def links
68
- header(LINKS_HEADER_NAME).if_present({}) do |v|
69
- v.split(',').map { |w| LINK_PARSER.parse!(w.strip) }.to_h
70
- end
71
- end
72
-
73
- def raise_unless_200
74
- return nil if status == 200
75
-
76
- raise self
77
- end
78
-
79
- def status
80
- performed.status.to_i
81
- end
82
-
83
13
  delegate :url, to: :request
84
14
 
85
15
  def to_s
86
16
  "URL: #{url}\nStatus: #{status}\nBody:\n\n#{body_str}"
87
17
  end
88
18
 
89
- COMMON_HEADERS.each do |header_key|
90
- define_method header_key.underscore do
91
- header(header_key)
92
- end
93
- end
94
-
95
19
  private
96
20
 
97
- def body_data_from_application_json
98
- ::JSON.parse(body_str)
99
- end
100
-
101
- def body_data_from_application_xml
102
- Hash.from_xml(body_str)
103
- end
104
-
105
- def hash_search(hash, key)
106
- key = key.to_s.downcase
107
- hash.each do |k, v|
108
- return v if k.to_s.downcase == key
109
- end
110
- nil
111
- end
112
-
113
21
  def performed
114
22
  @performed ||= request.faraday_response
115
23
  rescue ::Faraday::Error
116
24
  raise ::EacEnvs::Http::Error
117
25
  end
26
+
27
+ require_sub __FILE__, include_modules: true
118
28
  end
119
29
  end
120
30
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module EacEnvs
4
4
  module Http
5
- VERSION = '0.3.1'
5
+ VERSION = '0.3.2'
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.3.1
4
+ version: 0.3.2
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-04-30 00:00:00.000000000 Z
11
+ date: 2023-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_fs
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.112'
33
+ version: '0.116'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.112'
40
+ version: '0.116'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: faraday
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -168,6 +168,10 @@ files:
168
168
  - lib/eac_envs/http/request/body_fields.rb
169
169
  - lib/eac_envs/http/request/faraday_connection.rb
170
170
  - lib/eac_envs/http/response.rb
171
+ - lib/eac_envs/http/response/body.rb
172
+ - lib/eac_envs/http/response/headers.rb
173
+ - lib/eac_envs/http/response/links.rb
174
+ - lib/eac_envs/http/response/statuses.rb
171
175
  - lib/eac_envs/http/rspec.rb
172
176
  - lib/eac_envs/http/rspec/echo_server.rb
173
177
  - lib/eac_envs/http/rspec/echo_server/request_processor.rb