File tree Expand file tree Collapse file tree 4 files changed +55
-8
lines changed
Expand file tree Collapse file tree 4 files changed +55
-8
lines changed Original file line number Diff line number Diff line change 11{
22 "name" : " @speakeasy-api/speakeasy-typescript-sdk" ,
3- "version" : " 1.3.0 " ,
3+ "version" : " 1.3.1 " ,
44 "repository" : {
55 "type" : " git" ,
66 "url" : " https://github.com/speakeasy-api/speakeasy-typescript-sdk"
Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ import { RequestResponseWriter } from "./requestresponsewriter";
1515import Timestamp from "timestamp-nano" ;
1616import cookie from "cookie" ;
1717import { maskBodyRegex } from "./bodymasking" ;
18+ import { resolveProxyHeaders } from "./proxy" ;
1819import setCookie from "set-cookie-parser" ;
1920import { speakeasyVersion } from "./speakeasy" ;
2021import url from "url" ;
@@ -58,9 +59,11 @@ export class HarBuilder {
5859 port : number ,
5960 masking : Masking
6061 ) : HarBuilder {
61- const host = req . get ( "host" ) ?? "" ;
62+ const resolveURLInfo = resolveProxyHeaders ( req ) ;
6263
63- const fullOriginalURL = `${ req . protocol } ://${ host } ${
64+ const host = resolveURLInfo . host ;
65+
66+ const fullOriginalURL = `${ resolveURLInfo . scheme } ://${ host } ${
6467 ! host . includes ( ":" ) && port != 80 && port != 443 ? `:${ port } ` : ""
6568 } ${ req . originalUrl } `;
6669
Original file line number Diff line number Diff line change 1+ import { Request } from "express" ;
2+
3+ export interface ResolvedURLInfo {
4+ scheme : string ;
5+ host : string ;
6+ }
7+
8+ export function resolveProxyHeaders ( req : Request ) : ResolvedURLInfo {
9+ const scheme = getScheme ( req ) ;
10+
11+ return {
12+ scheme : scheme != "" ? scheme : req . protocol ,
13+ host : ( req . headers [ "x-forwarded-host" ] as string ) ?? req . headers . host ,
14+ } ;
15+ }
16+
17+ function getScheme ( req : Request ) : string {
18+ let scheme : string = "" ;
19+
20+ if ( req . headers [ "x-forwarded-proto" ] ) {
21+ scheme = ( req . headers [ "x-forwarded-proto" ] as string ) . toLowerCase ( ) ;
22+ } else if ( req . headers [ "x-forwarded-scheme" ] ) {
23+ scheme = ( req . headers [ "x-forwarded-scheme" ] as string ) . toLowerCase ( ) ;
24+ } else if ( req . headers [ "forwarded" ] ) {
25+ const forwarded = req . headers [ "forwarded" ] as string ;
26+
27+ const protoRegex = new RegExp ( `(?i)(?:proto=)(https|http)` ) ;
28+
29+ const matches = protoRegex . exec ( forwarded ) ;
30+ if ( matches . length > 1 ) {
31+ scheme = matches [ 1 ] . toLowerCase ( ) ;
32+ }
33+ }
34+
35+ return scheme ;
36+ }
Original file line number Diff line number Diff line change @@ -14,6 +14,8 @@ import { IngestRequest } from "@speakeasy-api/speakeasy-schemas/registry/ingest/
1414import { IngestServiceClient } from "@speakeasy-api/speakeasy-schemas/registry/ingest/ingest_grpc_pb" ;
1515import { Message } from "google-protobuf" ;
1616
17+ const grpcDeadline = getRPCDeadline ( 1000 ) ; // 1 Second deadline
18+
1719export class GRPCClient {
1820 private ingestClient : Promisified < IngestServiceClient > ;
1921 private embedClient : Promisified < EmbedAccessTokenServiceClient > ;
@@ -56,11 +58,13 @@ export class GRPCClient {
5658 request . setPathHint ( pathHint ) ;
5759 request . setCustomerId ( customerID ) ;
5860
59- this . ingestClient . ingest ( request , metadata ) . catch ( ( err ) => {
60- if ( err ) {
61- console . error ( err ) ; // TODO log error with a provided logger?
62- }
63- } ) ;
61+ this . ingestClient
62+ . ingest ( request , metadata , { deadline : grpcDeadline } )
63+ . catch ( ( err ) => {
64+ if ( err ) {
65+ console . error ( err ) ; // TODO log error with a provided logger?
66+ }
67+ } ) ;
6468 }
6569
6670 public async getEmbedAccessToken (
@@ -74,6 +78,10 @@ export class GRPCClient {
7478 }
7579}
7680
81+ function getRPCDeadline ( deadline : number ) : Date {
82+ return new Date ( Date . now ( ) + deadline ) ;
83+ }
84+
7785type OriginalCall < T , U > = (
7886 request : T ,
7987 metadata : Metadata ,
You can’t perform that action at this time.
0 commit comments