spaceborne 0.1.22 → 0.1.23

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: 23b0e8ffb074901b03f8e7d2d67cbf294108c2559fabef084ac7c2949e85f087
4
- data.tar.gz: bb2cbbb92cdbc25782fbcb65a80c6ab4a8ac61e6fec0c3580ea39ba5e2fa7093
3
+ metadata.gz: 39591d03867f81e331613646b71adc30e118a4b74b7b69d2b5217f9dfef1a4fb
4
+ data.tar.gz: 1b82c816bbacd0207a0ad4e19f5ba548c0807fcbab33e210655de9c40e27eda3
5
5
  SHA512:
6
- metadata.gz: 4f8e39ba862e2b7877061b3dd34f6c33fb8f36c966098ce8002c4575c9d2d926bcb4c03dbb38d309d626dbecb96617f0eb161b86c29a17af0844be15e4b79e8c
7
- data.tar.gz: c96f5aa29e78e05d0f384bdd938fb33610719fdfe29177a38c022771e421d306d8d5fdc38ec3a38493c0b10e3dd1ed86c408ad09b07d6eac270364ce0e06be1b
6
+ metadata.gz: 5c1d32293ddeac46fbd0fb20897b925ca71423a5c598255ef4353cfc41c2ebf987f7ab7448f0cf57af345574c77c707c631fa012a1b8e209a263f6a347936336
7
+ data.tar.gz: 2d53f4280e0d461d4cd3d1610e2e4ff95d59454b276d29c61658438b844d60d902336ce55dcd40213838c933ec3c2992fea997d149c704a8432853f3c3baf5ff
data/lib/spaceborne.rb CHANGED
@@ -33,6 +33,7 @@ module Spaceborne
33
33
 
34
34
  def response_body
35
35
  return '' if response.request.method.casecmp('head').zero?
36
+
36
37
  str = if json?(response.headers)
37
38
  " JSON_BODY\n#{JSON.pretty_generate(json_body)}\n"
38
39
  else
@@ -50,6 +51,7 @@ module Spaceborne
50
51
  yield
51
52
  rescue Exception => e
52
53
  raise e unless response
54
+
53
55
  e.message << request_info
54
56
  raise e
55
57
  end
@@ -87,17 +89,20 @@ module Airborne
87
89
  headers = base_headers.merge(options[:headers] || {})
88
90
  headers[:no_restclient_headers] = true
89
91
  return headers unless local[:is_hash]
92
+
90
93
  headers.delete('Content-Type') if options[:nonjson_data]
91
94
  headers
92
95
  end
93
96
 
94
97
  def handle_proxy(_options, local)
95
98
  return unless local[:proxy]
99
+
96
100
  RestClient.proxy = local[:proxy]
97
101
  end
98
102
 
99
103
  def calc_body(options, local)
100
104
  return '' unless options[:body]
105
+
101
106
  if local[:nonjson_data] || !local[:is_hash]
102
107
  options[:body]
103
108
  else
@@ -120,6 +125,8 @@ module Airborne
120
125
  hdrs = calc_headers(options, local_options)
121
126
  @request_body = calc_body(options, local_options)
122
127
  send_restclient(method, get_url(url), @request_body, hdrs)
128
+ rescue RestClient::ServerBrokeConnection => e
129
+ raise e
123
130
  rescue RestClient::Exception => e
124
131
  e.response
125
132
  end
@@ -127,7 +134,7 @@ module Airborne
127
134
  private
128
135
 
129
136
  def base_headers
130
- { "Content-Type" => 'application/json' }
137
+ { 'Content-Type' => 'application/json' }
131
138
  .merge(Airborne.configuration.headers || {})
132
139
  end
133
140
  end
@@ -186,8 +193,37 @@ module Airborne
186
193
 
187
194
  # extension to handle hash value checking
188
195
  module PathMatcher
196
+ def do_process_json(part, json)
197
+ json = process_json(part, json)
198
+ rescue StandardError
199
+ raise PathError,
200
+ "Expected #{json.class}\nto be an object with property #{part}"
201
+ end
202
+
203
+ def handle_container(json, &block)
204
+ case json.class.name
205
+ when 'Array'
206
+ expect_all(json, &block)
207
+ when 'Hash'
208
+ json.each do |k, _v|
209
+ yield json[k]
210
+ end
211
+ end
212
+ end
213
+
214
+ def handle_type(type, path, json, &block)
215
+ if type == '*'
216
+ handle_container(json, &block)
217
+ elsif type == '?'
218
+ expect_one(path, json, &block)
219
+ else
220
+ yield json
221
+ end
222
+ end
223
+
189
224
  def get_by_path(path, json, &block)
190
225
  raise PathError, "Invalid Path, contains '..'" if /\.\./ =~ path
226
+
191
227
  type = false
192
228
  parts = path.to_s.split('.')
193
229
  parts.each_with_index do |part, index|
@@ -199,31 +235,14 @@ module Airborne
199
235
  end
200
236
  next
201
237
  end
202
- begin
203
- json = process_json(part, json)
204
- rescue StandardError
205
- raise PathError,
206
- "Expected #{json.class}\nto be an object with property #{part}"
207
- end
208
- end
209
- if type == '*'
210
- case json.class.name
211
- when 'Array'
212
- expect_all(json, &block)
213
- when 'Hash'
214
- json.each do |k, _v|
215
- yield json[k]
216
- end
217
- end
218
- elsif type == '?'
219
- expect_one(path, json, &block)
220
- else
221
- yield json
238
+ json = do_process_json(part, json)
222
239
  end
240
+ handle_type(type, path, json, &block)
223
241
  end
224
242
 
225
243
  def ensure_array_or_hash(path, json)
226
244
  return if json.class == Array || json.class == Hash
245
+
227
246
  raise RSpec::Expectations::ExpectationNotMetError,
228
247
  "Expected #{path} to be array or hash, got #{json.class}"\
229
248
  ' from JSON response'
@@ -1,3 +1,3 @@
1
1
  module Spaceborne
2
- VERSION = '0.1.22'.freeze
2
+ VERSION = '0.1.23'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spaceborne
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.22
4
+ version: 0.1.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keith Williams
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-02 00:00:00.000000000 Z
11
+ date: 2019-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport