1
1
import * as fs from 'fs' ;
2
2
import * as http from 'http' ;
3
3
import * as https from 'https' ;
4
- import type { AddressInfo } from 'net' ;
5
- import * as os from 'os' ;
6
- import * as path from 'path' ;
7
4
import * as util from 'util' ;
8
5
import * as zlib from 'zlib' ;
9
6
import type { Envelope , EnvelopeItem } from '@sentry/types' ;
10
- import { parseEnvelope } from '@sentry/utils' ;
11
7
12
8
// change to folder name of app to test
13
9
const APP = 'express' ;
@@ -131,8 +127,6 @@ async function transformSavedJSON() {
131
127
*
132
128
*/
133
129
export async function startEventProxyServer ( options : EventProxyServerOptions ) : Promise < void > {
134
- const eventCallbackListeners : Set < ( data : string ) => void > = new Set ( ) ;
135
-
136
130
console . log ( `Proxy server "${ options . proxyServerName } " running. Waiting for events...` ) ;
137
131
138
132
const proxyServer = http . createServer ( ( proxyRequest , proxyResponse ) => {
@@ -176,30 +170,15 @@ export async function startEventProxyServer(options: EventProxyServerOptions): P
176
170
177
171
proxyRequest . headers . host = host ;
178
172
179
- const sentryResponseChunks : Uint8Array [ ] = [ ] ;
180
-
181
173
const sentryRequest = https . request (
182
174
sentryIngestUrl ,
183
175
{ headers : proxyRequest . headers , method : proxyRequest . method } ,
184
176
sentryResponse => {
185
177
sentryResponse . addListener ( 'data' , ( chunk : Buffer ) => {
186
178
proxyResponse . write ( chunk , 'binary' ) ;
187
- sentryResponseChunks . push ( chunk ) ;
188
179
} ) ;
189
180
190
181
sentryResponse . addListener ( 'end' , ( ) => {
191
- eventCallbackListeners . forEach ( listener => {
192
- const rawSentryResponseBody = Buffer . concat ( sentryResponseChunks ) . toString ( ) ;
193
-
194
- const data : SentryRequestCallbackData = {
195
- envelope : parseEnvelope ( proxyRequestBody , new TextEncoder ( ) , new TextDecoder ( ) ) ,
196
- rawProxyRequestBody : proxyRequestBody ,
197
- rawSentryResponseBody,
198
- sentryResponseStatusCode : sentryResponse . statusCode ,
199
- } ;
200
-
201
- listener ( Buffer . from ( JSON . stringify ( data ) ) . toString ( 'base64' ) ) ;
202
- } ) ;
203
182
proxyResponse . end ( ) ;
204
183
} ) ;
205
184
@@ -222,40 +201,6 @@ export async function startEventProxyServer(options: EventProxyServerOptions): P
222
201
} ) ;
223
202
} ) ;
224
203
225
- const eventCallbackServer = http . createServer ( ( eventCallbackRequest , eventCallbackResponse ) => {
226
- eventCallbackResponse . statusCode = 200 ;
227
- eventCallbackResponse . setHeader ( 'connection' , 'keep-alive' ) ;
228
-
229
- const callbackListener = ( data : string ) : void => {
230
- eventCallbackResponse . write ( data . concat ( '\n' ) , 'utf8' ) ;
231
- } ;
232
-
233
- eventCallbackListeners . add ( callbackListener ) ;
234
-
235
- eventCallbackRequest . on ( 'close' , ( ) => {
236
- eventCallbackListeners . delete ( callbackListener ) ;
237
- } ) ;
238
-
239
- eventCallbackRequest . on ( 'error' , ( ) => {
240
- eventCallbackListeners . delete ( callbackListener ) ;
241
- } ) ;
242
- } ) ;
243
-
244
- const eventCallbackServerStartupPromise = new Promise < void > ( resolve => {
245
- eventCallbackServer . listen ( 0 , ( ) => {
246
- const port = String ( ( eventCallbackServer . address ( ) as AddressInfo ) . port ) ;
247
- void registerCallbackServerPort ( options . proxyServerName , port ) . then ( resolve ) ;
248
- } ) ;
249
- } ) ;
250
-
251
- await eventCallbackServerStartupPromise ;
252
204
await proxyServerStartupPromise ;
253
205
return ;
254
206
}
255
-
256
- const TEMP_FILE_PREFIX = 'event-proxy-server-' ;
257
-
258
- async function registerCallbackServerPort ( serverName : string , port : string ) : Promise < void > {
259
- const tmpFilePath = path . join ( os . tmpdir ( ) , `${ TEMP_FILE_PREFIX } ${ serverName } ` ) ;
260
- await writeFile ( tmpFilePath , port , { encoding : 'utf8' } ) ;
261
- }
0 commit comments