Skip to content

Commit 2269d1b

Browse files
committed
converts SigningSender to typescript
1 parent f7b5f75 commit 2269d1b

File tree

2 files changed

+32
-31
lines changed

2 files changed

+32
-31
lines changed

src/SigningSender.js

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/SigningSender.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { Request, Response, Sender } from "./types.js";
2+
import SharedCredentials from "./SharedCredentials.js";
3+
import { UnprocessableEntityError } from "./Errors.js";
4+
5+
interface Signer {
6+
sign(request: Request): void;
7+
}
8+
9+
export default class SigningSender {
10+
private signer: Signer;
11+
private sender: Sender;
12+
13+
constructor(innerSender: Sender, signer: Signer) {
14+
this.signer = signer;
15+
this.sender = innerSender;
16+
}
17+
18+
send(request: Request): Promise<Response> {
19+
const sendingPostWithSharedCredentials =
20+
request.payload && this.signer instanceof SharedCredentials;
21+
if (sendingPostWithSharedCredentials) {
22+
const message =
23+
"Shared credentials cannot be used in batches with a length greater than 1 or when using the US Extract API.";
24+
throw new UnprocessableEntityError(message);
25+
}
26+
27+
return new Promise((resolve, reject) => {
28+
this.signer.sign(request);
29+
this.sender.send(request).then(resolve).catch(reject);
30+
});
31+
}
32+
}

0 commit comments

Comments
 (0)