eac_envs-http 0.3.1 → 0.3.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: 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