execute method

  1. @override
Future<RestRowResponse> execute(
  1. RestRowRequest rowRequest
)
override

Override this method and implement http call by using the parameters from the rowRequest.

Implementation

@override
Future<RestRowResponse> execute(RestRowRequest 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 RestMethods.get:
        response = await _withTimeOut(
            client.get(uri, headers: rowRequest.request.headers));
        break;
      case RestMethods.head:
        response = await _withTimeOut(
            client.head(uri, headers: rowRequest.request.headers));
        break;
      case RestMethods.post:
        response = await _withTimeOut(client.post(uri,
            headers: rowRequest.request.headers,
            body: rowRequest.rowBody,
            encoding: request.encoding));
        break;
      case RestMethods.put:
        response = await _withTimeOut(client.put(uri,
            headers: rowRequest.request.headers,
            body: rowRequest.rowBody,
            encoding: request.encoding));
        break;
      case RestMethods.delete:
        response = await _withTimeOut(client._deleteWithBody(uri,
            headers: rowRequest.request.headers,
            body: (rowRequest.request.body ?? "") as String));
        break;
      case RestMethods.patch:
        response = await _withTimeOut(client.patch(uri,
            headers: rowRequest.request.headers,
            body: rowRequest.rowBody,
            encoding: request.encoding));
        break;
    }
  }

  RestRowResponse rowResponse =
      _fromHttpResponse(response, rowRequest.request);

  return rowResponse;
}