execute method
Override this method and implement http call by using the parameters from
the rowRequest
.
Implementation
@override
Future<RowResponse> execute(RowRequest rowRequest) async {
Response? response;
Uri uri = Uri.parse(rowRequest.request.url);
final request = rowRequest.request;
if (request.body is MultipartRestRequestBody) {
final multipartRequestBody = request.body as MultipartRestRequestBody;
final multipartRequest = _ProgressedMultipartRequest(
request.method.name, uri,
onProgress: multipartRequestBody.progressListener);
multipartRequest.fields.addAll(multipartRequestBody.fields);
multipartRequest.files.addAll(multipartRequestBody.files);
final requestHeaders = request.headers;
multipartRequest.headers.addAll(requestHeaders);
response = await _withTimeOut(multipartRequest
.send()
.then((streamResponse) => Response.fromStream(streamResponse)));
} else {
switch (request.method) {
case Methods.get:
response = await _withTimeOut(
client.get(uri, headers: rowRequest.request.headers));
break;
case Methods.head:
response = await _withTimeOut(
client.head(uri, headers: rowRequest.request.headers));
break;
case Methods.post:
response = await _withTimeOut(client.post(uri,
headers: rowRequest.request.headers,
body: rowRequest.rowBody,
encoding: request.encoding));
break;
case Methods.put:
response = await _withTimeOut(client.put(uri,
headers: rowRequest.request.headers,
body: rowRequest.rowBody,
encoding: request.encoding));
break;
case Methods.delete:
response = await _withTimeOut(client._deleteWithBody(uri,
headers: rowRequest.request.headers,
body: (rowRequest.request.body ?? "") as String));
break;
case Methods.patch:
response = await _withTimeOut(client.patch(uri,
headers: rowRequest.request.headers,
body: rowRequest.rowBody,
encoding: request.encoding));
break;
}
}
RowResponse rowResponse = _fromHttpResponse(response, rowRequest.request);
return rowResponse;
}