1
1
import axios from "axios" ;
2
- import { getAnalytics , sendSDKLogsToBackend } from "./utils" ;
3
- import { getUserInformation } from "./api/user/info" ;
2
+ import { getHttpNetworkingSDKLogsHooks } from "./sdklogsutils" ;
4
3
5
4
export enum HTTP_REQUEST_ERROR {
6
5
SESSION_EXPIRED ,
@@ -102,11 +101,12 @@ export async function simpleGETRequest(url: string, userConfig: any = {}, versio
102
101
"api-version" : version + ""
103
102
}
104
103
} ;
105
- let frontTokenExists = cookieExists ( "sFrontToken" ) ;
104
+ const sdkLogsHooks = getHttpNetworkingSDKLogsHooks ( ) ;
105
+ sdkLogsHooks . preApiExecutionHook ( ) ;
106
106
let response = await axios . get ( url , userConfig ) ;
107
107
let data = await response . data ;
108
108
let headers = response . headers ;
109
- await sendAnalyticsIfFrontTokenRemoved ( url , frontTokenExists , headers ) ;
109
+ sdkLogsHooks . postApiExecutionHook ( url , headers ) ;
110
110
return { data, headers } ;
111
111
}
112
112
@@ -122,11 +122,12 @@ export async function simplePOSTRequest(url: string, data: any, userConfig: POST
122
122
"api-version" : version + ""
123
123
}
124
124
} ;
125
- let frontTokenExists = cookieExists ( "sFrontToken" ) ;
125
+ const sdkLogsHooks = getHttpNetworkingSDKLogsHooks ( ) ;
126
+ sdkLogsHooks . preApiExecutionHook ( ) ;
126
127
let response = await axios . post ( url , data , userConfig ) ;
127
128
let responseData = response . data ;
128
129
let headers = response . headers ;
129
- await sendAnalyticsIfFrontTokenRemoved ( url , frontTokenExists , headers ) ;
130
+ sdkLogsHooks . postApiExecutionHook ( url , headers ) ;
130
131
return { data : responseData , headers, status : response . status , statusText : response . statusText } ;
131
132
}
132
133
@@ -142,11 +143,12 @@ export async function simplePATCHRequest(url: string, data: any, userConfig: PAT
142
143
"api-version" : version + ""
143
144
}
144
145
} ;
145
- let frontTokenExists = cookieExists ( "sFrontToken" ) ;
146
+ const sdkLogsHooks = getHttpNetworkingSDKLogsHooks ( ) ;
147
+ sdkLogsHooks . preApiExecutionHook ( ) ;
146
148
let response = await axios . patch ( url , data , userConfig ) ;
147
149
let responseData = response . data ;
148
150
let headers = response . headers ;
149
- await sendAnalyticsIfFrontTokenRemoved ( url , frontTokenExists , headers ) ;
151
+ sdkLogsHooks . postApiExecutionHook ( url , headers ) ;
150
152
return { data : responseData , headers } ;
151
153
}
152
154
@@ -162,11 +164,12 @@ export async function simplePUTRequest(url: string, data: any, userConfig: POSTR
162
164
"api-version" : version + ""
163
165
}
164
166
} ;
165
- let frontTokenExists = cookieExists ( "sFrontToken" ) ;
167
+ const sdkLogsHooks = getHttpNetworkingSDKLogsHooks ( ) ;
168
+ sdkLogsHooks . preApiExecutionHook ( ) ;
166
169
let response = await axios . put ( url , data , userConfig ) ;
167
170
let responseData = response . data ;
168
171
let headers = response . headers ;
169
- await sendAnalyticsIfFrontTokenRemoved ( url , frontTokenExists , headers ) ;
172
+ sdkLogsHooks . postApiExecutionHook ( url , headers ) ;
170
173
return { data : responseData , headers } ;
171
174
}
172
175
@@ -185,132 +188,12 @@ export async function simpleDELETERequest(url: string, userConfig: DELETERequest
185
188
"api-version" : version + ""
186
189
}
187
190
} ;
188
- let frontTokenExists = cookieExists ( "sFrontToken" ) ;
191
+ const sdkLogsHooks = getHttpNetworkingSDKLogsHooks ( ) ;
192
+ sdkLogsHooks . preApiExecutionHook ( ) ;
189
193
delete userConfig . params ;
190
194
let response = await axios . delete ( url , userConfig ) ;
191
195
let data = await response . data ;
192
196
let headers = response . headers ;
193
- await sendAnalyticsIfFrontTokenRemoved ( url , frontTokenExists , headers ) ;
197
+ sdkLogsHooks . postApiExecutionHook ( url , headers ) ;
194
198
return { data, headers } ;
195
- }
196
-
197
- async function sendAnalyticsIfFrontTokenRemoved ( url : string , frontTokenExists : boolean , headers : any ) {
198
- if ( ! frontTokenExists ) {
199
- return ;
200
- }
201
- let updatedFrontTokenExists = cookieExists ( "sFrontToken" ) ;
202
- if ( ! updatedFrontTokenExists ) {
203
- // this means it was removed between the api call!
204
- // send analytics
205
- sendAuthAnalytics ( "front_token_removed" , {
206
- url,
207
- headers
208
- } ) ;
209
- await sendSDKLogsToBackend ( )
210
- }
211
- }
212
-
213
- export function cookieExists ( name : string ) {
214
- const cookies = document . cookie ;
215
- const regex = new RegExp ( "(^|; )" + encodeURIComponent ( name ) + "=" ) ;
216
- return regex . test ( cookies ) ;
217
- }
218
-
219
- const sendAuthAnalytics = ( eventName : string , payload : Record < string , unknown > , version = "v1" ) => {
220
- getAnalytics ( ) . then ( ( stAnalytics : any ) => {
221
- if ( stAnalytics === undefined ) {
222
- console . log ( "mocked event send:" , eventName , version , payload ) ;
223
- return ;
224
- }
225
- stAnalytics . sendEvent (
226
- eventName ,
227
- {
228
- type : "auth" ,
229
- ...payload
230
- } ,
231
- version
232
- ) ;
233
- } ) ;
234
- } ;
235
-
236
- function getCookieValue ( cookieName : string ) {
237
- const cookies = document . cookie ;
238
- const cookieArray = cookies . split ( ';' ) ;
239
- for ( let i = 0 ; i < cookieArray . length ; i ++ ) {
240
- const cookie = cookieArray [ i ] . trim ( ) ;
241
- if ( cookie . startsWith ( cookieName + '=' ) ) {
242
- return cookie . substring ( cookieName . length + 1 ) ;
243
- }
244
- }
245
- return null ;
246
- }
247
-
248
- export async function checkForDesyncedSession ( ) {
249
- const EVENT_NAME = 'desynced_session_state' ;
250
- const didFrontTokenExistBeforeAPICall = cookieExists ( "sFrontToken" ) ;
251
-
252
- try {
253
- await getUserInformation ( ) ;
254
- const doesFrontendTokenExistAfterAPICall = cookieExists ( "sFrontToken" ) ;
255
- if ( ! doesFrontendTokenExistAfterAPICall ) {
256
- const payload = {
257
- didFrontTokenExistBeforeAPICall,
258
- stLastAccessTokenUpdate : getCookieValue ( "st-last-access-token-update" ) ,
259
- statusCode : 200
260
- } ;
261
- getAnalytics ( ) . then ( ( stAnalytics : any ) => {
262
- if ( stAnalytics === undefined ) {
263
- console . log ( 'mocked event send:' , EVENT_NAME , 'v1' , payload ) ;
264
- return ;
265
- }
266
- stAnalytics . sendEvent (
267
- EVENT_NAME ,
268
- {
269
- type : EVENT_NAME ,
270
- ...payload ,
271
- } ,
272
- 'v1'
273
- ) ;
274
- } ) ;
275
- }
276
- } catch ( e :any ) {
277
- if (
278
- "response" in e &&
279
- e . response . status === 401 &&
280
- e . response . data &&
281
- e . response . data . message === "try refresh token"
282
- ) {
283
- if ( ! cookieExists ( "sFrontToken" ) ) {
284
- const payload = {
285
- didFrontTokenExistBeforeAPICall,
286
- stLastAccessTokenUpdate : getCookieValue ( "st-last-access-token-update" ) ,
287
- statusCode : 401
288
- } ;
289
- getAnalytics ( ) . then ( ( stAnalytics : any ) => {
290
- if ( stAnalytics === undefined ) {
291
- console . log ( "mocked event send:" , EVENT_NAME , "v1" , payload ) ;
292
- return ;
293
- }
294
- stAnalytics . sendEvent (
295
- EVENT_NAME ,
296
- {
297
- type : EVENT_NAME ,
298
- ...payload
299
- } ,
300
- "v1"
301
- ) ;
302
- } ) ;
303
- }
304
- }
305
- }
306
- }
307
-
308
- export function historyPushStateOverride ( onPush : ( ) => void ) {
309
- const originalPushState = history . pushState ;
310
- history . pushState = function ( ...args ) {
311
- const result = originalPushState . apply ( this , args ) ;
312
- onPush ( ) ;
313
- return result ;
314
- } ;
315
- }
316
-
199
+ }
0 commit comments