requestNkBase<T> method

Future<NkResponse<T>?> requestNkBase<T>(
  1. RequestData<T> requestData
)

Make a request using the baseUrl that was initialized at instantiation.

This request must be made using the Nik Architecture API, Otherwise use request().

Implementation

Future<NkResponse<T>?> requestNkBase<T>(RequestData<T> requestData) async {
  try {
    var requestUri = Uri();
    if (requestData.queryParams != null)
      requestUri =
          _getRequestUri(requestData.route!, requestData.queryParams);
    else
      requestUri = _getRequestUri(requestData.route!);

    switch (requestData.type) {
      case RequestType.get:
        final httpResponse =
            await http.get(requestUri, headers: requestData.headers);
        if (httpResponse.statusCode >= 200 &&
            httpResponse.statusCode <= 226) {
          NkResponse<T> response = NkResponse<T>();
          response =
              nkResponseFromJson(httpResponse.body, requestData.fromJson);
          response.httpResponse = httpResponse;
          _validate(response);
          return response;
        } else {
          NkResponse<T> response = NkResponse<T>();
          response.success = false;
          response.httpResponse = httpResponse;
          return response;
        }

      case RequestType.post:
        if (requestData.headers == null)
          requestData.headers = {"Content-Type": requestData.contentType};
        else
          requestData.headers!
              .addAll({"Content-Type": requestData.contentType});
        final httpResponse = await http.post(requestUri,
            headers: requestData.headers,
            body: requestData.postPrefs!.body == null
                ? jsonEncode("")
                : jsonEncode(requestData.postPrefs!.body),
            encoding: requestData.postPrefs!.encoding);
        if (httpResponse.statusCode >= 200 &&
            httpResponse.statusCode <= 226) {
          NkResponse<T> response = NkResponse<T>();
          response =
              nkResponseFromJson(httpResponse.body, requestData.fromJson);
          response.httpResponse = httpResponse;
          _validate(response);
          return response;
        } else {
          NkResponse<T> response = NkResponse<T>();
          response.success = false;
          response.httpResponse = httpResponse;
          return response;
        }

      case RequestType.put:
        final httpResponse = await http.put(requestUri,
            headers: requestData.headers,
            body: requestData.postPrefs!.body == null
                ? ""
                : requestData.postPrefs!.body,
            encoding: requestData.postPrefs!.encoding);
        if (httpResponse.statusCode >= 200 &&
            httpResponse.statusCode <= 226) {
          NkResponse<T> response = NkResponse<T>();
          response =
              nkResponseFromJson(httpResponse.body, requestData.fromJson);
          response.httpResponse = httpResponse;
          _validate(response);
          return response;
        } else {
          NkResponse<T> response = NkResponse<T>();
          response.success = false;
          response.httpResponse = httpResponse;
          return response;
        }

      case RequestType.delete:
        final httpResponse =
            await http.delete(requestUri, headers: requestData.headers);
        if (httpResponse.statusCode >= 200 &&
            httpResponse.statusCode <= 226) {
          NkResponse<T> response = NkResponse<T>();
          response =
              nkResponseFromJson(httpResponse.body, requestData.fromJson);
          response.httpResponse = httpResponse;
          _validate(response);
          return response;
        } else {
          NkResponse<T> response = NkResponse<T>();
          response.success = false;
          response.httpResponse = httpResponse;
          return response;
        }

      default:
        return null;
    }
  } catch (e) {
    var err = NkResponse<T>();
    err.success = false;
    err.exception = e;
    return err;
  }
}