onRequest method
Handles chopper request and creates alice http call
Implementation
@override
FutureOr<chopper.Request> onRequest(chopper.Request request) async {
var baseRequest = await request.toBaseRequest();
AliceHttpCall call = AliceHttpCall(getRequestHashCode(baseRequest));
String endpoint = "";
String server = "";
if (request.baseUrl.isEmpty) {
List<String> split = request.url.split("/");
if (split.length > 2) {
server = split[1] + split[2];
}
if (split.length > 4) {
endpoint = "/";
for (int splitIndex = 3; splitIndex < split.length; splitIndex++) {
endpoint += split[splitIndex] + "/";
}
endpoint = endpoint.substring(0, endpoint.length - 1);
}
} else {
endpoint = request.url;
server = request.baseUrl;
}
call.method = request.method;
call.endpoint = endpoint;
call.server = server;
call.client = "Chopper";
if (request.baseUrl.contains("https") || request.url.contains("https")) {
call.secure = true;
}
AliceHttpRequest aliceHttpRequest = AliceHttpRequest();
if (request.body == null) {
aliceHttpRequest.size = 0;
aliceHttpRequest.body = "";
} else {
aliceHttpRequest.size = utf8.encode(request.body).length;
aliceHttpRequest.body = request.body;
}
aliceHttpRequest.time = DateTime.now();
aliceHttpRequest.headers = request.headers;
String? contentType = "unknown";
if (request.headers.containsKey("Content-Type")) {
contentType = request.headers["Content-Type"];
}
aliceHttpRequest.contentType = contentType;
aliceHttpRequest.queryParameters = request.parameters;
call.request = aliceHttpRequest;
call.response = AliceHttpResponse();
aliceCore.addCall(call);
return request;
}