hyperion_http 0.1.4 → 0.1.5
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 +4 -4
- data/Gemfile +0 -1
- data/hyperion_http.gemspec +1 -0
- data/lib/hyperion/aux/logger.rb +8 -33
- data/lib/hyperion/aux/version.rb +1 -1
- data/lib/hyperion/formats.rb +2 -1
- data/lib/hyperion/headers.rb +2 -1
- data/spec/lib/hyperion/headers_spec.rb +6 -0
- data/spec/lib/hyperion/logger_spec.rb +11 -6
- data/spec/lib/{superion_spec.rb → hyperion/requestor_spec.rb} +0 -0
- data/spec/lib/hyperion_spec.rb +16 -15
- data/spec/spec_helper.rb +1 -0
- data/spec/support/core_helpers.rb +8 -0
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c24c3452a5f16a5347b6d0ab930e01744a27e9fc
|
4
|
+
data.tar.gz: 80d605302f41e1872f745cab3563657e183cdfb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b83b365370c05091223d03c430aa2d998b629313644ece52dec7f95d0fa7e6c13e32e2299bb97b2dadf3f8499aa8cbe80d59c64225301b094a4cde5bb735922a
|
7
|
+
data.tar.gz: 66b8e4a08fbd601368020ecc199d7be76616316cb0b36dbc38aa7839ea5ba2be7f65ccad2673b7818c4ae06ae1856f22a103cbc13aa00abbe13927dbc3b1e0c9
|
data/Gemfile
CHANGED
data/hyperion_http.gemspec
CHANGED
data/lib/hyperion/aux/logger.rb
CHANGED
@@ -1,54 +1,29 @@
|
|
1
|
+
require 'logatron/logatron'
|
2
|
+
|
1
3
|
class Hyperion
|
2
4
|
module Logger
|
3
|
-
class << self
|
4
|
-
attr_accessor :level
|
5
|
-
end
|
6
5
|
|
7
6
|
def logger
|
8
|
-
|
7
|
+
Logatron
|
9
8
|
end
|
10
9
|
|
11
10
|
def with_request_logging(route, uri, headers)
|
12
|
-
|
13
|
-
|
14
|
-
begin
|
11
|
+
Logatron.log(msg: "Hyperion #{route.method.to_s.upcase} #{uri}") do |logger|
|
12
|
+
log_headers(headers, logger)
|
15
13
|
yield
|
16
|
-
ensure
|
17
|
-
stop = Time.now
|
18
|
-
log_request_end(((stop - start) * 1000).round)
|
19
14
|
end
|
20
15
|
end
|
21
16
|
|
22
17
|
def log_stub(rule)
|
23
18
|
mr = rule.mimic_route
|
24
19
|
logger.debug "Stubbed #{mr.method.to_s.upcase} #{mr.path}"
|
25
|
-
log_headers(rule.headers)
|
20
|
+
log_headers(rule.headers, logger)
|
26
21
|
end
|
27
22
|
|
28
23
|
private
|
29
24
|
|
30
|
-
def
|
31
|
-
logger.
|
32
|
-
log_headers(headers)
|
33
|
-
end
|
34
|
-
|
35
|
-
def log_request_end(ms)
|
36
|
-
logger.debug "Completed in #{ms}ms"
|
37
|
-
logger.debug ''
|
38
|
-
end
|
39
|
-
|
40
|
-
def rails_logger_available?
|
41
|
-
Kernel.const_defined?(:Rails) && !Rails.logger.nil?
|
42
|
-
end
|
43
|
-
|
44
|
-
def default_logger
|
45
|
-
logger = ::Logger.new($stdout)
|
46
|
-
logger.level = Hyperion::Logger.level || ::Logger::DEBUG
|
47
|
-
logger
|
48
|
-
end
|
49
|
-
|
50
|
-
def log_headers(headers)
|
51
|
-
headers.each_pair { |k, v| logger.debug " #{k}: #{v}" unless k == 'Expect' }
|
25
|
+
def log_headers(headers, logger)
|
26
|
+
headers.each_pair { |k, v| logger.info " #{k}: #{v}" unless k == 'Expect' }
|
52
27
|
end
|
53
28
|
end
|
54
29
|
end
|
data/lib/hyperion/aux/version.rb
CHANGED
data/lib/hyperion/formats.rb
CHANGED
data/lib/hyperion/headers.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
require 'hyperion/formats'
|
2
|
+
require 'logatron/logatron'
|
2
3
|
|
3
4
|
class Hyperion
|
4
5
|
module Headers
|
5
6
|
# constructs and destructures HTTP headers
|
6
7
|
|
7
8
|
def route_headers(route)
|
8
|
-
headers =
|
9
|
+
headers = Logatron.http_headers
|
9
10
|
rd = route.response_descriptor
|
10
11
|
pd = route.payload_descriptor
|
11
12
|
headers['Expect'] = nil # this overrides default libcurl behavior.
|
@@ -1,9 +1,11 @@
|
|
1
1
|
require 'hyperion'
|
2
2
|
require 'hyperion/headers'
|
3
|
+
require 'abstractivator/trees/tree_compare'
|
3
4
|
|
4
5
|
class Hyperion
|
5
6
|
describe Headers do
|
6
7
|
include Headers
|
8
|
+
include Abstractivator::Trees
|
7
9
|
|
8
10
|
before :each do
|
9
11
|
Hyperion.configure do |config|
|
@@ -22,6 +24,10 @@ class Hyperion
|
|
22
24
|
headers = route_headers(RestRoute.new(:get, uri, ResponseDescriptor.new('ttt', 999, :json), PayloadDescriptor.new(:json)))
|
23
25
|
expect(headers['Content-Type']).to eql 'application/json'
|
24
26
|
end
|
27
|
+
it 'merges the logatron headers' do
|
28
|
+
headers = route_headers(RestRoute.new(:get, uri, ResponseDescriptor.new('ttt', 999, :json)))
|
29
|
+
expect(tree_compare(headers, Logatron.http_headers)).to eql []
|
30
|
+
end
|
25
31
|
end
|
26
32
|
|
27
33
|
describe '#content_type_for' do
|
@@ -29,23 +29,28 @@ describe Hyperion::Logger do
|
|
29
29
|
it 'respects the log level' do
|
30
30
|
output = StringIO.new
|
31
31
|
with_stdout(output) do
|
32
|
-
|
32
|
+
Logatron.level = Logatron::ERROR
|
33
33
|
logger.debug 'xyzzy'
|
34
34
|
logger.error 'qwerty'
|
35
|
-
|
35
|
+
Logatron.level = Logatron::DEBUG
|
36
36
|
end
|
37
37
|
output_str = output.string
|
38
38
|
expect(output_str).to include 'qwert'
|
39
39
|
expect(output_str).to_not include 'xyzzy'
|
40
40
|
end
|
41
41
|
|
42
|
-
def with_stdout(
|
43
|
-
|
44
|
-
$stdout = tmp_stdout
|
42
|
+
def with_stdout(io)
|
43
|
+
set_log_io(io)
|
45
44
|
begin
|
46
45
|
yield
|
47
46
|
ensure
|
48
|
-
$stdout
|
47
|
+
set_log_io($stdout)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def set_log_io(io)
|
52
|
+
Logatron.configure do |c|
|
53
|
+
c.logger = Logger.new(io)
|
49
54
|
end
|
50
55
|
end
|
51
56
|
|
File without changes
|
data/spec/lib/hyperion_spec.rb
CHANGED
@@ -15,16 +15,16 @@ describe Hyperion do
|
|
15
15
|
body = 'Ventura'
|
16
16
|
additional_headers = {'From' => 'dev@indigobio.com'}
|
17
17
|
|
18
|
-
expected_headers =
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
18
|
+
expected_headers = Logatron.http_headers.merge(
|
19
|
+
'Accept' => "application/vnd.indigobio-ascent.#{rd.type}-v#{rd.version}+#{rd.format}",
|
20
|
+
'Content-Type' => 'application/x-protobuf',
|
21
|
+
'From' => 'dev@indigobio.com',
|
22
|
+
'Expect' => nil
|
23
|
+
)
|
24
24
|
|
25
25
|
expect(Hyperion::Typho).to receive(:request).
|
26
|
-
|
27
|
-
|
26
|
+
with(uri, {method: method, headers: expected_headers, body: 'Ventura'}).
|
27
|
+
and_return(make_typho_response(200, write({'foo' => 'bar'}, :json)))
|
28
28
|
|
29
29
|
result = Hyperion.request(route, body, additional_headers)
|
30
30
|
expect(result).to be_a HyperionResult
|
@@ -40,11 +40,12 @@ describe Hyperion do
|
|
40
40
|
let!(:rd){ResponseDescriptor.new('data_type', 1, :json)}
|
41
41
|
let!(:pd){PayloadDescriptor.new(:json)}
|
42
42
|
let!(:route){RestRoute.new(method, uri, rd, pd)}
|
43
|
-
let!(:expected_headers)
|
43
|
+
let!(:expected_headers) do
|
44
|
+
Logatron.http_headers.merge(
|
44
45
|
'Accept' => "application/vnd.indigobio-ascent.#{rd.type}-v#{rd.version}+#{rd.format}",
|
45
46
|
'Content-Type' => 'application/json',
|
46
|
-
'Expect' => nil
|
47
|
-
|
47
|
+
'Expect' => nil)
|
48
|
+
end
|
48
49
|
it 'deserializes the response' do
|
49
50
|
allow(Hyperion::Typho).to receive(:request).and_return(make_typho_response(200, '{"a":"b"}'))
|
50
51
|
result = Hyperion.request(route)
|
@@ -52,15 +53,15 @@ describe Hyperion do
|
|
52
53
|
end
|
53
54
|
it 'serializes the payload' do
|
54
55
|
expect(Hyperion::Typho).to receive(:request).
|
55
|
-
|
56
|
-
|
56
|
+
with(uri, {method: method, headers: expected_headers, body: '{"c":"d"}'}).
|
57
|
+
and_return(make_typho_response(200, write({}, :json)))
|
57
58
|
Hyperion.request(route, {'c' => 'd'})
|
58
59
|
end
|
59
60
|
it 'deserializes 400-level errors to ClientErrorResponse' do
|
60
61
|
client_error = ClientErrorResponse.new('oops', [], ClientErrorCode::MISSING)
|
61
62
|
allow(Hyperion::Typho).to receive(:request).
|
62
|
-
|
63
|
-
|
63
|
+
with(uri, {method: method, headers: expected_headers, body: '{"c":"d"}'}).
|
64
|
+
and_return(make_typho_response(400, write(client_error.as_json, :json)))
|
64
65
|
result = Hyperion.request(route, {'c' => 'd'})
|
65
66
|
expect(result.body).to be_a ClientErrorResponse
|
66
67
|
expect(result.body.message).to eql 'oops'
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,13 @@
|
|
1
|
+
require 'logatron/logatron'
|
2
|
+
|
1
3
|
RSpec.configure do |config|
|
2
4
|
config.mock_with :rspec do |mocks|
|
3
5
|
mocks.verify_partial_doubles = true
|
4
6
|
end
|
5
7
|
end
|
8
|
+
|
9
|
+
Logatron.configure do |c|
|
10
|
+
c.logger = Logger.new($stdout)
|
11
|
+
c.level = Logatron::DEBUG
|
12
|
+
c.transformer = proc {|x| x[:body]}
|
13
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyperion_http
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Indigo BioAutomation, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -178,6 +178,20 @@ dependencies:
|
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: 0.4.3
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: logatron
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
181
195
|
description: Ruby REST client for internal service architecture
|
182
196
|
email:
|
183
197
|
- pwinton@indigobio.com
|
@@ -230,12 +244,12 @@ files:
|
|
230
244
|
- spec/lib/hyperion/formats_spec.rb
|
231
245
|
- spec/lib/hyperion/headers_spec.rb
|
232
246
|
- spec/lib/hyperion/logger_spec.rb
|
247
|
+
- spec/lib/hyperion/requestor_spec.rb
|
233
248
|
- spec/lib/hyperion/test_spec.rb
|
234
249
|
- spec/lib/hyperion/types/client_error_response_spec.rb
|
235
250
|
- spec/lib/hyperion/types/hyperion_result_spec.rb
|
236
251
|
- spec/lib/hyperion/types/hyperion_uri_spec.rb
|
237
252
|
- spec/lib/hyperion_spec.rb
|
238
|
-
- spec/lib/superion_spec.rb
|
239
253
|
- spec/lib/types_spec.rb
|
240
254
|
- spec/spec_helper.rb
|
241
255
|
- spec/support/core_helpers.rb
|
@@ -268,12 +282,12 @@ test_files:
|
|
268
282
|
- spec/lib/hyperion/formats_spec.rb
|
269
283
|
- spec/lib/hyperion/headers_spec.rb
|
270
284
|
- spec/lib/hyperion/logger_spec.rb
|
285
|
+
- spec/lib/hyperion/requestor_spec.rb
|
271
286
|
- spec/lib/hyperion/test_spec.rb
|
272
287
|
- spec/lib/hyperion/types/client_error_response_spec.rb
|
273
288
|
- spec/lib/hyperion/types/hyperion_result_spec.rb
|
274
289
|
- spec/lib/hyperion/types/hyperion_uri_spec.rb
|
275
290
|
- spec/lib/hyperion_spec.rb
|
276
|
-
- spec/lib/superion_spec.rb
|
277
291
|
- spec/lib/types_spec.rb
|
278
292
|
- spec/spec_helper.rb
|
279
293
|
- spec/support/core_helpers.rb
|