request<T> method

Future<NkHttpResponse<T>?> request<T>(
  1. RequestData<T> requestData
)

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

Implementation

Future<NkHttpResponse<T>?> request<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) {
          NkHttpResponse<T> response = NkHttpResponse<T>();
          response.data = requestData.fromJson(httpResponse.body);
          response.httpResponse = httpResponse;
          return response;
        } else {
          NkHttpResponse<T> response = NkHttpResponse<T>();
          response.httpResponse = httpResponse;
          return response;
        }

      case RequestType.post:
        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) {
          NkHttpResponse<T> response = NkHttpResponse<T>();
          response.data = requestData.fromJson(httpResponse.body);
          response.httpResponse = httpResponse;
          return response;
        } else {
          NkHttpResponse<T> response = NkHttpResponse<T>();
          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) {
          NkHttpResponse<T> response = NkHttpResponse<T>();
          response.data = requestData.fromJson(httpResponse.body);
          response.httpResponse = httpResponse;
          return response;
        } else {
          NkHttpResponse<T> response = NkHttpResponse<T>();
          response.httpResponse = httpResponse;
          return response;
        }

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

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