const axios = require("axios"); const crypto = require("crypto"); const moment = require("moment"); const zulip = require("zulip-js"); const config = { username: "networktool-bot@zulip.ipsupply.com.au", apiKey: "0jMAmOuhfLvBqKJikv5oAkyNM4RIEoAM", realm: "https://zulip.ipsupply.com.au", }; const checkMultipleRequest = async () => { try { let report = []; let time = moment(Date.now()).format("HH:mm - DD/MM"); const client = await zulip(config); const code = Math.random().toString(36).substring(2, 12); const secretString = code + "24feca0508b52d34b51db4b40964e7fff12edf71208a4607126f75cb5d504f7f"; const accessToken = crypto .createHash("md5") .update(secretString) .digest("hex"); const tokenInt = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2ludC5pcHN1cHBseS5jb20uYXUvYXBpL2xvZ2luIiwiaWF0IjoxNjg5ODYyNjAxLCJleHAiOjE3MjEzOTg2MDEsIm5iZiI6MTY4OTg2MjYwMSwianRpIjoiUElZVjNBM3ZPQVlMQ081SyIsInN1YiI6MSwicHJ2IjoiYzhlZTFmYzg5ZTc3NWVjNGM3Mzg2NjdlNWJlMTdhNTkwYjZkNDBmYyJ9.UcybIKMBjTAY9i0PfIDQMtqHyN72Ul0jC03ZDGLGpMI"; let content = "||Server| System time| Status \n|---|:---|:---|:---:\n"; // Tạo tiêu đề const requests = [ { url: "https://disti.danielvu.com/api/sendSellerOrderToERP", method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json", loginid: null, Code: code, AccessToken: accessToken, }, data: {}, name: "Erp Sync Order Ebay", }, { url: "https://disti.danielvu.com/api/sendBuyerOrderToERP", method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json", loginid: null, Code: code, AccessToken: accessToken, }, data: {}, name: "Erp Sync PO Ebay", }, { url: "https://int.ipsupply.com.au/api/transferGetData", method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer " + tokenInt, }, data: { urlAPI: "/api/test-log-serial-number/sync-data", filter: {}, }, name: "Erp Sync Auto Test Log", }, { url: "https://int.ipsupply.com.au/api/transferPostData", method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer " + tokenInt, }, data: { urlAPI: "/api/logistics/check-shipping-rates", data: { courierName: "Fedex", packageInfo: { from: { streetLines: ["8/4A Bachell Ave"], city: "Lidcombe", stateOrProvinceCode: "", postalCode: "2141", countryCode: "AU", }, to: { streetLines: ["600 Terminal Dr"], city: "Louisville", stateOrProvinceCode: "KY", postalCode: "40209", countryCode: "US", }, requestedPackageLineItems: [ { weight: { value: 10, units: "KG", }, dimensions: { length: 2, width: 3, height: 4, units: "CM", }, groupPackageCount: 1, }, ], commodities: [ { description: "G6", quantity: 2, quantityUnits: "PCS", unitPrice: { amount: 10000, currency: "USD", }, customsValue: { amount: 10000, currency: "USD", }, }, ], inforCreateFedex: { pickupType: "CONTACT_FEDEX_TO_SCHEDULE", }, }, }, }, name: "Shipping rate Fedex", }, { url: "https://int.ipsupply.com.au/api/transferPostData", method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer " + tokenInt, }, data: { urlAPI: "/api/logistics/check-shipping-rates", data: { courierName: "DHL", packageInfo: { from: { streetLines: ["8/4A Bachell Ave"], city: "Lidcombe", stateOrProvinceCode: "", postalCode: "2141", countryCode: "AU", }, to: { streetLines: ["600 Terminal Dr"], city: "Louisville", stateOrProvinceCode: "KY", postalCode: "40209", countryCode: "US", }, requestedPackageLineItems: [ { weight: { value: 10, units: "KG", }, dimensions: { length: 2, width: 3, height: 4, units: "CM", }, groupPackageCount: 1, }, ], commodities: [ { description: "G6", quantity: 2, quantityUnits: "PCS", unitPrice: { amount: 10000, currency: "USD", }, customsValue: { amount: 10000, currency: "USD", }, }, ], inforCreateFedex: { pickupType: "CONTACT_FEDEX_TO_SCHEDULE", }, }, }, }, name: "Shipping rate DHL", }, { url: "https://int.ipsupply.com.au/api/transferPostData", method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer " + tokenInt, }, data: { urlAPI: "/api/logistics/check-shipping-rates", data: { courierName: "Transdirect", packageInfo: { from: { streetLines: ["8/4A Bachell Ave"], city: "Lidcombe", stateOrProvinceCode: "", postalCode: "2141", countryCode: "AU", }, to: { streetLines: ["600 Terminal Dr"], city: "Louisville", stateOrProvinceCode: "KY", postalCode: "40209", countryCode: "US", }, requestedPackageLineItems: [ { weight: { value: 10, units: "KG", }, dimensions: { length: 2, width: 3, height: 4, units: "CM", }, groupPackageCount: 1, }, ], commodities: [ { description: "G6", quantity: 2, quantityUnits: "PCS", unitPrice: { amount: 10000, currency: "USD", }, customsValue: { amount: 10000, currency: "USD", }, }, ], inforCreateFedex: { pickupType: "CONTACT_FEDEX_TO_SCHEDULE", }, }, }, }, name: "Shipping rate Transdirect", }, { url: "https://int.ipsupply.com.au/api/transferPostData", method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer " + tokenInt, }, data: { urlAPI: "/api/logistics/check-shipping-rates", data: { courierName: "Courier Please", packageInfo: { from: { streetLines: ["8/4A Bachell Ave"], city: "Lidcombe", stateOrProvinceCode: "", postalCode: "2141", countryCode: "AU", }, to: { streetLines: ["600 Terminal Dr"], city: "Louisville", stateOrProvinceCode: "KY", postalCode: "40209", countryCode: "US", }, requestedPackageLineItems: [ { weight: { value: 10, units: "KG", }, dimensions: { length: 2, width: 3, height: 4, units: "CM", }, groupPackageCount: 1, }, ], commodities: [ { description: "G6", quantity: 2, quantityUnits: "PCS", unitPrice: { amount: 10000, currency: "USD", }, customsValue: { amount: 10000, currency: "USD", }, }, ], inforCreateFedex: { pickupType: "CONTACT_FEDEX_TO_SCHEDULE", }, }, }, }, name: "Shipping rate Courier Please", }, { url: "https://int.ipsupply.com.au/api/transferPostData", method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer " + tokenInt, }, data: { urlAPI: "/api/logistics/check-shipping-rates", data: { courierName: "Auspost", packageInfo: { from: { streetLines: ["8/4A Bachell Ave"], city: "Lidcombe", stateOrProvinceCode: "", postalCode: "2141", countryCode: "AU", }, to: { streetLines: ["600 Terminal Dr"], city: "Louisville", stateOrProvinceCode: "KY", postalCode: "40209", countryCode: "US", }, requestedPackageLineItems: [ { weight: { value: 10, units: "KG", }, dimensions: { length: 2, width: 3, height: 4, units: "CM", }, groupPackageCount: 1, }, ], commodities: [ { description: "G6", quantity: 2, quantityUnits: "PCS", unitPrice: { amount: 10000, currency: "USD", }, customsValue: { amount: 10000, currency: "USD", }, }, ], inforCreateFedex: { pickupType: "CONTACT_FEDEX_TO_SCHEDULE", }, }, }, }, name: "Shipping rate Auspost", }, { url: "https://int.ipsupply.com.au/api/transferPostData", method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer " + tokenInt, }, data: { urlAPI: "/api/logistics/check-shipping-rates", data: { courierName: "FRF", packageInfo: { from: { streetLines: ["8/4A Bachell Ave"], city: "Lidcombe", stateOrProvinceCode: "", postalCode: "2141", countryCode: "AU", }, to: { streetLines: ["600 Terminal Dr"], city: "Louisville", stateOrProvinceCode: "KY", postalCode: "40209", countryCode: "US", }, requestedPackageLineItems: [ { weight: { value: 10, units: "KG", }, dimensions: { length: 2, width: 3, height: 4, units: "CM", }, groupPackageCount: 1, }, ], commodities: [ { description: "G6", quantity: 2, quantityUnits: "PCS", unitPrice: { amount: 10000, currency: "USD", }, customsValue: { amount: 10000, currency: "USD", }, }, ], inforCreateFedex: { pickupType: "CONTACT_FEDEX_TO_SCHEDULE", }, }, }, }, name: "Shipping rate FRF", }, { url: "https://int.ipsupply.com.au/api/transferPostData", method: "POST", headers: { "Content-Type": "application/json", Authorization: "Bearer " + tokenInt, }, data: { urlAPI: "/api/logistics/check-shipping-rates", data: { courierName: "Sendle", packageInfo: { from: { streetLines: ["8/4A Bachell Ave"], city: "Lidcombe", stateOrProvinceCode: "", postalCode: "2141", countryCode: "AU", }, to: { streetLines: ["600 Terminal Dr"], city: "Louisville", stateOrProvinceCode: "KY", postalCode: "40209", countryCode: "US", }, requestedPackageLineItems: [ { weight: { value: 10, units: "KG", }, dimensions: { length: 2, width: 3, height: 4, units: "CM", }, groupPackageCount: 1, }, ], commodities: [ { description: "G6", quantity: 2, quantityUnits: "PCS", unitPrice: { amount: 10000, currency: "USD", }, customsValue: { amount: 10000, currency: "USD", }, }, ], inforCreateFedex: { pickupType: "CONTACT_FEDEX_TO_SCHEDULE", }, }, }, }, name: "Shipping rate Sendle", }, ]; const promises = requests.map(async (req, index) => { if (req.method === "POST") { await axios .post(req.url, req.data, { headers: req.headers, }) .then((response) => { // console.log(response.data); // Xử lý response ở đây // console.log("Response:", response.data.length); // console.log("Status:", response.status); if (Array.isArray(response.data) === false) { if (response.data.data.length > 0) { report.push({ name: req.name, status: ":check:", code: response.status, lengthOrData: response.data.data.length, }); } else { if (Array.isArray(response.data.data) === false) { const data = JSON.stringify( response.data.data ).toLocaleLowerCase(); if (data.includes("error") || data.includes("invalid")) { report.push({ name: req.name, status: ":red_circle:", code: response.status, lengthOrData: JSON.stringify(response.data.data), }); } else { report.push({ name: req.name, status: ":check:", code: response.status, lengthOrData: response.data.data.length, }); } } else { if (response.data.data.length > 0) { report.push({ name: req.name, status: ":check:", code: response.status, lengthOrData: response.data.data.length, }); } else { report.push({ name: req.name, status: ":red_circle:", code: response.status, lengthOrData: JSON.stringify(response.data.data), }); } } } } else { if (response.data.length > 0) { report.push({ name: req.name, status: ":check:", code: response.status, lengthOrData: response.data.length, }); } else { report.push({ name: req.name, status: ":red_circle:", code: response.status, lengthOrData: response.data, }); } } }) .catch((error) => { // Xử lý lỗi ở đây console.log("Error:", error); report.push({ name: req.name, status: ":red_circle:", code: response.status, lengthOrData: "Error: " + error, }); }); } else { await axios .get(req.url, req.data, { headers: req.headers, }) .then((response) => { // Xử lý response ở đây // console.log("Response:", response.data.length); // console.log("Status:", response.status); if (Array.isArray(response.data) === false) { if (response.data.data.length > 0) { report.push({ name: req.name, status: ":check:", code: response.status, lengthOrData: response.data.data.length, }); } else { if (Array.isArray(response.data.data) === false) { const data = JSON.stringify( response.data.data ).toLocaleLowerCase(); if (data.includes("error") || data.includes("invalid")) { report.push({ name: req.name, status: ":red_circle:", code: response.status, lengthOrData: JSON.stringify(response.data.data), }); } else { report.push({ name: req.name, status: ":check:", code: response.status, lengthOrData: response.data.data.length, }); } } else { if (response.data.data.length > 0) { report.push({ name: req.name, status: ":check:", code: response.status, lengthOrData: response.data.data.length, }); } else { report.push({ name: req.name, status: ":red_circle:", code: response.status, lengthOrData: JSON.stringify(response.data.data), }); } } } } else { if (response.data.length > 0) { report.push({ name: req.name, status: ":check:", code: response.status, lengthOrData: response.data.length, }); } else { report.push({ name: req.name, status: ":red_circle:", code: response.status, lengthOrData: response.data, }); } } }) .catch((error) => { // Xử lý lỗi ở đây console.log("Error:", error); report.push({ name: req.name, status: ":red_circle:", code: error.status, lengthOrData: "Error: " + error, }); }); } }); await Promise.all(promises); report.map((u, index) => { content += "|" + (index + 1) + "|**" + u.name + "**|**" + time + "**|" + u.status + "|\n"; }); let params = { type: "stream", to: "networkToolBot", topic: "System Logs", content: JSON.stringify(report), }; let params1 = { type: "stream", to: "Result test - auto.nswteam.net", topic: "AU-dev", content: content, }; client.messages.send(params); client.messages.send(params1); console.log(report); } catch (error) { console.log(error); if ( JSON.stringify(error).includes( "https://zulip.ipsupply.com.au/api/v1/messages failed" ) ) { checkMultipleRequest(); } } }; checkMultipleRequest();