sendReq method
Implementation
@override
Future<Response?> sendReq(String url, ReqInfo params, String method) async {
var now = DateTime.now();
await setUpTransport();
if (transport == null) {
log.error("PlasoHttp2Client@sendReq: transport is null", null);
return null;
}
var stream = transport!.makeRequest(initHeader(url, params));
log.debug('PlasoHttp2Client@sendReq: will send $url', null);
stream.sendData(Utf8Encoder().convert(params.content), endStream: true);
List<int> messages = [];
String? contentType;
late String status;
try {
log.debug('PlasoHttp2Client@sendReq: wait for response', null);
await for (var message in stream.incomingMessages.timeout(timeout)) {
if (message is HeadersStreamMessage) {
for (var header in message.headers) {
var name = utf8.decode(header.name);
var a = DateTime.now();
if (a.difference(now) > Duration(seconds: 10)) {
log.debug(
"PlasoHttp2Client@sendReq: $name=${utf8.decode(header.value)}",
null);
}
if (name == "content-type") {
contentType = utf8.decode(header.value);
}
if (name == ":status") {
status = utf8.decode(header.value);
}
}
} else if (message is DataStreamMessage) {
messages.addAll(message.bytes);
}
}
} catch (err, stack) {
log.error("PlasoHttp2Client@sendReq: http2 error $err", null);
log.error(stack, null);
return null;
}
var resbody = Utf8Decoder().convert(messages);
log.debug("PlasoHttp2Client@sendReq: response: $resbody", null);
return Response(
body: resbody, contentType: contentType, status: int.parse(status));
}