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 1
1
{
2
2
"name" : " @speakeasy-api/speakeasy-typescript-sdk" ,
3
- "version" : " 1.3.0 " ,
3
+ "version" : " 1.3.1 " ,
4
4
"repository" : {
5
5
"type" : " git" ,
6
6
"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";
15
15
import Timestamp from "timestamp-nano" ;
16
16
import cookie from "cookie" ;
17
17
import { maskBodyRegex } from "./bodymasking" ;
18
+ import { resolveProxyHeaders } from "./proxy" ;
18
19
import setCookie from "set-cookie-parser" ;
19
20
import { speakeasyVersion } from "./speakeasy" ;
20
21
import url from "url" ;
@@ -58,9 +59,11 @@ export class HarBuilder {
58
59
port : number ,
59
60
masking : Masking
60
61
) : HarBuilder {
61
- const host = req . get ( "host" ) ?? "" ;
62
+ const resolveURLInfo = resolveProxyHeaders ( req ) ;
62
63
63
- const fullOriginalURL = `${ req . protocol } ://${ host } ${
64
+ const host = resolveURLInfo . host ;
65
+
66
+ const fullOriginalURL = `${ resolveURLInfo . scheme } ://${ host } ${
64
67
! host . includes ( ":" ) && port != 80 && port != 443 ? `:${ port } ` : ""
65
68
} ${ req . originalUrl } `;
66
69
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/
14
14
import { IngestServiceClient } from "@speakeasy-api/speakeasy-schemas/registry/ingest/ingest_grpc_pb" ;
15
15
import { Message } from "google-protobuf" ;
16
16
17
+ const grpcDeadline = getRPCDeadline ( 1000 ) ; // 1 Second deadline
18
+
17
19
export class GRPCClient {
18
20
private ingestClient : Promisified < IngestServiceClient > ;
19
21
private embedClient : Promisified < EmbedAccessTokenServiceClient > ;
@@ -56,11 +58,13 @@ export class GRPCClient {
56
58
request . setPathHint ( pathHint ) ;
57
59
request . setCustomerId ( customerID ) ;
58
60
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
+ } ) ;
64
68
}
65
69
66
70
public async getEmbedAccessToken (
@@ -74,6 +78,10 @@ export class GRPCClient {
74
78
}
75
79
}
76
80
81
+ function getRPCDeadline ( deadline : number ) : Date {
82
+ return new Date ( Date . now ( ) + deadline ) ;
83
+ }
84
+
77
85
type OriginalCall < T , U > = (
78
86
request : T ,
79
87
metadata : Metadata ,
You can’t perform that action at this time.
0 commit comments