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 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