sendWithOptions method
Implementation
Future<StreamedResponse> sendWithOptions(
BaseRequest request, ProtobufOptions options) async {
if (options.requestMessage != null && options.shouldSerialize(request)) {
logger?.fine(
'[${request.url}] Serializing ${options.requestMessage.runtimeType} body with protobuf');
request = _createRequest(request, options);
}
if (options.responseMessage != null) {
request.headers[HttpHeaders.acceptHeader] = options.contentType;
}
var result = await super.sendWithOptions(request, options);
if (options.responseMessage != null && options.shouldDeserialize(result)) {
logger?.fine(
'[${request.url}] Deserializing ${options.responseMessage.runtimeType} content with protobuf');
final responseBytes = await result.stream.toBytes();
options.responseMessage!.mergeFromBuffer(responseBytes);
return StreamedResponse(
Stream.fromIterable([responseBytes]), result.statusCode,
contentLength: responseBytes.length,
headers: result.headers,
isRedirect: result.isRedirect,
reasonPhrase: result.reasonPhrase,
request: request,
persistentConnection: result.persistentConnection);
}
return result;
}