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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2d0f5881812afed9948b7dbbd8a12d35d90a22ea
4
- data.tar.gz: b020ea7e1445e00af035c21b282252879e77cd62
3
+ metadata.gz: 91e0e9ec59b3137e556a697e02b94a1bea99041f
4
+ data.tar.gz: 53cd60928f4434173f2e01798256d40e21e8e401
5
5
  SHA512:
6
- metadata.gz: de4844d722291b990106e03b385aabcfc4ff23de66f2ba4251a1ff6069ef050d20d7cfdcb2b37f8c1707f8857e50f0c3e8aac009f28df56ae21822c1d5130a5c
7
- data.tar.gz: 45e7a1242f1628933acccff62f45f785127261ec8ef27327cf9fb7642f5551b8d0cb0d728faaa1fa9a952c6f9fedeabf1eee07132cc85be88ca13cbdd21bbaef
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
- private
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.1
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: 2018-06-15 00:00:00.000000000 Z
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