getRequest method

Future<Result> getRequest({
  1. required APISource source,
  2. MBPPageKey? pageKey,
  3. MBPPaginationManager? paginationManager,
})

Implementation

Future<Result> getRequest(
    {required APISource source,
    MBPPageKey? pageKey,
    MBPPaginationManager? paginationManager}) async {
  Result<http.Response>? result = Error(Exception("$_tag: timeout"));
  final baseURL = source.buildURL(source);
  var urlString = baseURL;
  if (pageKey == null || paginationManager == null) {
    urlString = baseURL;
  } else {
    if (paginationManager.isFistPage(pageKey)) {
      urlString = baseURL;
    } else {
      final link = paginationManager.nextPageLink(pageKey);
      if (link != null) {
        urlString = link;
      }
    }
  }
  try {
    final url = Uri.parse(urlString);
    final response = await http.get(url, headers: source.headers);
    final statusCode = response.statusCode;
    if (pageKey != null) {
      final headers = response.headers;
      paginationManager?.saveNextPageLink(pageKey, headers);
    }
    if (statusCode == 200) {
      return Success(response);
    } else {
      return Error(Exception("$_tag error: ${response.statusCode}"));
    }
  } on Exception catch (e) {
    result = Error(e);
  }
  return result;
}