rsshub
Version:
Make RSS Great Again!
44 lines (43 loc) • 1.47 kB
JavaScript
import { t as rofetch } from "./ofetch-W1aeTHCo.mjs";
import { t as parseDate } from "./parse-date-CjhZE69i.mjs";
//#region lib/routes/evri/index.ts
const route = {
path: "/:tracking",
categories: ["other"],
example: "/evri/H04AQA0004726589",
parameters: { tracking: "Tracking number" },
radar: [{
source: ["www.evri.com/track/parcel/:tracking/details"],
target: "/:tracking"
}],
name: "Parcel Tracking",
maintainers: ["HenryQW"],
handler,
url: "www.evri.com/track-a-parcel"
};
async function handler(ctx) {
const { tracking } = ctx.req.param();
const link = `https://www.evri.com/track/parcel/${tracking}/details`;
const apiUrl = "https://tracking.platform-apis.evri.com/v1";
const apikey = "0DExZiK9in2ihGce7cDPrnpQ4s4nIpWG";
const { parcelIdentifiers } = await rofetch(`${apiUrl}/parcels/reference/${tracking}`, { headers: { apikey } });
if (!parcelIdentifiers?.length) throw new Error(`No parcel found for tracking number ${tracking}`);
const { results } = await rofetch(`${apiUrl}/parcels`, {
query: { uniqueIds: parcelIdentifiers[0].urn },
headers: { apikey }
});
const items = results.flatMap((result) => result.trackingEvents.map((event) => ({
title: event.trackingPoint.description,
description: event.trackingStage.description,
pubDate: parseDate(event.dateTime),
guid: `evri:${tracking}:${event.dateTime}`,
link
})));
return {
title: `Evri Tracking ${tracking}`,
link,
item: items
};
}
//#endregion
export { route };