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 MultipartRequestBody) {
final multipartRequestBody = request.body as MultipartRequestBody;
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,
readProgressListener: request.readProgressListener,
writeProgressListener: request.writeProgressListener,
uploadChunkSize: request.writeChunkSize));
break;
case Methods.head:
response = await _withTimeOut(client._head(uri,
headers: rowRequest.request.headers,
readProgressListener: request.readProgressListener,
writeProgressListener: request.writeProgressListener,
uploadChunkSize: request.writeChunkSize));
break;
case Methods.post:
response = await _withTimeOut(client._post(uri,
headers: rowRequest.request.headers,
body: rowRequest.rowBody,
encoding: request.encoding,
readProgressListener: request.readProgressListener,
writeProgressListener: request.writeProgressListener,
uploadChunkSize: request.writeChunkSize));
break;
case Methods.put:
response = await _withTimeOut(client._put(uri,
headers: rowRequest.request.headers,
body: rowRequest.rowBody,
encoding: request.encoding,
readProgressListener: request.readProgressListener,
writeProgressListener: request.writeProgressListener,
uploadChunkSize: request.writeChunkSize));
break;
case Methods.delete:
response = await _withTimeOut(client._delete(uri,
headers: rowRequest.request.headers,
body: (rowRequest.rowBody ?? "") as String,
readProgressListener: request.readProgressListener,
writeProgressListener: request.writeProgressListener,
uploadChunkSize: request.writeChunkSize));
break;
case Methods.patch:
response = await _withTimeOut(client._patch(uri,
headers: rowRequest.request.headers,
body: rowRequest.rowBody,
encoding: request.encoding,
readProgressListener: request.readProgressListener,
writeProgressListener: request.writeProgressListener,
uploadChunkSize: request.writeChunkSize));
break;
}
}
RowResponse rowResponse = _fromHttpResponse(response, rowRequest.request);
return rowResponse;
}