jne method

Future<DeliveryData> jne({
  1. String resiId = "CM96392284741",
})

Implementation

Future<scheme.DeliveryData> jne({
  //  JNEB-1005668732
  // TLJC3DMELCM0CGKJ
  String resiId = "CM96392284741",
}) async {
  String urlApi = "https://gql-web.shipper.id";
  Map parameter = {
    "operationName": "trackingDirect",
    "variables": {
      "input": {
        "logisticId": 1,
        "referenceNo": [resiId]
      }
    },
    "query":
        "query trackingDirect(\$input: TrackingDirectInput!) {\n  trackingDirect(p: \$input) {\n    referenceNo\n    logistic {\n      id\n      __typename\n    }\n    shipmentDate\n    details {\n      datetime\n      shipperStatus {\n        name\n        description\n        __typename\n      }\n      logisticStatus {\n        name\n        description\n        __typename\n      }\n      __typename\n    }\n    consigner {\n      name\n      address\n      __typename\n    }\n    consignee {\n      name\n      address\n      __typename\n    }\n    __typename\n  }\n}"
  };
  http.Response response = await http.post(
    Uri.parse(urlApi).replace(path: "/query"),
    headers: {
      "Accept": "*/*",
      "Accept-Encoding": "gzip, deflate, br",
      "Accept-Language": "en-US,en;q=0.9,id;q=0.8",
      "Content-Length": "${json.encode(parameter).length}",
      "Content-Type": "application/json",
      "Origin": "https://shipper.id",
      "Referer": "https://shipper.id/",
      "Sec-Ch-Ua":
          "\"Google Chrome\";v=\"113\", \"Chromium\";v=\"113\", \"Not-A.Brand\";v=\"24\"",
      "Sec-Ch-Ua-Mobile": "?0",
      "Sec-Ch-Ua-Platform": "\"Linux\"",
      "Sec-Fetch-Dest": "empty",
      "Sec-Fetch-Mode": "cors",
      "Sec-Fetch-Site": "same-site",
      "User-Agent":
          "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
      "X-App-Name": "shp-homepage-v5",
      "X-App-Version": "1.0.0",
    },
    body: json.encode(parameter),
  );
  Map jsonBodyRaw = () {
    try {
      return json.decode(response.body);
    } catch (e) {}
    return {};
  }.call();
  if (response.statusCode != 200) {
    return scheme.DeliveryData({
      "@type": "error",
      "message": "",
      "description": "",
    });
  }

  scheme_raw.JneBerduRawData jneBerduRawData =
      scheme_raw.JneBerduRawData(jsonBodyRaw);
  scheme_raw.BerduTrackData berduTrackData =
      jneBerduRawData.data.trackingDirect.first;
  List<scheme_raw.BerduTrackDataDetails> jne_berdu_track_history =
      berduTrackData.details;
  List<Map> jsonDataTrackHistory = jne_berdu_track_history
      .map((scheme_raw.BerduTrackDataDetails berduTrackDataDetails) {
    Map jsonData = {
      "@type": "trackHistoryData",
      "date": berduTrackDataDetails.datetime ?? "",
      "status": "",
      "message": berduTrackDataDetails.logisticStatus.description ?? "",
    };

    return jsonData;
  }).toList();
  Map jsonData = {
    "@type": "sicepatData",
    "id": berduTrackData.referenceNo ?? resiId,
    "sender": {
      "@type": "senderData",
      "name": berduTrackData.consigner.name,
      "address": berduTrackData.consigner.address,
    },
    "receiver": {
      "@type": "receiverData",
      "name": berduTrackData.consignee.name,
      "address": berduTrackData.consignee.address,
    },
    "service": 0,
    "weight": 0,
    "platform": 0,
    "send_date": "",
    "real_price": 0,
    "total_price": 0,
    "track_history": jsonDataTrackHistory,
  };

  return scheme.DeliveryData(jsonData);
}