aws-eventstream 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/aws-eventstream/encoder.rb +26 -2
- data/lib/aws-eventstream/errors.rb +12 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91e0e9ec59b3137e556a697e02b94a1bea99041f
|
4
|
+
data.tar.gz: 53cd60928f4434173f2e01798256d40e21e8e401
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c4a00f2542e62fadd50744026151d8ad7df6682e020a48e194a570377442e64cd8673ccc4464b552cda952631d4cf457b5df2c4f6b91cc7089b66541bb26bfb
|
7
|
+
data.tar.gz: 4765ce5c6e944b58a44bb50e3921601932d2c9a6ac9eb33c8edb2f86ad1b031cb8dfaf88ef73303073931093122101720e8faceb2b616f2515395e3459239aac
|
@@ -39,6 +39,12 @@ module Aws
|
|
39
39
|
# and 4 bytes total message crc checksum
|
40
40
|
OVERHEAD_LENGTH = 16
|
41
41
|
|
42
|
+
# Maximum header length allowed (after encode) 128kb
|
43
|
+
MAX_HEADERS_LENGTH = 131072
|
44
|
+
|
45
|
+
# Maximum payload length allowed (after encode) 16mb
|
46
|
+
MAX_PAYLOAD_LENGTH = 16777216
|
47
|
+
|
42
48
|
# Encodes Aws::EventStream::Message to output IO when
|
43
49
|
# provided, else return the encoded binary string
|
44
50
|
#
|
@@ -62,13 +68,20 @@ module Aws
|
|
62
68
|
end
|
63
69
|
end
|
64
70
|
|
65
|
-
|
66
|
-
|
71
|
+
# Encodes an Aws::EventStream::Message
|
72
|
+
# into Aws::EventStream::BytesBuffer
|
73
|
+
#
|
74
|
+
# @param [Aws::EventStream::Message] msg
|
75
|
+
#
|
76
|
+
# @return [Aws::EventStream::BytesBuffer]
|
67
77
|
def encode_message(message)
|
68
78
|
# create context buffer with encode headers
|
69
79
|
ctx_buffer = encode_headers(message)
|
70
80
|
headers_len = ctx_buffer.bytesize
|
71
81
|
# encode payload
|
82
|
+
if message.payload.length > MAX_PAYLOAD_LENGTH
|
83
|
+
raise Aws::EventStream::Errors::EventPayloadLengthExceedError.new
|
84
|
+
end
|
72
85
|
ctx_buffer << message.payload.read
|
73
86
|
total_len = ctx_buffer.bytesize + OVERHEAD_LENGTH
|
74
87
|
|
@@ -85,6 +98,12 @@ module Aws
|
|
85
98
|
buffer
|
86
99
|
end
|
87
100
|
|
101
|
+
# Encodes headers part of an Aws::EventStream::Message
|
102
|
+
# into Aws::EventStream::BytesBuffer
|
103
|
+
#
|
104
|
+
# @param [Aws::EventStream::Message] msg
|
105
|
+
#
|
106
|
+
# @return [Aws::EventStream::BytesBuffer]
|
88
107
|
def encode_headers(msg)
|
89
108
|
buffer = BytesBuffer.new('')
|
90
109
|
msg.headers.each do |k, v|
|
@@ -101,9 +120,14 @@ module Aws
|
|
101
120
|
pattern ? buffer << [v.value].pack(pattern) :
|
102
121
|
buffer << v.value
|
103
122
|
end
|
123
|
+
if buffer.bytesize > MAX_HEADERS_LENGTH
|
124
|
+
raise Aws::EventStream::Errors::EventHeadersLengthExceedError.new
|
125
|
+
end
|
104
126
|
buffer
|
105
127
|
end
|
106
128
|
|
129
|
+
private
|
130
|
+
|
107
131
|
def prelude(total_len, headers_len)
|
108
132
|
BytesBuffer.new(pack_uint32([
|
109
133
|
total_len,
|
@@ -30,6 +30,18 @@ module Aws
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
+
class EventPayloadLengthExceedError < RuntimeError
|
34
|
+
def initialize(*args)
|
35
|
+
super("Payload length of a message should be under 16mb.")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class EventHeadersLengthExceedError < RuntimeError
|
40
|
+
def initialize(*args)
|
41
|
+
super("Encoded headers length of a message should be under 128kb.")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
33
45
|
end
|
34
46
|
end
|
35
47
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-eventstream
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amazon Web Services
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Amazon Web Services event stream library. Decodes and encodes binary
|
14
14
|
stream under `vnd.amazon.event-stream` content-type
|