Skip to content

Commit

Permalink
fix auth
Browse files Browse the repository at this point in the history
  • Loading branch information
edaniels committed Sep 17, 2024
1 parent 057a935 commit 36fd416
Showing 1 changed file with 34 additions and 8 deletions.
42 changes: 34 additions & 8 deletions rpc/js/src/dial.ts
Original file line number Diff line number Diff line change
Expand Up @@ -228,19 +228,20 @@ class authenticatedTransport implements Transport {
method: MethodInfo<I, O>,
signal: AbortSignal | undefined,
timeoutMs: number | undefined,
header: Headers,
header: HeadersInit | undefined,
message: PartialMessage<I>,
contextValues?: ContextValues
): Promise<UnaryResponse<I, O>> {
this.extraHeaders.forEach((key: string, value: string) => {
header.set(key, value);
let newHeaders = cloneHeaders(header);
this.extraHeaders.forEach((value: string, key: string) => {
newHeaders.set(key, value);
});
return this.transport.unary(
service,
method,
signal,
timeoutMs,
header,
newHeaders,
message,
contextValues
);
Expand All @@ -254,25 +255,50 @@ class authenticatedTransport implements Transport {
method: MethodInfo<I, O>,
signal: AbortSignal | undefined,
timeoutMs: number | undefined,
header: Headers,
header: HeadersInit | undefined,
input: AsyncIterable<PartialMessage<I>>,
contextValues?: ContextValues
): Promise<StreamResponse<I, O>> {
this.extraHeaders.forEach((key: string, value: string) => {
header.set(key, value);
let newHeaders = cloneHeaders(header);
this.extraHeaders.forEach((value: string, key: string) => {
newHeaders.set(key, value);
});
return this.transport.stream(
service,
method,
signal,
timeoutMs,
header,
newHeaders,
input,
contextValues
);
}
}

function cloneHeaders(headers: HeadersInit | undefined): Headers {
let cloned = new Headers();
if (headers) {
if (headers !== undefined) {
if (Array.isArray(headers)) {
for (const [key, value] of headers) {
cloned.append(key, value);
}
} else if ("forEach" in headers) {
if (typeof headers.forEach == "function") {
headers.forEach((value, key) => {
cloned.append(key, value);
});
}
} else {
for (const [key, value] of Object.entries<string>(headers)) {
cloned.append(key, value);
}
}
}
}
return cloned;
}

export interface WebRTCConnection {
transport: Transport;
peerConnection: RTCPeerConnection;
Expand Down

0 comments on commit 36fd416

Please sign in to comment.