rb-net_http-client 0.0.4

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.
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'client/client'
4
+ require_relative 'version'
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../core/core'
4
+ require_relative 'schema'
5
+
6
+ module NetHTTP
7
+ module Request
8
+ module Ext
9
+ def call_web_service(opts = {})
10
+ logger = Core.assign_logger(self.logger ||= opts[:logger])
11
+
12
+ Core.schema_validation(opts, NetHTTP::Request::Schema, logger) unless opts[:enforce_schema_validation] == false
13
+
14
+ method = (opts[:method] ||= opts[:req_method] ||= opts[:request_method] ||= 'post').to_s.upcase
15
+ uri = Core.parse_uri(opts[:uri] ||= opts[:url] ||= self.uri)
16
+ path = opts[:path] ||= opts[:req_path] ||= opts[:request_path] ||= opts[:path] ||= uri.path ||= self.path
17
+ path = (path + '?' + uri.query) unless uri.query.nil? || path.include?('?')
18
+ headers = opts[:headers] ||= opts[:req_headers] ||= opts[:request_headers] ||= {}
19
+ body = opts[:body] ||= opts[:req_body] ||= opts[:request_body] ||= nil
20
+
21
+ resp = case method
22
+ when 'DELETE'
23
+ logger.debug('Request Method => ' + method)
24
+ logger.debug('Request Host => ' + uri.host.to_s)
25
+ logger.debug('Request Path => ' + path)
26
+ delete(path)
27
+ when 'GET'
28
+ logger.debug('Request Method => ' + method)
29
+ logger.debug('Request Host => ' + uri.host.to_s)
30
+ logger.debug('Request Path => ' + path)
31
+ logger.debug('Request Headers =>')
32
+ logger.debug(headers)
33
+ get(path, headers)
34
+ when 'POST'
35
+ logger.debug('Request Method => ' + method)
36
+ logger.debug('Request Host => ' + uri.host.to_s)
37
+ logger.debug('Request Path => ' + path)
38
+ logger.debug('Request Headers =>')
39
+ logger.debug(headers)
40
+ logger.debug('Request Body =>')
41
+ logger.debug(body)
42
+ post(path, body, headers)
43
+ when 'POST_FORM', 'POST_FORM_DATA'
44
+ logger.debug('Request Method => ' + method)
45
+ logger.debug('Request Host => ' + uri.host.to_s)
46
+ logger.debug('Request Path => ' + path)
47
+ logger.debug('Request Headers =>')
48
+ logger.debug(headers)
49
+ logger.debug('Request Body =>')
50
+ logger.debug(URI.encode_www_form(body))
51
+ post(uri, URI.encode_www_form(body), headers)
52
+ when 'PUT'
53
+ logger.debug('Request Method => ' + method)
54
+ logger.debug('Request Host => ' + uri.host.to_s)
55
+ logger.debug('Request Path => ' + path)
56
+ logger.debug('Request Headers =>')
57
+ logger.debug(headers)
58
+ logger.debug('Request Body =>')
59
+ logger.debug(body)
60
+ put(path, body, headers)
61
+ else
62
+ logger.debug("Request method => '#{method}' not yet supported.")
63
+ raise "Request method => '#{method}' not yet supported."
64
+ end
65
+ logger.debug('Response Code => ' + resp.code)
66
+ logger.debug('Response Headers => ')
67
+ logger.debug(resp.headers)
68
+ logger.debug('Response Body => ')
69
+ logger.debug(resp.body)
70
+ resp
71
+ end
72
+
73
+ alias call_api call_web_service
74
+ alias call_service call_web_service
75
+ alias execute_request call_web_service
76
+ alias send_request call_web_service
77
+ alias submit_request call_web_service
78
+ end
79
+ end
80
+ end
81
+
82
+ module Net
83
+ class HTTP
84
+ include NetHTTP::Core
85
+ include NetHTTP::Request::Ext
86
+ end
87
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'dry-validation'
4
+
5
+ module NetHTTP
6
+ module Request
7
+ Schema = Dry::Validation.Schema do
8
+ optional(:req_method).filled(type?: String)
9
+ optional(:method).filled(type?: String)
10
+ optional(:req_headers).maybe(type?: Hash)
11
+ optional(:headers).maybe(type?: Hash)
12
+ optional(:req_body).maybe
13
+ optional(:body).maybe
14
+
15
+ rule(if_url_and_uri_are_nil_must_provide_path: [:uri, :url, :path]) do |uri, url, path|
16
+ uri.empty?.then(url.empty?.then(path.filled?))
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+ require 'nokogiri'
5
+ require 'ostruct'
6
+ require_relative '../core/core'
7
+ require_relative '../core/utilities'
8
+
9
+ module NetHTTP
10
+ module Response
11
+ module Ext
12
+ def resp_code
13
+ code
14
+ end
15
+
16
+ alias response_code resp_code
17
+
18
+ def headers
19
+ resp_headers = {}
20
+ headers = to_hash
21
+ headers.each do |key, value|
22
+ resp_headers[key] = value.flatten[0].to_s
23
+ end
24
+ end
25
+
26
+ alias resp_headers headers
27
+ alias response_headers headers
28
+
29
+ def headers_hash
30
+ NetHTTP::Core::Utilities.convert_hash_keys(
31
+ object: headers,
32
+ format: 'snake',
33
+ type: 'symbol'
34
+ )
35
+ end
36
+
37
+ alias resp_headers_hash headers_hash
38
+ alias response_headers_hash headers_hash
39
+
40
+ def headers_os
41
+ JSON.parse(headers_hash.to_json, object_class: OpenStruct)
42
+ end
43
+
44
+ alias resp_headers_os headers_os
45
+ alias response_headers_os headers_os
46
+ alias headers_open_struct headers_os
47
+ alias resp_headers_struct headers_os
48
+ alias response_headers_open_struct headers_os
49
+
50
+ def resp_body
51
+ body
52
+ end
53
+
54
+ alias response_body resp_body
55
+
56
+ def body_hash
57
+ begin
58
+ return NetHTTP::Core::Utilities.json_2_hash(body, 'symbol', logger) if valid_json?
59
+ rescue JSON::ParserError => err
60
+ logger.debug(err)
61
+ end
62
+ begin
63
+ return NetHTTP::Core::Utilities.xml_2_hash(body, 'symbol', logger) if valid_xml?
64
+ rescue Nokogiri::XML::SyntaxError => err
65
+ logger.debug(err)
66
+ end
67
+ begin
68
+ # TODO: update this to work if necessary
69
+ # probably makes more sense to parse HTML using nokogiri
70
+ return NetHTTP::Core::Utilities.xml_2_hash(body, 'symbol', logger) if valid_html?
71
+ rescue Nokogiri::XML::SyntaxError => err
72
+ logger.debug(err)
73
+ end
74
+
75
+ {}
76
+ end
77
+
78
+ alias resp_body_hash body_hash
79
+ alias response_body_hash body_hash
80
+
81
+ def body_os
82
+ JSON.parse(body_hash.to_json, object_class: OpenStruct)
83
+ end
84
+
85
+ alias resp_body_os body_os
86
+ alias response_body_os body_os
87
+ alias body_open_struct body_os
88
+ alias resp_body_open_struct body_os
89
+ alias response_body_open_struct body_os
90
+
91
+ def valid_json?
92
+ NetHTTP::Core::Utilities.valid_json?(body, logger)
93
+ end
94
+
95
+ def valid_xml?
96
+ NetHTTP::Core::Utilities.valid_xml?(body, logger)
97
+ end
98
+
99
+ def valid_html?
100
+ NetHTTP::Core::Utilities.valid_html?(body, logger)
101
+ end
102
+ end
103
+ end
104
+ end
105
+
106
+ module Net
107
+ class HTTPResponse
108
+ include NetHTTP::Core
109
+ include NetHTTP::Response::Ext
110
+ end
111
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NetHTTP
4
+ VERSION = '0.0.4'
5
+ end
@@ -0,0 +1,7 @@
1
+ require_relative '../../../spec_helper'
2
+
3
+ describe NetHTTP::Client::Ext do
4
+ # it '' do
5
+ #
6
+ # end
7
+ end
@@ -0,0 +1,7 @@
1
+ require_relative '../../../spec_helper'
2
+
3
+ describe 'NetHTTP.client' do
4
+ # it '' do
5
+ #
6
+ # end
7
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ describe NetHTTP::Core do
4
+ it 'returns schema validation errors when invalid options are used to instantiate a NetHTTP client' do
5
+ client_opts = {}
6
+
7
+ expect { NetHTTP.client(client_opts) } .to raise_error('NetHTTP::Core::Error - schema input validation failed.')
8
+ end
9
+
10
+ it 'returns schema validation errors when invalid options are used to instantiate a NetHTTP client with logger' do
11
+ client_opts = {}
12
+ logger = Logger.new(STDOUT)
13
+ logger.level = Logger::INFO
14
+ client_opts[:logger] = logger
15
+
16
+ expect { NetHTTP.client(client_opts) } .to raise_error('NetHTTP::Core::Error - schema input validation failed.')
17
+ end
18
+ end
@@ -0,0 +1,342 @@
1
+ require_relative '../../../spec_helper'
2
+ describe 'NetHTTP::Request::Ext.call_web_service' do
3
+ it 'performs a GET request from http://eelslap.com/' do
4
+ client_opts = {}
5
+ client_opts[:uri] = 'http://eelslap.com/'
6
+ client_opts[:use_ssl] = false
7
+
8
+ client = NetHTTP.client(client_opts)
9
+
10
+ request_opts = {}
11
+ request_opts[:req_headers] = {}
12
+ request_opts[:req_method] = 'get'
13
+ request_opts[:req_path] = '/'
14
+
15
+ resp = client.call_web_service(request_opts)
16
+
17
+ expect(resp.code).to eq('200')
18
+ expect(resp.resp_code).to eq('200')
19
+ expect(resp.headers.empty?).to eq(false)
20
+ expect(resp.resp_headers.empty?).to eq(false)
21
+ expect(resp.headers_hash.empty?).to eq(false)
22
+ expect(resp.headers_hash.class).to eq(Hash)
23
+ expect(resp.resp_headers_hash.empty?).to eq(false)
24
+ expect(resp.resp_headers_hash.class).to eq(Hash)
25
+ expect(resp.valid_html?).to eq(true)
26
+ expect(NetHTTP::Core.valid_html?(resp.body, nil)).to eq(true)
27
+ expect(resp.body.empty?).to eq(false)
28
+ expect(resp.resp_body.empty?).to eq(false)
29
+ expect(resp.body_hash).to eq({})
30
+ expect(resp.body_hash.class).to eq(Hash)
31
+ expect(resp.resp_body_hash).to eq({})
32
+ expect(resp.resp_body_hash.class).to eq(Hash)
33
+ end
34
+
35
+ it 'performs a GET request from http://eelslap.com/ with logger' do
36
+ client_opts = {}
37
+ client_opts[:uri] = 'http://eelslap.com/'
38
+ client_opts[:use_ssl] = false
39
+
40
+ logger = Logger.new(STDOUT)
41
+ logger.level = Logger::DEBUG
42
+ client_opts[:logger] = logger
43
+
44
+ client = NetHTTP.client(client_opts)
45
+
46
+ request_opts = {}
47
+ request_opts[:logger] = client.logger
48
+ request_opts[:req_headers] = {}
49
+ request_opts[:req_method] = 'get'
50
+ request_opts[:req_path] = '/'
51
+
52
+ resp = client.call_web_service(request_opts)
53
+
54
+ expect(resp.code).to eq('200')
55
+ expect(resp.resp_code).to eq('200')
56
+ expect(resp.headers.empty?).to eq(false)
57
+ expect(resp.resp_headers.empty?).to eq(false)
58
+ expect(resp.headers_hash.empty?).to eq(false)
59
+ expect(resp.headers_hash.class).to eq(Hash)
60
+ expect(resp.resp_headers_hash.empty?).to eq(false)
61
+ expect(resp.resp_headers_hash.class).to eq(Hash)
62
+ expect(resp.valid_html?).to eq(true)
63
+ expect(resp.body.empty?).to eq(false)
64
+ expect(resp.resp_body.empty?).to eq(false)
65
+ expect(resp.body_hash).to eq({})
66
+ expect(resp.body_hash.class).to eq(Hash)
67
+ expect(resp.resp_body_hash).to eq({})
68
+ expect(resp.resp_body_hash.class).to eq(Hash)
69
+ end
70
+
71
+ it 'performs a GET request from http://eelslap.com/ without uri' do
72
+ client_opts = {}
73
+ client_opts[:host] = 'eelslap.com'
74
+ client_opts[:port] = 80
75
+ client_opts[:path] = '/'
76
+ client_opts[:use_ssl] = false
77
+
78
+ logger = Logger.new(STDOUT)
79
+ logger.level = Logger::INFO
80
+ client_opts[:logger] = logger
81
+
82
+ client = NetHTTP.client(client_opts)
83
+
84
+ request_opts = {}
85
+ request_opts[:logger] = client.logger
86
+ request_opts[:req_headers] = {}
87
+ request_opts[:req_method] = 'get'
88
+ request_opts[:req_path] = '/'
89
+
90
+ resp = client.call_web_service(request_opts)
91
+
92
+ logger.debug('Response Code => ' + resp.code)
93
+ logger.debug('Response Headers =>')
94
+ logger.debug(resp.headers)
95
+ logger.debug('')
96
+ logger.debug('Response Body =>')
97
+ logger.debug(resp.body)
98
+ logger.debug('')
99
+
100
+ expect(resp.code).to eq('200')
101
+ expect(resp.resp_code).to eq('200')
102
+ expect(resp.headers.empty?).to eq(false)
103
+ expect(resp.resp_headers.empty?).to eq(false)
104
+ expect(resp.headers_hash.empty?).to eq(false)
105
+ expect(resp.headers_hash.class).to eq(Hash)
106
+ expect(resp.resp_headers_hash.empty?).to eq(false)
107
+ expect(resp.resp_headers_hash.class).to eq(Hash)
108
+ expect(resp.valid_html?).to eq(true)
109
+ expect(resp.body.empty?).to eq(false)
110
+ expect(resp.resp_body.empty?).to eq(false)
111
+ expect(resp.body_hash).to eq({})
112
+ expect(resp.body_hash.class).to eq(Hash)
113
+ expect(resp.resp_body_hash).to eq({})
114
+ expect(resp.resp_body_hash.class).to eq(Hash)
115
+ end
116
+
117
+ it 'performs a POST request for a valid oAuth token from ESG' do
118
+ client_opts = {}
119
+ client_opts[:uri] = 'https://esg-qa-oauth2-internal.fmr.com/as/resourceOwner'
120
+ client_opts[:use_ssl] = true
121
+
122
+ logger = Logger.new(STDOUT)
123
+ logger.level = Logger::INFO
124
+ client_opts[:logger] = logger
125
+
126
+ client = NetHTTP.client(client_opts)
127
+
128
+ request_opts = {}
129
+ request_opts[:logger] = client.logger
130
+ request_opts[:req_method] = 'post'
131
+ request_opts[:req_headers] = {'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8'}
132
+
133
+ user_id = ENV['USER_ID']
134
+ password = ENV['PASSWORD']
135
+ client_id = 'd6bcd5e1-29d7-4ec0-9b96-215b3a317fd6'
136
+ client_secret = 'e391e6aa-4d60-4470-b351-0f84f11495a8'
137
+ grant_type = 'password'
138
+ scope = 'AppIdClaimsTrust'
139
+ request_opts[:req_body] = "username=#{user_id}&password=#{password}&client_id=#{client_id}&client_secret=#{client_secret}&grant_type=#{grant_type}&scope=#{scope}"
140
+ request_opts[:req_path] = '/as/resourceOwner'
141
+
142
+ resp = client.call_web_service(request_opts)
143
+
144
+ expect(resp.code).to eq('200')
145
+ expect(resp.resp_code).to eq('200')
146
+ expect(resp.headers.empty?).to eq(false)
147
+ expect(resp.resp_headers.empty?).to eq(false)
148
+ expect(resp.headers_hash.empty?).to eq(false)
149
+ expect(resp.headers_hash.class).to eq(Hash)
150
+ expect(resp.resp_headers_hash.empty?).to eq(false)
151
+ expect(resp.resp_headers_hash.class).to eq(Hash)
152
+ expect(resp.valid_json?).to eq(true)
153
+ expect(resp.body.empty?).to eq(false)
154
+ expect(resp.resp_body.empty?).to eq(false)
155
+ expect(resp.body_hash.empty?).to eq(false)
156
+ expect(resp.body_hash.class).to eq(Hash)
157
+ expect(resp.resp_body_hash.empty?).to eq(false)
158
+ expect(resp.resp_body_hash.class).to eq(Hash)
159
+ end
160
+
161
+ it 'performs a POST request for a valid oAuth token from ESG with scheme without uri' do
162
+ client_opts = {}
163
+ client_opts[:use_ssl] = true
164
+ client_opts[:scheme] = 'https'
165
+ client_opts[:host] = 'esg-qa-oauth2-internal.fmr.com'
166
+ client_opts[:path] = '/as/resourceOwner'
167
+
168
+ logger = Logger.new(STDOUT)
169
+ logger.level = Logger::INFO
170
+ client_opts[:logger] = logger
171
+
172
+ client = NetHTTP.client(client_opts)
173
+
174
+ request_opts = {}
175
+ request_opts[:logger] = client.logger
176
+ request_opts[:req_method] = 'post'
177
+ request_opts[:req_headers] = {'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8'}
178
+
179
+ user_id = ENV['USER_ID']
180
+ password = ENV['PASSWORD']
181
+ client_id = 'd6bcd5e1-29d7-4ec0-9b96-215b3a317fd6'
182
+ client_secret = 'e391e6aa-4d60-4470-b351-0f84f11495a8'
183
+ grant_type = 'password'
184
+ scope = 'AppIdClaimsTrust'
185
+ request_opts[:req_body] = "username=#{user_id}&password=#{password}&client_id=#{client_id}&client_secret=#{client_secret}&grant_type=#{grant_type}&scope=#{scope}"
186
+ request_opts[:req_path] = '/as/resourceOwner'
187
+
188
+ resp = client.call_web_service(request_opts)
189
+
190
+ expect(resp.code).to eq('200')
191
+ expect(resp.resp_code).to eq('200')
192
+ expect(resp.headers.empty?).to eq(false)
193
+ expect(resp.resp_headers.empty?).to eq(false)
194
+ expect(resp.headers_hash.empty?).to eq(false)
195
+ expect(resp.headers_hash.class).to eq(Hash)
196
+ expect(resp.resp_headers_hash.empty?).to eq(false)
197
+ expect(resp.resp_headers_hash.class).to eq(Hash)
198
+ expect(resp.valid_json?).to eq(true)
199
+ expect(resp.body.empty?).to eq(false)
200
+ expect(resp.resp_body.empty?).to eq(false)
201
+ expect(resp.body_hash.empty?).to eq(false)
202
+ expect(resp.body_hash.class).to eq(Hash)
203
+ expect(resp.resp_body_hash.empty?).to eq(false)
204
+ expect(resp.resp_body_hash.class).to eq(Hash)
205
+ end
206
+
207
+ it 'performs a POST request for a valid oAuth token from ESG without scheme without uri' do
208
+ client_opts = {}
209
+ client_opts[:use_ssl] = true
210
+ client_opts[:host] = 'esg-qa-oauth2-internal.fmr.com'
211
+ client_opts[:port] = 443
212
+ client_opts[:path] = '/as/resourceOwner'
213
+
214
+ logger = Logger.new(STDOUT)
215
+ logger.level = Logger::INFO
216
+ client_opts[:logger] = logger
217
+
218
+ client = NetHTTP.client(client_opts)
219
+
220
+ request_opts = {}
221
+ request_opts[:logger] = client.logger
222
+ request_opts[:req_method] = 'post'
223
+ request_opts[:req_headers] = {'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8'}
224
+
225
+ user_id = ENV['USER_ID']
226
+ password = ENV['PASSWORD']
227
+ client_id = 'd6bcd5e1-29d7-4ec0-9b96-215b3a317fd6'
228
+ client_secret = 'e391e6aa-4d60-4470-b351-0f84f11495a8'
229
+ grant_type = 'password'
230
+ scope = 'AppIdClaimsTrust'
231
+ request_opts[:req_body] = "username=#{user_id}&password=#{password}&client_id=#{client_id}&client_secret=#{client_secret}&grant_type=#{grant_type}&scope=#{scope}"
232
+ request_opts[:req_path] = '/as/resourceOwner'
233
+
234
+ resp = client.call_web_service(request_opts)
235
+
236
+ expect(resp.code).to eq('200')
237
+ expect(resp.resp_code).to eq('200')
238
+ expect(resp.headers.empty?).to eq(false)
239
+ expect(resp.resp_headers.empty?).to eq(false)
240
+ expect(resp.headers_hash.empty?).to eq(false)
241
+ expect(resp.headers_hash.class).to eq(Hash)
242
+ expect(resp.resp_headers_hash.empty?).to eq(false)
243
+ expect(resp.resp_headers_hash.class).to eq(Hash)
244
+ expect(resp.valid_json?).to eq(true)
245
+ expect(resp.body.empty?).to eq(false)
246
+ expect(resp.resp_body.empty?).to eq(false)
247
+ expect(resp.body_hash.empty?).to eq(false)
248
+ expect(resp.body_hash.class).to eq(Hash)
249
+ expect(resp.resp_body_hash.empty?).to eq(false)
250
+ expect(resp.resp_body_hash.class).to eq(Hash)
251
+ end
252
+
253
+ it 'performs a POST request to MAUI to retrieve account users using ssl and cert' do
254
+ client_opts = {}
255
+ client_opts[:uri] = 'https://alpha-mmk.fmr.com:9980/XML_FEB_S_A'
256
+ client_opts[:ssl_path] = '/apps/security'
257
+ client_opts[:ca_file] = 'cacert.pem'
258
+ client_opts[:pkcs12_file] = 'dev-b2b-fidcom.p12'
259
+ client_opts[:pkcs12_passphrase] = ENV['PKCS12_PASSPHRASE']
260
+ client_opts[:verify_mode] = OpenSSL::SSL::VERIFY_NONE
261
+
262
+ # logger = Logger.new(STDOUT)
263
+ # logger.level = Logger::DEBUG
264
+ # client_opts[:logger] = logger
265
+
266
+ client = NetHTTP.client(client_opts)
267
+
268
+ req_opts = {}
269
+ req_opts[:req_method] = 'post'
270
+ req_opts[:req_headers] = {'Content-Type' => 'application/xml'}
271
+ req_opts[:req_body] = '<?xml version="1.0" encoding="utf-16"?>
272
+ <DCLCUST0_REQUEST>
273
+ <PSL_VIEW>DCLCUST0.VIEW</PSL_VIEW>
274
+ <REQUESTOR_ID>024300218</REQUESTOR_ID>
275
+ <PRODUCT_ID>W</PRODUCT_ID>
276
+ <MESSAGE_TYPE>F</MESSAGE_TYPE>
277
+ <FUNCTION_INDICATOR>V</FUNCTION_INDICATOR>
278
+ <PARTITION_ID>RETAIL</PARTITION_ID>
279
+ <RELATIONSHIP_TYPE/>
280
+ <INCLUDE_4P_REL>Y</INCLUDE_4P_REL>
281
+ <PRM_KEY_TYPE>B</PRM_KEY_TYPE>
282
+ <PRIMARY_KEY>X01000833</PRIMARY_KEY>
283
+ <RETURN_PRODUCT_G_NBR_IND/>
284
+ <INPUT_VIEW>
285
+ <PAGING>
286
+ <PAGING_MAX_COUNT>All</PAGING_MAX_COUNT>
287
+ <PAGING_DIRECTION>F</PAGING_DIRECTION>
288
+ <PAGING_CONTINUATION_KEY/>
289
+ </PAGING>
290
+ </INPUT_VIEW>
291
+ </DCLCUST0_REQUEST>'
292
+
293
+ resp = client.call_web_service(req_opts)
294
+
295
+ expect(resp.code).to eq('200')
296
+ expect(resp.resp_code).to eq('200')
297
+ expect(resp.headers.empty?).to eq(false)
298
+ expect(resp.resp_headers.empty?).to eq(false)
299
+ expect(resp.headers_hash.empty?).to eq(false)
300
+ expect(resp.headers_hash.class).to eq(Hash)
301
+ expect(resp.resp_headers_hash.empty?).to eq(false)
302
+ expect(resp.resp_headers_hash.class).to eq(Hash)
303
+ expect(resp.valid_xml?).to eq(true)
304
+ expect(resp.body.empty?).to eq(false)
305
+ expect(resp.resp_body.empty?).to eq(false)
306
+ expect(resp.body_hash.empty?).to eq(false)
307
+ expect(resp.body_hash.class).to eq(Hash)
308
+ expect(resp.resp_body_hash.empty?).to eq(false)
309
+ expect(resp.resp_body_hash.class).to eq(Hash)
310
+ end
311
+ it 'performs a GET request from http://eelslap.com/ with query' do
312
+ client_opts = {}
313
+ client_opts[:uri] = 'http://eelslap.com/?req=aaaa'
314
+ client_opts[:use_ssl] = false
315
+
316
+ client = NetHTTP.client(client_opts)
317
+
318
+ request_opts = {}
319
+ request_opts[:req_headers] = {}
320
+ request_opts[:req_method] = 'get'
321
+ request_opts[:req_path] = '/?req=aaaa'
322
+ resp = client.call_web_service(request_opts)
323
+
324
+ expect(resp.code).to eq('200')
325
+ expect(resp.resp_code).to eq('200')
326
+ expect(resp.headers.empty?).to eq(false)
327
+ expect(resp.resp_headers.empty?).to eq(false)
328
+ expect(resp.headers_hash.empty?).to eq(false)
329
+ expect(resp.headers_hash.class).to eq(Hash)
330
+ expect(resp.resp_headers_hash.empty?).to eq(false)
331
+ expect(resp.resp_headers_hash.class).to eq(Hash)
332
+ expect(resp.valid_html?).to eq(true)
333
+ expect(NetHTTP::Core.valid_html?(resp.body, nil)).to eq(true)
334
+ expect(resp.body.empty?).to eq(false)
335
+ expect(resp.resp_body.empty?).to eq(false)
336
+ expect(resp.body_hash).to eq({})
337
+ expect(resp.body_hash.class).to eq(Hash)
338
+ expect(resp.resp_body_hash).to eq({})
339
+ expect(resp.resp_body_hash.class).to eq(Hash)
340
+ expect(resp.resp_body_hash.class).to eq(Hash)
341
+ end
342
+ end