http_streaming_client 0.9.7 → 0.9.8

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
  SHA1:
3
- metadata.gz: 7189a6ab6550219173fc77f1860b797ba3464936
4
- data.tar.gz: 3f9739776d6a097ffd9d78a9b84e16e1bd848cf7
3
+ metadata.gz: d5581509d2fd5ef9ceb88108f0dab57b572aa127
4
+ data.tar.gz: 8d3203d98d53c23839eb475b05c66767ea44477e
5
5
  SHA512:
6
- metadata.gz: fa69f597ca4b1285baa68db9f86b16fdf62141fa14157a9c09a80f0ef27486a23f58a655f154d4c29c3e2bb05ad2261899a9a384202a288a80332a692901ce44
7
- data.tar.gz: 94f82b7a78be5c054cd2bc395521feed1b4c600544c1ad2e7b8ae16cb9b65777d6e430ec789c1446a58ab66b7a0fa9afe03757b1437815b899f09666b7e2a8f8
6
+ metadata.gz: 959b75f1f05b14c47d6ec4f0f38a7d66c3d5d6b0734fc1314c017840fff333499bbc99c6697f4aa89cc1151a77347395f6a6674b10ccfa0f4f7c3b31933bc783
7
+ data.tar.gz: c000c10712d472eebfabfefdac34a1ebc54feca247e9efb51d39ca0af4a116d179983e79ea63e735888ac18aee2d7cb58716528d74c3216984ee4c515808d59c
@@ -426,7 +426,7 @@ module HttpStreamingClient
426
426
 
427
427
  if uri.scheme.eql? "https"
428
428
  ctx = OpenSSL::SSL::SSLContext.new
429
- #ctx.set_params(verify_mode: OpenSSL::SSL::VERIFY_PEER)
429
+ ctx.set_params(verify_mode: OpenSSL::SSL::VERIFY_PEER)
430
430
  @socket = OpenSSL::SSL::SSLSocket.new(@socket, ctx).tap do |socket|
431
431
  socket.sync_close = true
432
432
  socket.connect
@@ -60,10 +60,10 @@ module HttpStreamingClient
60
60
  return unless compressed_packet && compressed_packet.size > 0
61
61
  @buf ||= GZipBufferIO.new
62
62
  @buf << compressed_packet
63
+ @gzip ||= Zlib::GzipReader.new @buf
63
64
 
64
65
  # pass at least GZIP_READER_MIN_BUF_SIZE bytes to GzipReader to avoid zlib EOF
65
66
  while @buf.size > GZIP_READER_MIN_BUF_SIZE do
66
- @gzip ||= Zlib::GzipReader.new @buf
67
67
  decompressed_packet = nonblock_readline(@gzip)
68
68
  #logger.debug "GZip:<<:decompressed_packet:#{decompressed_packet}"
69
69
  break if decompressed_packet.nil?
@@ -73,14 +73,16 @@ module HttpStreamingClient
73
73
 
74
74
  def close
75
75
  logger.debug "GZip:close"
76
+ return if @buf.size == 0
77
+
76
78
  decompressed_packet = ""
77
79
  begin
78
80
  @gzip ||= Zlib::GzipReader.new @buf
79
81
 
80
82
  while true do
81
- decompressed_packet = nonblock_readline(@gzip)
82
- #logger.debug "GZip:close:decompressed_packet:#{decompressed_packet}"
83
- break if decompressed_packet.nil?
83
+ decompressed_packet = nonblock_readline(@gzip, true)
84
+ logger.debug "GZip:close:decompressed_packet:#{decompressed_packet}"
85
+ break if decompressed_packet.nil? or decompressed_packet.size == 0
84
86
  process_decompressed_packet(decompressed_packet)
85
87
  end
86
88
 
@@ -93,7 +95,7 @@ module HttpStreamingClient
93
95
  @buf.size
94
96
  end
95
97
 
96
- def nonblock_readline(io)
98
+ def nonblock_readline(io, on_close = false)
97
99
  @line_buffer ||= ""
98
100
  ch = nil
99
101
  begin
@@ -106,17 +108,38 @@ module HttpStreamingClient
106
108
  end
107
109
  end
108
110
  rescue Zlib::GzipFile::Error
109
- # this is raised on EOF by ZLib in MRI, return nil to indicate EOF and leave partial line in the buffer
111
+ # this is raised on EOF by ZLib in MRI
112
+ # if we get here via a call to close(), then we want to return the line_buffer
113
+ # if we get here via any other path, we want to return nil to signal temporary EOF and leave the partial line_buffer contents in place.
110
114
  logger.debug "Gzip:nonblock_readline:Zlib::GzipFile::Error:line_buffer.size:#{@line_buffer.size}"
115
+ if on_close then
116
+ result = @line_buffer
117
+ @line_buffer = ""
118
+ return result
119
+ end
111
120
  return nil
112
121
  rescue IOError
113
122
  # this is raised on EOF by ZLib in JRuby, return nil to indicate EOF and leave partial line in the buffer
123
+ # if we get here via a call to close(), then we want to return the line_buffer
124
+ # if we get here via any other path, we want to return nil to signal temporary EOF and leave the partial line_buffer contents in place.
114
125
  logger.debug "Gzip:nonblock_readline:IOError:line_buffer.size:#{@line_buffer.size}"
126
+ if on_close then
127
+ result = @line_buffer
128
+ @line_buffer = ""
129
+ return result
130
+ end
115
131
  return nil
116
132
  rescue => e
117
133
  logger.debug "Gzip:nonblock_readline:error received:#{e.class}:#{e}"
118
134
  raise e
119
135
  end
136
+
137
+ if on_close then
138
+ result = @line_buffer
139
+ @line_buffer = ""
140
+ return result
141
+ end
142
+
120
143
  end
121
144
 
122
145
  protected
@@ -61,8 +61,13 @@ module HttpStreamingClient
61
61
  url_string = "#{uri.scheme}://#{uri.host}#{uri.path}"
62
62
 
63
63
  # POST to uri
64
- response = HttpStreamingClient::Client.post(uri, params_string, {:headers => {'Authorization' => "Basic #{basicAuth}"}})
65
- response_json = JSON.parse(response)
64
+ assembled_response = ""
65
+ response = HttpStreamingClient::Client.post(uri, params_string, {:headers => {'Authorization' => "Basic #{basicAuth}"}}) { |line|
66
+ # token server now sending chunked, gzip'd response...
67
+ logger.debug "line received: #{line}"
68
+ assembled_response << line
69
+ }
70
+ response_json = JSON.parse(assembled_response)
66
71
 
67
72
  logger.debug "token API response: #{response_json}"
68
73
 
@@ -28,5 +28,5 @@
28
28
  ###########################################################################
29
29
 
30
30
  module HttpStreamingClient
31
- VERSION = "0.9.7"
31
+ VERSION = "0.9.8"
32
32
  end
@@ -63,7 +63,7 @@ describe HttpStreamingClient do
63
63
 
64
64
  end
65
65
 
66
- describe "adobe firehose streaming get test, GZIP compressionu, authorization options factory" do
66
+ describe "adobe firehose streaming get test, GZIP compression, authorization options factory" do
67
67
 
68
68
  line_count = 0
69
69
 
@@ -11,7 +11,7 @@ describe HttpStreamingClient do
11
11
 
12
12
  describe "client instance get test, no chunked transfer encosing and GZIP compression" do
13
13
  client = HttpStreamingClient::Client.new
14
- response = client.get "http://screamradius.com/"
14
+ response = client.get "https://screamradius.com/"
15
15
  logger.debug "response: #{response}"
16
16
  subject { response }
17
17
  it { should_not be_nil}
@@ -49,6 +49,7 @@ describe HttpStreamingClient do
49
49
  response = client.get(url, {:headers => {'Authorization' => "#{authorization}" }}) { |line|
50
50
  count = count + 1
51
51
  if count > NUM_JSON_RECORDS_TO_RECEIVE then
52
+ logger.debug "#{NUM_JSON_RECORDS_TO_RECEIVE} records received, interrupting..."
52
53
  client.interrupt
53
54
  next
54
55
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http_streaming_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.7
4
+ version: 0.9.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Tompkins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-04 00:00:00.000000000 Z
11
+ date: 2015-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler