generateToken method

  1. @override
Future<Either<NetworkError, DigitalpayeResponseToken>> generateToken()
override

Implementation

@override
Future<Either<NetworkError, DigitalpayeResponseToken>> generateToken() async {
  try {
    final url = config.isSandbox
        ? Constantes.apiUrlSandbox
        : '${Constantes.apiUrlProd}/${Constantes.versionApp}/auth';
    String basicAuth =
        'Basic ${base64Encode(utf8.encode('${config.apiKey}:${config.apiSecret}'))}';
    final response = await http.post(
      Uri.parse(url),
      headers: {
        'Authorization': basicAuth,
        'Content-Type': 'application/json',
      },
    );
    if (response.statusCode == 200) {
      final data = jsonDecode(response.body);
      return Right(
        DigitalpayeResponseToken(
          codeStatus: data["code_status"],
          status: data["status"],
          token: data["token"],
          exp: data["exp"],
        ),
      );
    } else {
      final data = jsonDecode(response.body);
      return Left(
        NetworkError(
          codeStatus: data["code_status"],
          status: data["status"],
          message: EnumResponseNetwork.from(value: data["message"])
              .localizableValue,
        ),
      );
    }
  } catch (e) {
    // Gérer les erreurs
    return Left(NetworkError(
      message: EnumResponseNetwork.from(value: e.toString()).localizableValue,
    ));
  }
}