request static method

Future<Response> request(
  1. String url, [
  2. Object? body,
  3. HttpMethod method = HttpMethod.get
])

Implementation

static Future<Response> request(String url, [Object? body, HttpMethod method = HttpMethod.get]) async {
  Response resp;
  final uri = Uri.parse(BASE_URL + url);
  final headers = {
    'Content-Type': 'application/json',
  };
  if (SessionManager().token != null) {
    headers['Authorization'] = 'Bearer ${SessionManager().token}';
  }


  String? stringBody ;
  if (body is String ) {
    stringBody = body;
  } else if (body != null) {
    stringBody = jsonEncode(body);
  }
  switch (method) {
    case HttpMethod.get:
      resp = await http.get(uri, headers: headers);
      break;
    case HttpMethod.post:
      resp = await http.post(uri, headers:headers, body: stringBody);
      break;
    case HttpMethod.put:
      resp = await http.put(uri, headers:headers, body: stringBody);
      break;
    case HttpMethod.delete:
      resp = await http.delete(uri, headers:headers);
      break;
  }

  if (resp.statusCode == 401 && resp.reasonPhrase == 'TokenExpired') { // call refresh token
    if (! await SessionManager().refreshToken())  return resp;
    resp = await request(url, body, method);
  }
  return resp;
}