calcRequestSizeBytes static method
Calculation the bytes of a request depending on the request options.
Implementation
static int calcRequestSizeBytes(
BaseRequest request,
Map<String, String> additionalRequestHeaders,
) {
// 4 Bytes coming from empty line after first line and headers
var requestLength = 4;
try {
requestLength += calcRequestFirstLineLength(
request.method,
request.url.path,
request.url.query,
);
// Combining additional headers and request headers. Actual headers go second, so they override the default ones
requestLength += getHeaderLength({...additionalRequestHeaders, ...request.headers});
if (request.contentLength != null && request.contentLength! > 0) {
requestLength += request.contentLength!;
if (!request.headers.containsKey(DynatraceHttpHeaders.contentTypeHeader)) {
requestLength += '${DynatraceHttpHeaders.contentTypeHeader}: application/x-www-form-urlencoded'.length + 2;
}
if (!request.headers.containsKey(DynatraceHttpHeaders.contentLengthHeader)) {
requestLength += '${DynatraceHttpHeaders.contentLengthHeader}: ${request.contentLength}'.length + 2;
}
}
if (!request.headers.containsKey('Host')) {
requestLength += 'Host: ${request.url.authority}'.length + 2;
}
return requestLength;
} catch (error) {
Logger().d(
_tag,
"HttpClientUtils calcRequestSizeBytes(${request.url}): can't calculate request size.",
logType: LogType.Warning,
);
return -1;
}
}