getUser method

  1. @override
Future getUser()

Implementation

@override
Future getUser() async {
  final pref = await SharedPreferences.getInstance();
  final cookie = pref.getString('cookie');
  try {
    final response = await http.get(
      Uri.parse('${ApiConfig.baseUrl}/@me'),
      headers: {
        ...ApiConfig.headers,
        'cookie': cookie!,
      },
    );
    switch (response.statusCode) {
      case 200:
        final responseData = jsonDecode(response.body)['data'];
        final user = User(
            id: responseData['id'],
            name: responseData['name'],
            email: responseData['email'],
            credits: responseData['credits'],
            cookie: cookie);
        return user;

      case 400:
        throw Failure('Invalid input data.');

      case 405:
        throw Failure(
            'The HTTP method used is not allowed for this endpoint.');

      case 413:
        throw Failure('The request body is too long');

      case 422:
        throw Failure(
            'The server cannot process the request due to invalid data.');

      case 429:
        throw Failure('Rate limit exceeded. Please try again later.');

      default:
        throw Failure('Unknown error occurred.');
    }
  } catch (e) {
    throw Failure(e.toString());
  }
}