Skip to content

Commit cb9dd6b

Browse files
bretambroseBret Ambrose
andauthored
Update CRT (#522)
* Update CRT * Update event stream payload encoding function --------- Co-authored-by: Bret Ambrose <bambrose@amazon.com>
1 parent 82ff57a commit cb9dd6b

File tree

4 files changed

+277
-117
lines changed

4 files changed

+277
-117
lines changed

lib/eventstream_rpc_utils.spec.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
* SPDX-License-Identifier: Apache-2.0.
4+
*/
5+
6+
import * as eventstream_rpc_utils from "./eventstream_rpc_utils";
7+
8+
jest.setTimeout(5000);
9+
10+
test('Encode string payload as base64', async () => {
11+
let encodedPayload = eventstream_rpc_utils.encodePayloadAsString("HelloWorld");
12+
expect(encodedPayload).toEqual("SGVsbG9Xb3JsZA==");
13+
});
14+
15+
test('Encode ArrayBuffer payload as base64', async () => {
16+
let buffer = new ArrayBuffer(10);
17+
let writeView = new Uint8Array(buffer);
18+
for (let i = 0; i < 10; i++) {
19+
writeView[i] = 65;
20+
}
21+
22+
let encodedPayload = eventstream_rpc_utils.encodePayloadAsString(buffer);
23+
expect(encodedPayload).toEqual("QUFBQUFBQUFBQQ==");
24+
});
25+
26+
test('Encode view payload as base64', async () => {
27+
let buffer = new ArrayBuffer(10);
28+
let writeView = new Uint8Array(buffer);
29+
for (let i = 0; i < 10; i++) {
30+
writeView[i] = 65;
31+
}
32+
33+
let view = new DataView(buffer, 1, 8);
34+
35+
let encodedPayload = eventstream_rpc_utils.encodePayloadAsString(view);
36+
expect(encodedPayload).toEqual("QUFBQUFBQUE=");
37+
});

lib/eventstream_rpc_utils.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,15 @@ import {CrtError, eventstream} from "aws-crt";
2020
* @return a base64-encoded string
2121
*/
2222
export function encodePayloadAsString(payload : eventstream.Payload) : string {
23-
return Buffer.from(payload).toString("base64");
23+
if (ArrayBuffer.isView(payload)) {
24+
return Buffer.from(payload.buffer, payload.byteOffset, payload.byteLength).toString("base64");
25+
} else if (typeof payload === "string") {
26+
let value = payload as string;
27+
return Buffer.from(value).toString("base64");
28+
} else {
29+
let value = payload as ArrayBuffer;
30+
return Buffer.from(value).toString("base64");
31+
}
2432
}
2533

2634
/**

0 commit comments

Comments
 (0)