patchMobileAnalysisV2 static method

Future<PericulumResponse?> patchMobileAnalysisV2({
  1. required String publicKey,
  2. required String overviewkey,
  3. String? phoneNumber,
  4. String? bvn,
})

Implementation

static Future<PericulumResponse?> patchMobileAnalysisV2({
  required String publicKey,
  required String overviewkey,
  String? phoneNumber,
  String? bvn,
}) async {
  try {
    final senderAddress = await getSenderAddress(publicKey: publicKey);
    final response =
        await _channel.invokeMethod('generateMobileDataAnalysis', {
      "publicKey": publicKey,
      "overviewkey": overviewkey,
      'phoneNumber': phoneNumber,
      "bvn": bvn,
    });
    Periculum data = periculumFromJson(response.toString());

    List<Datum> unfilteredSMS = [];
    List<Datum> filteredSMS = [];
    unfilteredSMS = data.sms.data;
    for (int i = 0; i < senderAddress.length; i++) {
      for (var smses in unfilteredSMS) {
        if (smses.address
            .toLowerCase()
            .contains(senderAddress[i].address.toLowerCase())) {
          filteredSMS.add(smses);
        }
      }
    }
    Sms filterSMS = Sms(count: filteredSMS.length, data: filteredSMS);
    Periculum filteredData = Periculum(
        appName: data.appName,
        bundleId: data.bundleId,
        device: data.device,
        metadata: data.metadata,
        publicKey: publicKey,
        sms: filterSMS,
        statementName: data.statementName,
        version: data.version);

    var url = Uri.parse('$baseUrl/mobile/insights/v2/1');
    var call = await http.patch(url,
        headers: <String, String>{
          'Content-Type': 'application/json; charset=UTF-8',
        },
        body: json.encode(filteredData.toJson()));

    switch (call.statusCode) {
      case 200:
        OverviewKey overviewKey = overviewKeyFromJson(call.body.toString());
        return PericulumResponse(
            mobileInsightsOverviewKey: overviewKey.mobileInsightsOverviewKey,
            statusCode: call.statusCode,
            status: true);
      case 401:
        return PericulumResponse(
            mobileInsightsOverviewKey: null,
            statusCode: call.statusCode,
            status: false,
            message: 'Invalid publicKey');

      case 500:
        return PericulumResponse(
            mobileInsightsOverviewKey: null,
            statusCode: call.statusCode,
            status: false,
            message: 'Overview key does not exist.');
      default:
        return PericulumResponse(
            mobileInsightsOverviewKey: null,
            statusCode: call.statusCode,
            status: false,
            message: call.body.toString());
    }
  } on FormatException catch (e) {
    throw e.toString();
  } on HttpException catch (_) {
    rethrow;
  } catch (e) {
    rethrow;
  }
}