verifyFace function

Future<Either<VerificationFailure, Map<String, dynamic>>> verifyFace({
  1. required String faceImage,
  2. required String verificationSessionId,
  3. required String apiKey,
})

Implementation

Future<Either<VerificationFailure, Map<String, dynamic>>> verifyFace({
  required String faceImage,
  required String verificationSessionId,
  required String apiKey,
}) async {
  try {
    var requestBody =
        FaceVerificationDto().toJson(faceImage, verificationSessionId);
    headers.addAll({"x-api-key": apiKey});

    final http.Response response = await http.post(
      Uri.parse('${apiBaseUrl}api/face-authentication'),
      headers: headers,
      body: jsonEncode(requestBody),
    );

    var result = jsonDecode(response.body);

    if (kDebugMode) {
      print(result);
    }

    if (result['success'] == true && result.containsKey('score')) {
      return right(
        {
          "faceMatch": result['score'],
          "frontImage": result['outputs']['frontImage'],
          "backImage": result['outputs']['backImage'],
          "sideImage": result['outputs']['sideImage'],
          "faceImage": result['outputs']['faceImage'],
        },
      );
    }

    return left(const VerificationFailure.faceNotMatch());
  } catch (e) {
    if (kDebugMode) {
      print(e);
    }

    return left(VerificationFailure.serverError(e.toString()));
  }
}