aws-eventstream 1.0.1 → 1.0.2
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/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
|