File tree Expand file tree Collapse file tree 3 files changed +24
-3
lines changed Expand file tree Collapse file tree 3 files changed +24
-3
lines changed Original file line number Diff line number Diff line change @@ -27,14 +27,24 @@ export const setEnabled = (isEnabled: boolean) => {
27
27
network = await _networkDataObfuscationHandler ( network ) ;
28
28
}
29
29
30
- if ( isContentTypeNotAllowed ( network . requestContentType ) ) {
30
+ if ( network . requestBodySize > InstabugConstants . MAX_NETWORK_BODY_SIZE_IN_BYTES ) {
31
+ network . requestBody = InstabugConstants . MAX_REQUEST_BODY_SIZE_EXCEEDED_MESSAGE ;
32
+ console . warn ( 'IBG-RN:' , InstabugConstants . MAX_REQUEST_BODY_SIZE_EXCEEDED_MESSAGE ) ;
33
+ }
34
+
35
+ if ( network . responseBodySize > InstabugConstants . MAX_NETWORK_BODY_SIZE_IN_BYTES ) {
36
+ network . responseBody = InstabugConstants . MAX_RESPONSE_BODY_SIZE_EXCEEDED_MESSAGE ;
37
+ console . warn ( 'IBG-RN:' , InstabugConstants . MAX_RESPONSE_BODY_SIZE_EXCEEDED_MESSAGE ) ;
38
+ }
39
+
40
+ if ( network . requestBody && isContentTypeNotAllowed ( network . requestContentType ) ) {
31
41
network . requestBody = `Body is omitted because content type ${ network . requestContentType } isn't supported` ;
32
42
console . warn (
33
43
`IBG-RN: The request body for the network request with URL ${ network . url } has been omitted because the content type ${ network . requestContentType } isn't supported.` ,
34
44
) ;
35
45
}
36
46
37
- if ( isContentTypeNotAllowed ( network . contentType ) ) {
47
+ if ( network . responseBody && isContentTypeNotAllowed ( network . contentType ) ) {
38
48
network . responseBody = `Body is omitted because content type ${ network . contentType } isn't supported` ;
39
49
console . warn (
40
50
`IBG-RN: The response body for the network request with URL ${ network . url } has been omitted because the content type ${ network . contentType } isn't supported.` ,
Original file line number Diff line number Diff line change 1
1
enum InstabugConstants {
2
2
GRAPHQL_HEADER = 'ibg-graphql-header' ,
3
+
4
+ // TODO: dyanmically get the max size from the native SDK and update the error message to reflect the dynamic size.
5
+ MAX_NETWORK_BODY_SIZE_IN_BYTES = 1024 * 10 , // 10 KB
6
+ MAX_RESPONSE_BODY_SIZE_EXCEEDED_MESSAGE = 'The response body has not been logged because it exceeds the maximum size of 10 Kb' ,
7
+ MAX_REQUEST_BODY_SIZE_EXCEEDED_MESSAGE = 'The request body has not been logged because it exceeds the maximum size of 10 Kb' ,
3
8
}
4
9
5
10
export default InstabugConstants ;
Original file line number Diff line number Diff line change 1
1
import InstabugConstants from './InstabugConstants' ;
2
+ import { stringifyIfNotString } from './InstabugUtils' ;
2
3
3
4
export type ProgressCallback = ( totalBytesSent : number , totalBytesExpectedToSend : number ) => void ;
4
5
export type NetworkDataCallback = ( data : NetworkData ) => void ;
@@ -80,7 +81,12 @@ export default {
80
81
} ;
81
82
82
83
XMLHttpRequest . prototype . setRequestHeader = function ( header , value ) {
83
- network . requestHeaders [ header ] = typeof value === 'string' ? value : JSON . stringify ( value ) ;
84
+ // According to the HTTP RFC, headers are case-insensitive, so we convert
85
+ // them to lower-case to make accessing headers predictable.
86
+ // This avoid issues like failing to get the Content-Type header for a request
87
+ // because the header is set as 'Content-Type' instead of 'content-type'.
88
+ const key = header . toLowerCase ( ) ;
89
+ network . requestHeaders [ key ] = stringifyIfNotString ( value ) ;
84
90
originalXHRSetRequestHeader . apply ( this , [ header , value ] ) ;
85
91
} ;
86
92
You can’t perform that action at this time.
0 commit comments