execute method

  1. @override
Future<RowResponse> execute(
  1. RowRequest rowRequest
)
override

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;
}