jne method
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);
}