@hszrdm/core 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/admin/index.js +7481 -5872
- package/.medusa/server/src/admin/index.mjs +7482 -5873
- package/.medusa/server/src/api/admin/arukereso/marketplace-preview/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/arukereso/marketplace-preview/route.js +26 -0
- package/.medusa/server/src/api/admin/billingo/advance/route.d.ts +8 -0
- package/.medusa/server/src/api/admin/billingo/advance/route.js +55 -0
- package/.medusa/server/src/api/admin/billingo/partial-credit/route.d.ts +8 -0
- package/.medusa/server/src/api/admin/billingo/partial-credit/route.js +69 -0
- package/.medusa/server/src/api/admin/documents/[id]/route.d.ts +22 -0
- package/.medusa/server/src/api/admin/documents/[id]/route.js +107 -0
- package/.medusa/server/src/api/admin/documents/route.d.ts +21 -0
- package/.medusa/server/src/api/admin/documents/route.js +117 -0
- package/.medusa/server/src/api/admin/google-ads/diagnostics/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/google-ads/diagnostics/route.js +26 -0
- package/.medusa/server/src/api/admin/google-ads/oauth/start/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/google-ads/oauth/start/route.js +27 -0
- package/.medusa/server/src/api/admin/google-merchant/data-source/sync/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/google-merchant/data-source/sync/route.js +69 -0
- package/.medusa/server/src/api/admin/google-merchant/diagnostics/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/google-merchant/diagnostics/route.js +26 -0
- package/.medusa/server/src/api/admin/google-merchant/oauth/start/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/google-merchant/oauth/start/route.js +25 -0
- package/.medusa/server/src/api/admin/orders/[id]/shipping/route.js +28 -28
- package/.medusa/server/src/api/admin/shipping/mpl/close/route.d.ts +1 -1
- package/.medusa/server/src/api/admin/shipping/mpl/close/route.js +48 -70
- package/.medusa/server/src/api/auth/google-ads/callback/route.d.ts +2 -0
- package/.medusa/server/src/api/auth/google-ads/callback/route.js +58 -0
- package/.medusa/server/src/api/feeds/arukereso-marketplace.xml/route.d.ts +2 -0
- package/.medusa/server/src/api/feeds/arukereso-marketplace.xml/route.js +33 -0
- package/.medusa/server/src/api/feeds/google-merchant.xml/route.js +5 -3
- package/.medusa/server/src/api/hooks/arukereso/marketplace/order/route.d.ts +2 -0
- package/.medusa/server/src/api/hooks/arukereso/marketplace/order/route.js +211 -0
- package/.medusa/server/src/api/hooks/simplepay/ipn/route.js +113 -23
- package/.medusa/server/src/api/store/account/orders/[id]/reorder/route.d.ts +2 -0
- package/.medusa/server/src/api/store/account/orders/[id]/reorder/route.js +113 -0
- package/.medusa/server/src/api/store/arukereso/backlink/route.d.ts +2 -0
- package/.medusa/server/src/api/store/arukereso/backlink/route.js +73 -0
- package/.medusa/server/src/api/store/arukereso/trusted-shop/[id]/route.d.ts +2 -0
- package/.medusa/server/src/api/store/arukereso/trusted-shop/[id]/route.js +84 -0
- package/.medusa/server/src/api/store/arukereso/widget/route.d.ts +2 -0
- package/.medusa/server/src/api/store/arukereso/widget/route.js +64 -0
- package/.medusa/server/src/api/store/documents/route.d.ts +2 -0
- package/.medusa/server/src/api/store/documents/route.js +84 -0
- package/.medusa/server/src/api/store/google-merchant/oauth/callback/route.d.ts +2 -0
- package/.medusa/server/src/api/store/google-merchant/oauth/callback/route.js +50 -0
- package/.medusa/server/src/config.d.ts +3 -3
- package/.medusa/server/src/config.js +64 -87
- package/.medusa/server/src/core/documents.d.ts +31 -0
- package/.medusa/server/src/core/documents.js +47 -0
- package/.medusa/server/src/core/version.d.ts +2 -2
- package/.medusa/server/src/core/version.js +2 -2
- package/.medusa/server/src/lib/modules/arukereso/index.d.ts +1 -0
- package/.medusa/server/src/lib/modules/arukereso/index.js +2 -1
- package/.medusa/server/src/lib/modules/arukereso/marketplace-feed.d.ts +19 -0
- package/.medusa/server/src/lib/modules/arukereso/marketplace-feed.js +100 -0
- package/.medusa/server/src/lib/modules/billingo/actions.js +42 -12
- package/.medusa/server/src/lib/modules/billingo/advance.d.ts +68 -0
- package/.medusa/server/src/lib/modules/billingo/advance.js +309 -0
- package/.medusa/server/src/lib/modules/billingo/automation.js +49 -9
- package/.medusa/server/src/lib/modules/billingo/client.d.ts +5 -1
- package/.medusa/server/src/lib/modules/billingo/client.js +12 -6
- package/.medusa/server/src/lib/modules/billingo/index.d.ts +2 -0
- package/.medusa/server/src/lib/modules/billingo/index.js +3 -1
- package/.medusa/server/src/lib/modules/billingo/mapper.d.ts +38 -1
- package/.medusa/server/src/lib/modules/billingo/mapper.js +32 -1
- package/.medusa/server/src/lib/modules/billingo/partial-credit.d.ts +55 -0
- package/.medusa/server/src/lib/modules/billingo/partial-credit.js +338 -0
- package/.medusa/server/src/lib/modules/billingo/types.d.ts +7 -2
- package/.medusa/server/src/lib/modules/google-ads/adjustments.d.ts +21 -0
- package/.medusa/server/src/lib/modules/google-ads/adjustments.js +146 -0
- package/.medusa/server/src/lib/modules/google-ads/api.d.ts +23 -0
- package/.medusa/server/src/lib/modules/google-ads/api.js +171 -0
- package/.medusa/server/src/lib/modules/google-ads/diagnostics.d.ts +47 -0
- package/.medusa/server/src/lib/modules/google-ads/diagnostics.js +164 -0
- package/.medusa/server/src/lib/modules/google-merchant/category-fields.d.ts +7 -0
- package/.medusa/server/src/lib/modules/google-merchant/category-fields.js +210 -0
- package/.medusa/server/src/lib/modules/google-merchant/data-source.d.ts +17 -0
- package/.medusa/server/src/lib/modules/google-merchant/data-source.js +132 -0
- package/.medusa/server/src/lib/modules/google-merchant/diagnostics.d.ts +33 -0
- package/.medusa/server/src/lib/modules/google-merchant/diagnostics.js +113 -0
- package/.medusa/server/src/lib/modules/google-merchant/index.d.ts +5 -0
- package/.medusa/server/src/lib/modules/google-merchant/index.js +6 -1
- package/.medusa/server/src/lib/modules/google-merchant/merchant-api.d.ts +18 -0
- package/.medusa/server/src/lib/modules/google-merchant/merchant-api.js +120 -0
- package/.medusa/server/src/lib/modules/google-merchant/shipping.d.ts +13 -0
- package/.medusa/server/src/lib/modules/google-merchant/shipping.js +97 -0
- package/.medusa/server/src/lib/modules/google-tag-manager/api.d.ts +1 -0
- package/.medusa/server/src/lib/modules/google-tag-manager/api.js +3 -0
- package/.medusa/server/src/lib/modules/google-tag-manager/index.d.ts +1 -0
- package/.medusa/server/src/lib/modules/google-tag-manager/index.js +3 -0
- package/.medusa/server/src/lib/modules/google-tag-manager/sync.d.ts +1 -0
- package/.medusa/server/src/lib/modules/google-tag-manager/sync.js +3 -0
- package/.medusa/server/src/lib/modules/shipping/actions.js +163 -352
- package/.medusa/server/src/lib/modules/shipping/durable-create.d.ts +2 -1
- package/.medusa/server/src/lib/modules/shipping/durable-create.js +33 -5
- package/.medusa/server/src/lib/modules/shipping/idempotency.js +4 -2
- package/.medusa/server/src/lib/modules/shipping/types.d.ts +1 -1
- package/.medusa/server/src/modules/core-documents/index.d.ts +38 -0
- package/.medusa/server/src/modules/core-documents/index.js +18 -0
- package/.medusa/server/src/modules/core-documents/migrations/Migration20261102190000.d.ts +5 -0
- package/.medusa/server/src/modules/core-documents/migrations/Migration20261102190000.js +22 -0
- package/.medusa/server/src/modules/core-documents/models/core-document-assignment.d.ts +9 -0
- package/.medusa/server/src/modules/core-documents/models/core-document-assignment.js +18 -0
- package/.medusa/server/src/modules/core-documents/models/core-document.d.ts +18 -0
- package/.medusa/server/src/modules/core-documents/models/core-document.js +27 -0
- package/.medusa/server/src/modules/core-documents/service.d.ts +38 -0
- package/.medusa/server/src/modules/core-documents/service.js +13 -0
- package/.medusa/server/src/modules/integration-operation/state.d.ts +1 -0
- package/.medusa/server/src/modules/integration-operation/state.js +11 -50
- package/.medusa/server/src/modules/integration-operation/types.d.ts +1 -1
- package/.medusa/server/src/modules/integration-settings/arukereso-registration.js +19 -2
- package/.medusa/server/src/modules/integration-settings/connection-test.js +14 -1
- package/.medusa/server/src/modules/integration-settings/csomagpiac-definition.d.ts +2 -0
- package/.medusa/server/src/modules/integration-settings/csomagpiac-definition.js +49 -0
- package/.medusa/server/src/modules/integration-settings/csomagpiac-registration.d.ts +1 -0
- package/.medusa/server/src/modules/integration-settings/csomagpiac-registration.js +35 -0
- package/.medusa/server/src/modules/integration-settings/google-merchant-registration.js +23 -2
- package/.medusa/server/src/modules/integration-settings/hot-reload-registration.d.ts +1 -0
- package/.medusa/server/src/modules/integration-settings/hot-reload-registration.js +23 -0
- package/.medusa/server/src/modules/integration-settings/index.d.ts +4 -0
- package/.medusa/server/src/modules/integration-settings/index.js +5 -1
- package/.medusa/server/src/modules/integration-settings/manager.js +38 -4
- package/.medusa/server/src/modules/integration-settings/reloadable.d.ts +10 -0
- package/.medusa/server/src/modules/integration-settings/reloadable.js +58 -0
- package/.medusa/server/src/modules/integration-settings/runtime-snapshot.d.ts +9 -0
- package/.medusa/server/src/modules/integration-settings/runtime-snapshot.js +48 -3
- package/.medusa/server/src/modules/integration-settings/simplepay-registration.d.ts +1 -0
- package/.medusa/server/src/modules/integration-settings/simplepay-registration.js +18 -0
- package/.medusa/server/src/modules/integration-settings/storefront-public-registration.js +15 -5
- package/.medusa/server/src/providers/csomagpiac/client.d.ts +25 -0
- package/.medusa/server/src/providers/csomagpiac/client.js +144 -0
- package/.medusa/server/src/providers/csomagpiac/fulfillment-provider.d.ts +45 -0
- package/.medusa/server/src/providers/csomagpiac/fulfillment-provider.js +221 -0
- package/.medusa/server/src/providers/csomagpiac/index.d.ts +7 -0
- package/.medusa/server/src/providers/csomagpiac/index.js +30 -0
- package/.medusa/server/src/providers/csomagpiac/service.d.ts +46 -0
- package/.medusa/server/src/providers/csomagpiac/service.js +226 -0
- package/.medusa/server/src/providers/csomagpiac/types.d.ts +65 -0
- package/.medusa/server/src/providers/csomagpiac/types.js +27 -0
- package/.medusa/server/src/providers/dpd/fulfillment-provider.d.ts +2 -1
- package/.medusa/server/src/providers/dpd/fulfillment-provider.js +83 -25
- package/.medusa/server/src/providers/dpd/service.js +5 -3
- package/.medusa/server/src/providers/email/service.d.ts +7 -6
- package/.medusa/server/src/providers/email/service.js +51 -25
- package/.medusa/server/src/providers/foxpost/foxpost-service.js +5 -9
- package/.medusa/server/src/providers/foxpost/fulfillment-provider.d.ts +1 -0
- package/.medusa/server/src/providers/foxpost/fulfillment-provider.js +76 -66
- package/.medusa/server/src/providers/gls/fulfillment-provider.d.ts +1 -0
- package/.medusa/server/src/providers/gls/fulfillment-provider.js +76 -13
- package/.medusa/server/src/providers/gls/gls-service.d.ts +16 -0
- package/.medusa/server/src/providers/gls/gls-service.js +26 -65
- package/.medusa/server/src/providers/gls/types.d.ts +15 -0
- package/.medusa/server/src/providers/mpl/fulfillment-provider.d.ts +1 -0
- package/.medusa/server/src/providers/mpl/fulfillment-provider.js +61 -186
- package/.medusa/server/src/providers/mpl/index.d.ts +2 -0
- package/.medusa/server/src/providers/mpl/index.js +7 -2
- package/.medusa/server/src/providers/mpl/service.d.ts +35 -1
- package/.medusa/server/src/providers/mpl/service.js +82 -370
- package/.medusa/server/src/providers/mpl/types.d.ts +18 -0
- package/.medusa/server/src/providers/mpl/types.js +1 -1
- package/.medusa/server/src/providers/packeta/client.d.ts +2 -1
- package/.medusa/server/src/providers/packeta/client.js +24 -2
- package/.medusa/server/src/providers/packeta/fulfillment-provider.d.ts +1 -0
- package/.medusa/server/src/providers/packeta/fulfillment-provider.js +73 -5
- package/.medusa/server/src/providers/packeta/service.d.ts +1 -0
- package/.medusa/server/src/providers/packeta/service.js +85 -22
- package/.medusa/server/src/providers/packeta/types.d.ts +26 -0
- package/.medusa/server/src/providers/packeta/types.js +1 -1
- package/.medusa/server/src/providers/resilient-stripe/index.d.ts +19 -1
- package/.medusa/server/src/providers/resilient-stripe/index.js +55 -3
- package/.medusa/server/src/providers/simplepay/config.js +11 -1
- package/.medusa/server/src/providers/simplepay/index.d.ts +2 -0
- package/.medusa/server/src/providers/simplepay/index.js +5 -3
- package/.medusa/server/src/providers/simplepay/runtime-service.d.ts +13 -0
- package/.medusa/server/src/providers/simplepay/runtime-service.js +55 -0
- package/.medusa/server/src/providers/simplepay/service.d.ts +2 -0
- package/.medusa/server/src/providers/simplepay/service.js +40 -5
- package/.medusa/server/src/subscribers/google-ads-order-canceled.d.ts +7 -0
- package/.medusa/server/src/subscribers/google-ads-order-canceled.js +50 -0
- package/.medusa/server/src/subscribers/google-ads-payment-refunded.d.ts +7 -0
- package/.medusa/server/src/subscribers/google-ads-payment-refunded.js +181 -0
- package/.medusa/server/src/subscribers/simplepay-paid-order-recovery.js +14 -1
- package/package.json +6 -2
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
const integration_settings_1 = require("../../../../../modules/integration-settings");
|
|
5
|
+
const google_merchant_1 = require("../../../../../lib/modules/google-merchant");
|
|
6
|
+
async function POST(req, res) {
|
|
7
|
+
const actorId = req.auth_context?.actor_id;
|
|
8
|
+
try {
|
|
9
|
+
const store = req.scope.resolve(integration_settings_1.INTEGRATION_SETTINGS_MODULE);
|
|
10
|
+
const resolved = await (0, integration_settings_1.resolvedIntegrationEnvironment)(store, "google-merchant");
|
|
11
|
+
const env = resolved.env;
|
|
12
|
+
if (!resolved.enabled)
|
|
13
|
+
throw new Error("A Google Merchant integráció nincs bekapcsolva.");
|
|
14
|
+
if (env.GOOGLE_MERCHANT_API_ENABLED !== "true") {
|
|
15
|
+
throw new Error("A Merchant API v1 nincs bekapcsolva.");
|
|
16
|
+
}
|
|
17
|
+
if (env.GOOGLE_MERCHANT_DATA_SOURCE_ENABLED !== "true") {
|
|
18
|
+
throw new Error("Az automatikus Merchant data source nincs bekapcsolva.");
|
|
19
|
+
}
|
|
20
|
+
const feedUrl = String(env.GOOGLE_MERCHANT_DATA_SOURCE_FEED_URL || "").trim();
|
|
21
|
+
if (!feedUrl)
|
|
22
|
+
throw new Error("A Merchant data source publikus feed URL-je hiányzik.");
|
|
23
|
+
const countryCode = String(env.GOOGLE_MERCHANT_COUNTRY_CODE || "HU").trim().toUpperCase();
|
|
24
|
+
const contentLanguage = String(env.GOOGLE_MERCHANT_LOCALE || "hu-HU")
|
|
25
|
+
.trim()
|
|
26
|
+
.slice(0, 2)
|
|
27
|
+
.toLowerCase();
|
|
28
|
+
const displayName = String(env.GOOGLE_MERCHANT_DATA_SOURCE_NAME || "HSZRDM Commerce – Product Feed").trim();
|
|
29
|
+
const fetchHourRaw = String(env.GOOGLE_MERCHANT_DATA_SOURCE_FETCH_HOUR || "3").trim();
|
|
30
|
+
const fetchHour = Number(fetchHourRaw);
|
|
31
|
+
const timeZone = String(env.GOOGLE_MERCHANT_DATA_SOURCE_TIME_ZONE || "Europe/Budapest").trim();
|
|
32
|
+
const result = await (0, google_merchant_1.syncGoogleMerchantDataSource)({
|
|
33
|
+
env,
|
|
34
|
+
feedUrl,
|
|
35
|
+
displayName,
|
|
36
|
+
countryCode,
|
|
37
|
+
contentLanguage,
|
|
38
|
+
fetchHour,
|
|
39
|
+
timeZone,
|
|
40
|
+
});
|
|
41
|
+
const integration = await (0, integration_settings_1.saveIntegrationSettings)({
|
|
42
|
+
store,
|
|
43
|
+
key: "google-merchant",
|
|
44
|
+
enabled: resolved.enabled,
|
|
45
|
+
values: {
|
|
46
|
+
GOOGLE_MERCHANT_DATA_SOURCE_ID: result.dataSourceId,
|
|
47
|
+
},
|
|
48
|
+
actorId,
|
|
49
|
+
});
|
|
50
|
+
return res.json({
|
|
51
|
+
ok: true,
|
|
52
|
+
action: result.action,
|
|
53
|
+
data_source: result,
|
|
54
|
+
integration,
|
|
55
|
+
message: result.action === "created"
|
|
56
|
+
? "Merchant data source létrehozva, mentve és azonnali feed lekérés elindítva."
|
|
57
|
+
: "Merchant data source frissítve és azonnali feed lekérés elindítva.",
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return res.status(400).json({
|
|
62
|
+
ok: false,
|
|
63
|
+
message: error instanceof Error
|
|
64
|
+
? error.message
|
|
65
|
+
: "A Merchant data source szinkron nem sikerült.",
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2dvb2dsZS1tZXJjaGFudC9kYXRhLXNvdXJjZS9zeW5jL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0Esb0JBeUVDO0FBakZELHNGQUtvRDtBQUNwRCxnRkFBeUY7QUFFbEYsS0FBSyxVQUFVLElBQUksQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQ2hFLE1BQU0sT0FBTyxHQUFJLEdBQTJELENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQTtJQUNuRyxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDN0Isa0RBQTJCLENBQ1csQ0FBQTtRQUN4QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEscURBQThCLEVBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFDL0UsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQTtRQUV4QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUE7UUFDekYsSUFBSSxHQUFHLENBQUMsMkJBQTJCLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFBO1FBQ3pELENBQUM7UUFDRCxJQUFJLEdBQUcsQ0FBQyxtQ0FBbUMsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUE7UUFDM0UsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDN0UsSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUE7UUFFdEYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUN6RixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHNCQUFzQixJQUFJLE9BQU8sQ0FBQzthQUNsRSxJQUFJLEVBQUU7YUFDTixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNYLFdBQVcsRUFBRSxDQUFBO1FBQ2hCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FDeEIsR0FBRyxDQUFDLGdDQUFnQyxJQUFJLGdDQUFnQyxDQUN6RSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ1IsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNyRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUNyQixHQUFHLENBQUMscUNBQXFDLElBQUksaUJBQWlCLENBQy9ELENBQUMsSUFBSSxFQUFFLENBQUE7UUFFUixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsOENBQTRCLEVBQUM7WUFDaEQsR0FBRztZQUNILE9BQU87WUFDUCxXQUFXO1lBQ1gsV0FBVztZQUNYLGVBQWU7WUFDZixTQUFTO1lBQ1QsUUFBUTtTQUNULENBQUMsQ0FBQTtRQUVGLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSw4Q0FBdUIsRUFBQztZQUNoRCxLQUFLO1lBQ0wsR0FBRyxFQUFFLGlCQUFpQjtZQUN0QixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87WUFDekIsTUFBTSxFQUFFO2dCQUNOLDhCQUE4QixFQUFFLE1BQU0sQ0FBQyxZQUFZO2FBQ3BEO1lBQ0QsT0FBTztTQUNSLENBQUMsQ0FBQTtRQUVGLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztZQUNkLEVBQUUsRUFBRSxJQUFJO1lBQ1IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFdBQVc7WUFDWCxPQUFPLEVBQ0wsTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTO2dCQUN6QixDQUFDLENBQUMsNkVBQTZFO2dCQUMvRSxDQUFDLENBQUMsb0VBQW9FO1NBQzNFLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMxQixFQUFFLEVBQUUsS0FBSztZQUNULE9BQU8sRUFDTCxLQUFLLFlBQVksS0FBSztnQkFDcEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPO2dCQUNmLENBQUMsQ0FBQywrQ0FBK0M7U0FDdEQsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const integration_settings_1 = require("../../../../modules/integration-settings");
|
|
5
|
+
const google_merchant_1 = require("../../../../lib/modules/google-merchant");
|
|
6
|
+
async function GET(req, res) {
|
|
7
|
+
try {
|
|
8
|
+
const store = req.scope.resolve(integration_settings_1.INTEGRATION_SETTINGS_MODULE);
|
|
9
|
+
const resolved = await (0, integration_settings_1.resolvedIntegrationEnvironment)(store, "google-merchant");
|
|
10
|
+
if (resolved.env.GOOGLE_MERCHANT_API_ENABLED !== "true") {
|
|
11
|
+
return res.status(409).json({
|
|
12
|
+
message: "A Google Merchant API kapcsolat nincs bekapcsolva.",
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
const diagnostics = await (0, google_merchant_1.getGoogleMerchantDiagnostics)(resolved.env);
|
|
16
|
+
return res.json({ diagnostics });
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
return res.status(502).json({
|
|
20
|
+
message: error instanceof Error
|
|
21
|
+
? error.message
|
|
22
|
+
: "A Google Merchant diagnosztika nem kérhető le.",
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2dvb2dsZS1tZXJjaGFudC9kaWFnbm9zdGljcy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVFBLGtCQXVCQztBQTlCRCxtRkFJaUQ7QUFDakQsNkVBQXNGO0FBRS9FLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDN0Isa0RBQTJCLENBQ1csQ0FBQTtRQUN4QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEscURBQThCLEVBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFFL0UsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLDJCQUEyQixLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3hELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLE9BQU8sRUFBRSxvREFBb0Q7YUFDOUQsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSw4Q0FBNEIsRUFBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDcEUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDMUIsT0FBTyxFQUNMLEtBQUssWUFBWSxLQUFLO2dCQUNwQixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU87Z0JBQ2YsQ0FBQyxDQUFDLGdEQUFnRDtTQUN2RCxDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
const integration_settings_1 = require("../../../../../modules/integration-settings");
|
|
5
|
+
const google_merchant_1 = require("../../../../../lib/modules/google-merchant");
|
|
6
|
+
async function POST(req, res) {
|
|
7
|
+
try {
|
|
8
|
+
const store = req.scope.resolve(integration_settings_1.INTEGRATION_SETTINGS_MODULE);
|
|
9
|
+
const resolved = await (0, integration_settings_1.resolvedIntegrationEnvironment)(store, "google-merchant");
|
|
10
|
+
if (!resolved.enabled || resolved.env.GOOGLE_MERCHANT_API_ENABLED !== "true") {
|
|
11
|
+
return res.status(400).json({ message: "A Google Merchant API nincs bekapcsolva." });
|
|
12
|
+
}
|
|
13
|
+
const actorId = req
|
|
14
|
+
.auth_context?.actor_id;
|
|
15
|
+
const state = (0, google_merchant_1.createGoogleMerchantOAuthState)({ actorId });
|
|
16
|
+
const authUrl = (0, google_merchant_1.buildGoogleMerchantAuthorizationUrl)(resolved.env, state);
|
|
17
|
+
return res.json({ auth_url: authUrl });
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
return res.status(400).json({
|
|
21
|
+
message: error instanceof Error ? error.message : "A Google OAuth nem indítható el.",
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2dvb2dsZS1tZXJjaGFudC9vYXV0aC9zdGFydC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVdBLG9CQW9CQztBQTlCRCxzRkFJb0Q7QUFDcEQsZ0ZBR21EO0FBRTVDLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUNoRSxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDN0Isa0RBQTJCLENBQ1csQ0FBQTtRQUN4QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEscURBQThCLEVBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFDL0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM3RSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLENBQUMsQ0FBQTtRQUN0RixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUksR0FBMkQ7YUFDekUsWUFBWSxFQUFFLFFBQVEsQ0FBQTtRQUN6QixNQUFNLEtBQUssR0FBRyxJQUFBLGdEQUE4QixFQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUN6RCxNQUFNLE9BQU8sR0FBRyxJQUFBLHFEQUFtQyxFQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDeEUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7U0FDckYsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -4,36 +4,36 @@ exports.GET = GET;
|
|
|
4
4
|
exports.POST = POST;
|
|
5
5
|
const shipping_1 = require("../../../../../lib/modules/shipping");
|
|
6
6
|
const integration_operation_1 = require("../../../../../modules/integration-operation");
|
|
7
|
-
async function GET(req, res) {
|
|
7
|
+
async function GET(req, res) { const orderService = req.scope.resolve("order"); const order = await orderService.retrieveOrder(req.params.id); res.json({ operations: (0, shipping_1.shippingOperations)(order.metadata) }); }
|
|
8
|
+
async function POST(req, res) { try {
|
|
9
|
+
const action = req.body?.action;
|
|
10
|
+
if (!action)
|
|
11
|
+
return res.status(400).json({ message: "Hiányzó szállítási művelet." });
|
|
12
|
+
const actorId = req.auth_context?.actor_id;
|
|
8
13
|
const orderService = req.scope.resolve("order");
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
let emailSent = false;
|
|
22
|
-
if (action === "return" && result.returnEmail && process.env.SENDGRID_API_KEY && process.env.SENDGRID_FROM_EMAIL) {
|
|
23
|
-
try {
|
|
24
|
-
const notificationService = req.scope.resolve("notification");
|
|
25
|
-
await notificationService.createNotifications({ to: result.returnEmail.to, channel: "email", content: { subject: result.returnEmail.subject, text: result.returnEmail.text, html: result.returnEmail.html }, trigger_type: "shipping.return-created", resource_id: req.params.id, resource_type: "order", idempotency_key: `shipping-return-${result.carrier}-${req.params.id}` });
|
|
26
|
-
emailSent = true;
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
emailSent = false;
|
|
30
|
-
}
|
|
14
|
+
const operationStore = req.scope.resolve(integration_operation_1.INTEGRATION_OPERATION_MODULE);
|
|
15
|
+
const result = await (0, shipping_1.executeShippingAction)({ orderService, operationStore, orderId: req.params.id, action, packageSize: req.body?.packageSize, actorId });
|
|
16
|
+
let emailSent = false;
|
|
17
|
+
if (action === "return" && result.returnEmail && process.env.SENDGRID_API_KEY && process.env.SENDGRID_FROM_EMAIL) {
|
|
18
|
+
try {
|
|
19
|
+
const notificationService = req.scope.resolve("notification");
|
|
20
|
+
const attachment = returnAttachment(result.carrier, result.shipment, req.params.id);
|
|
21
|
+
await notificationService.createNotifications({ to: result.returnEmail.to, channel: "email", content: { subject: result.returnEmail.subject, text: result.returnEmail.text, html: result.returnEmail.html }, ...(attachment ? { attachments: [attachment] } : {}), trigger_type: "shipping.return-created", resource_id: req.params.id, resource_type: "order", idempotency_key: `shipping-return-${result.carrier}-${req.params.id}-${returnGeneration(result.shipment)}` });
|
|
22
|
+
emailSent = true;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
emailSent = false;
|
|
31
26
|
}
|
|
32
|
-
res.json({ ...result, emailSent });
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
res.status(statusOf(error)).json({ message: error instanceof Error ? error.message : "A szállítási művelet nem sikerült." });
|
|
36
27
|
}
|
|
28
|
+
res.json({ ...result, emailSent });
|
|
37
29
|
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
res.status(statusOf(error)).json({ message: error instanceof Error ? error.message : "A szállítási művelet nem sikerült." });
|
|
32
|
+
} }
|
|
33
|
+
function returnAttachment(carrier, shipment, orderId) { if (carrier !== "mpl")
|
|
34
|
+
return null; const raw = String(shipment.returnLabelBase64 ?? "").trim(); if (!raw)
|
|
35
|
+
return null; const encoded = raw.includes("base64,") ? raw.slice(raw.indexOf("base64,") + 7) : raw; const buffer = Buffer.from(encoded.replace(/\s+/g, ""), "base64"); if (buffer.length < 4 || buffer.subarray(0, 4).toString("ascii") !== "%PDF")
|
|
36
|
+
return null; return { content: buffer.toString("binary"), filename: `mpl-visszaru-${orderId}.pdf`, content_type: "application/pdf", disposition: "attachment" }; }
|
|
37
|
+
function returnGeneration(shipment) { const value = shipment.returnPacketId ?? shipment.returnPassword ?? shipment.returnParcelNumber ?? shipment.returnTrackingNumber ?? shipment.returnCode ?? shipment.packetId ?? shipment.parcelNumber ?? shipment.packageId ?? shipment.trackingNumber ?? "unassigned"; return String(value).replace(/[^a-zA-Z0-9._-]/g, "_").slice(0, 120); }
|
|
38
38
|
function statusOf(error) { const status = Number(error?.status); return Number.isInteger(status) && status >= 400 && status < 600 ? status : 500; }
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9baWRdL3NoaXBwaW5nL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsa0JBQXVRO0FBQ3ZRLG9CQUFpZ0Q7QUFOamdELGtFQUEwSDtBQUMxSCx3RkFBNkg7QUFJdEgsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFpQixFQUFDLEdBQWtCLElBQUUsTUFBTSxZQUFZLEdBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFvQyxDQUFDLENBQUEsTUFBTSxLQUFLLEdBQUMsTUFBTSxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUMsVUFBVSxFQUFDLElBQUEsNkJBQWtCLEVBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUMsQ0FBQSxDQUFBLENBQUM7QUFDaFEsS0FBSyxVQUFVLElBQUksQ0FBQyxHQUF1QixFQUFDLEdBQWtCLElBQUUsSUFBRyxDQUFDO0lBQUEsTUFBTSxNQUFNLEdBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7SUFBQSxJQUFHLENBQUMsTUFBTTtRQUFDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsQ0FBQyxDQUFDO0lBQUEsTUFBTSxPQUFPLEdBQUUsR0FBb0QsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDO0lBQUEsTUFBTSxZQUFZLEdBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFvQyxDQUFDO0lBQUEsTUFBTSxjQUFjLEdBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsb0RBQTRCLENBQWdDLENBQUM7SUFBQSxNQUFNLE1BQU0sR0FBQyxNQUFNLElBQUEsZ0NBQXFCLEVBQUMsRUFBQyxZQUFZLEVBQUMsY0FBYyxFQUFDLE9BQU8sRUFBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxNQUFNLEVBQUMsV0FBVyxFQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7SUFBQSxJQUFJLFNBQVMsR0FBQyxLQUFLLENBQUM7SUFBQSxJQUFHLE1BQU0sS0FBRyxRQUFRLElBQUUsTUFBTSxDQUFDLFdBQVcsSUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixJQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUMsQ0FBQztRQUFBLElBQUcsQ0FBQztZQUFBLE1BQU0sbUJBQW1CLEdBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFtQyxDQUFDO1lBQUEsTUFBTSxVQUFVLEdBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBQyxNQUFNLENBQUMsUUFBUSxFQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFBQSxNQUFNLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLEVBQUMsRUFBRSxFQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLEVBQUMsT0FBTyxFQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUMsRUFBQyxHQUFHLENBQUMsVUFBVSxDQUFBLENBQUMsQ0FBQSxFQUFDLFdBQVcsRUFBQyxDQUFDLFVBQVUsQ0FBQyxFQUFDLENBQUEsQ0FBQyxDQUFBLEVBQUUsQ0FBQyxFQUFDLFlBQVksRUFBQyx5QkFBeUIsRUFBQyxXQUFXLEVBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUMsYUFBYSxFQUFDLE9BQU8sRUFBQyxlQUFlLEVBQUMsbUJBQW1CLE1BQU0sQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDO1lBQUEsU0FBUyxHQUFDLElBQUksQ0FBQTtRQUFBLENBQUM7UUFBQSxNQUFLLENBQUM7WUFBQSxTQUFTLEdBQUMsS0FBSyxDQUFBO1FBQUEsQ0FBQztJQUFBLENBQUM7SUFBQSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxNQUFNLEVBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQTtBQUFBLENBQUM7QUFBQSxPQUFNLEtBQUssRUFBQyxDQUFDO0lBQUEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxPQUFPLEVBQUMsS0FBSyxZQUFZLEtBQUssQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUEsb0NBQW9DLEVBQUMsQ0FBQyxDQUFBO0FBQUEsQ0FBQyxDQUFBLENBQUM7QUFDamdELFNBQVMsZ0JBQWdCLENBQUMsT0FBYyxFQUFDLFFBQStCLEVBQUMsT0FBYyxJQUFFLElBQUcsT0FBTyxLQUFHLEtBQUs7SUFBQyxPQUFPLElBQUksQ0FBQyxDQUFBLE1BQU0sR0FBRyxHQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLElBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQSxJQUFHLENBQUMsR0FBRztJQUFDLE9BQU8sSUFBSSxDQUFDLENBQUEsTUFBTSxPQUFPLEdBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFDLENBQUEsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQSxHQUFHLENBQUMsQ0FBQSxNQUFNLE1BQU0sR0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFDLEVBQUUsQ0FBQyxFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUEsSUFBRyxNQUFNLENBQUMsTUFBTSxHQUFDLENBQUMsSUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUcsTUFBTTtJQUFDLE9BQU8sSUFBSSxDQUFDLENBQUEsT0FBTSxFQUFDLE9BQU8sRUFBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFDLFFBQVEsRUFBQyxnQkFBZ0IsT0FBTyxNQUFNLEVBQUMsWUFBWSxFQUFDLGlCQUFpQixFQUFDLFdBQVcsRUFBQyxZQUFZLEVBQUMsQ0FBQSxDQUFBLENBQUM7QUFDemlCLFNBQVMsZ0JBQWdCLENBQUMsUUFBK0IsSUFBRSxNQUFNLEtBQUssR0FBQyxRQUFRLENBQUMsY0FBYyxJQUFFLFFBQVEsQ0FBQyxjQUFjLElBQUUsUUFBUSxDQUFDLGtCQUFrQixJQUFFLFFBQVEsQ0FBQyxvQkFBb0IsSUFBRSxRQUFRLENBQUMsVUFBVSxJQUFFLFFBQVEsQ0FBQyxRQUFRLElBQUUsUUFBUSxDQUFDLFlBQVksSUFBRSxRQUFRLENBQUMsU0FBUyxJQUFFLFFBQVEsQ0FBQyxjQUFjLElBQUUsWUFBWSxDQUFDLENBQUEsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFDO0FBQ2hYLFNBQVMsUUFBUSxDQUFDLEtBQWEsSUFBRSxNQUFNLE1BQU0sR0FBQyxNQUFNLENBQUUsS0FBMEIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFBLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBRSxNQUFNLElBQUUsR0FBRyxJQUFFLE1BQU0sR0FBQyxHQUFHLENBQUEsQ0FBQyxDQUFBLE1BQU0sQ0FBQSxDQUFDLENBQUEsR0FBRyxDQUFBLENBQUEsQ0FBQyJ9
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
|
|
2
|
-
export declare function POST(req: MedusaRequest, res: MedusaResponse): Promise<
|
|
2
|
+
export declare function POST(req: MedusaRequest, res: MedusaResponse): Promise<MedusaResponse>;
|
|
@@ -1,99 +1,77 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.POST = POST;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
4
5
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
6
|
const core_audit_1 = require("../../../../../modules/core-audit");
|
|
6
7
|
const mpl_1 = require("../../../../../providers/mpl");
|
|
8
|
+
const durable_create_1 = require("../../../../../lib/modules/shipping/durable-create");
|
|
9
|
+
const integration_operation_1 = require("../../../../../modules/integration-operation");
|
|
10
|
+
const state_1 = require("../../../../../modules/integration-operation/state");
|
|
7
11
|
async function POST(req, res) {
|
|
8
12
|
const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
9
13
|
const actorId = req.auth_context?.actor_id;
|
|
14
|
+
let durable;
|
|
15
|
+
let remoteResult;
|
|
10
16
|
try {
|
|
11
17
|
const body = (req.body ?? {});
|
|
12
18
|
const orderIds = normalizeList(body.orderIds);
|
|
13
19
|
const explicitTrackingNumbers = normalizeList(body.trackingNumbers);
|
|
14
20
|
const tag = String(body.tag ?? "").trim() || undefined;
|
|
15
|
-
const orderService = orderIds.length
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
message: "Nincs lezárható MPL küldemény a kijelölésben.",
|
|
32
|
-
});
|
|
33
|
-
return;
|
|
21
|
+
const orderService = orderIds.length ? req.scope.resolve("order") : undefined;
|
|
22
|
+
const orders = orderService ? await Promise.all(orderIds.map((id) => orderService.retrieveOrder(id))) : [];
|
|
23
|
+
const closableOrders = orders.filter((order) => { const shipment = mpl_1.mplService.extractShipment(order); return Boolean(shipment?.trackingNumber && !shipment.closedAt); });
|
|
24
|
+
const orderTrackingNumbers = closableOrders.map((order) => mpl_1.mplService.extractShipment(order)?.trackingNumber?.trim()).filter((value) => Boolean(value));
|
|
25
|
+
const trackingNumbers = Array.from(new Set([...explicitTrackingNumbers, ...orderTrackingNumbers])).sort();
|
|
26
|
+
if (!trackingNumbers.length && !tag)
|
|
27
|
+
return res.status(409).json({ message: "Nincs lezárható MPL küldemény a kijelölésben." });
|
|
28
|
+
const closeKey = (0, node_crypto_1.createHash)("sha256").update(JSON.stringify({ trackingNumbers, tag: tag ?? null, checkList: body.checkList ?? true })).digest("hex");
|
|
29
|
+
const operationStore = req.scope.resolve(integration_operation_1.INTEGRATION_OPERATION_MODULE);
|
|
30
|
+
durable = await (0, state_1.acquireOperation)(operationStore, { provider: "mpl", operation_type: "shipment.close", entity_type: "shipping_batch", entity_id: closeKey, external_id: closeKey, idempotency_key: `mpl:shipment:close:${closeKey}`, reference_data: { carrier: "mpl", action: "close", tracking_numbers: trackingNumbers, tag: tag ?? null } });
|
|
31
|
+
if (!durable.acquired) {
|
|
32
|
+
if (durable.operation.status === "succeeded") {
|
|
33
|
+
const saved = durable.operation.reference_data?.response;
|
|
34
|
+
return res.json(saved && typeof saved === "object" ? saved : { alreadyExisted: true, trackingNumbers });
|
|
35
|
+
}
|
|
36
|
+
throw new Error(durable.operation.status === "needs_reconciliation" ? "A korábbi MPL jegyzékzárás szolgáltatói egyeztetést igényel; nem ismételhető biztonságosan." : "Az MPL jegyzékzárás már folyamatban van.");
|
|
34
37
|
}
|
|
35
|
-
const result = await mpl_1.mplService.closeShipments({
|
|
36
|
-
|
|
37
|
-
tag,
|
|
38
|
-
checkList: body.checkList ?? true,
|
|
39
|
-
});
|
|
38
|
+
const result = await mpl_1.mplService.closeShipments({ trackingNumbers: trackingNumbers.length ? trackingNumbers : undefined, tag, checkList: body.checkList ?? true });
|
|
39
|
+
remoteResult = { result, trackingNumbers };
|
|
40
40
|
const closedAt = new Date().toISOString();
|
|
41
41
|
if (orderService) {
|
|
42
42
|
for (const order of closableOrders) {
|
|
43
43
|
const shipment = mpl_1.mplService.extractShipment(order);
|
|
44
44
|
if (!shipment?.trackingNumber)
|
|
45
45
|
continue;
|
|
46
|
-
await orderService.updateOrders([
|
|
47
|
-
{
|
|
48
|
-
id: order.id,
|
|
49
|
-
metadata: {
|
|
50
|
-
...(order.metadata ?? {}),
|
|
51
|
-
mpl: {
|
|
52
|
-
...shipment,
|
|
53
|
-
closedAt,
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
]);
|
|
46
|
+
await orderService.updateOrders([{ id: order.id, metadata: { ...(order.metadata ?? {}), mpl: { ...shipment, closedAt } } }]);
|
|
58
47
|
}
|
|
59
48
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
integration: "mpl",
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
skippedAlreadyClosed: orders.length - closableOrders.length,
|
|
70
|
-
tag: tag || null,
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
res.json({
|
|
74
|
-
result,
|
|
75
|
-
trackingNumbers,
|
|
76
|
-
closedAt,
|
|
77
|
-
skippedAlreadyClosed: orders.length - closableOrders.length,
|
|
78
|
-
});
|
|
49
|
+
const response = { result, trackingNumbers, closedAt, skippedAlreadyClosed: orders.length - closableOrders.length };
|
|
50
|
+
await (0, state_1.operationSucceeded)(operationStore, durable.operation, closeKey, { carrier: "mpl", action: "close", response });
|
|
51
|
+
try {
|
|
52
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, { action: "shipping.mpl.close", resourceType: "shipping_batch", integration: "mpl", actorId, summary: `${trackingNumbers.length} MPL küldemény jegyzékzárása sikeres.`, details: { shipmentCount: trackingNumbers.length, orderCount: orderIds.length, skippedAlreadyClosed: orders.length - closableOrders.length, tag: tag || null } });
|
|
53
|
+
}
|
|
54
|
+
catch (auditError) {
|
|
55
|
+
logger.error(`MPL close audit logging failed after successful close: ${auditError instanceof Error ? auditError.message : String(auditError)}`);
|
|
56
|
+
}
|
|
57
|
+
return res.json(response);
|
|
79
58
|
}
|
|
80
59
|
catch (error) {
|
|
60
|
+
if (durable?.acquired) {
|
|
61
|
+
try {
|
|
62
|
+
const operationStore = req.scope.resolve(integration_operation_1.INTEGRATION_OPERATION_MODULE);
|
|
63
|
+
await (0, state_1.operationFailed)(operationStore, durable.operation, error, Boolean(remoteResult) || (0, durable_create_1.isUncertainRemoteFailure)(error), undefined, remoteResult ? { carrier: "mpl", action: "close", response: remoteResult } : undefined);
|
|
64
|
+
}
|
|
65
|
+
catch { }
|
|
66
|
+
}
|
|
81
67
|
const message = error instanceof Error ? error.message : "Az MPL jegyzékzárás nem sikerült.";
|
|
82
68
|
logger.error(`MPL shipment close failed: ${message}`);
|
|
83
|
-
|
|
84
|
-
action: "shipping.mpl.close",
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
status: "error",
|
|
89
|
-
summary: message,
|
|
90
|
-
});
|
|
91
|
-
res.status(502).json({ message });
|
|
69
|
+
try {
|
|
70
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, { action: "shipping.mpl.close", resourceType: "shipping_batch", integration: "mpl", actorId, status: "error", summary: message });
|
|
71
|
+
}
|
|
72
|
+
catch { }
|
|
73
|
+
return res.status(502).json({ message });
|
|
92
74
|
}
|
|
93
75
|
}
|
|
94
|
-
function normalizeList(value) {
|
|
95
|
-
|
|
96
|
-
? value.map((item) => String(item).trim()).filter(Boolean)
|
|
97
|
-
: [];
|
|
98
|
-
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3NoaXBwaW5nL21wbC9jbG9zZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLG9CQWdHQztBQTVHRCxxREFBcUU7QUFDckUsa0VBQWtFO0FBQ2xFLHNEQUF5RDtBQVVsRCxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDaEUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEUsTUFBTSxPQUFPLEdBQUksR0FBMkQsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFBO0lBRW5HLElBQUksQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQWMsQ0FBQTtRQUMxQyxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzdDLE1BQU0sdUJBQXVCLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUNuRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxTQUFTLENBQUE7UUFDdEQsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLE1BQU07WUFDbEMsQ0FBQyxDQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBcUM7WUFDakUsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtRQUViLE1BQU0sTUFBTSxHQUFHLFlBQVk7WUFDekIsQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsYUFB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
|
|
76
|
+
function normalizeList(value) { return Array.isArray(value) ? value.map((item) => String(item).trim()).filter(Boolean) : []; }
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3NoaXBwaW5nL21wbC9jbG9zZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVlBLG9CQUNrM0Q7QUFibDNELDZDQUF3QztBQUV4QyxxREFBcUU7QUFDckUsa0VBQWtFO0FBQ2xFLHNEQUF5RDtBQUV6RCx1RkFBNkY7QUFDN0Ysd0ZBQTZIO0FBQzdILDhFQUEwSDtBQUluSCxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQWlCLEVBQUMsR0FBa0I7SUFBRSxNQUFNLE1BQU0sR0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUFBLE1BQU0sT0FBTyxHQUFFLEdBQW9ELENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQztJQUFBLElBQUksT0FBOEQsQ0FBQztJQUFBLElBQUksWUFBNkMsQ0FBQztJQUFBLElBQUcsQ0FBQztRQUFBLE1BQU0sSUFBSSxHQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBRSxFQUFFLENBQWMsQ0FBQztRQUFBLE1BQU0sUUFBUSxHQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFBQSxNQUFNLHVCQUF1QixHQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFBQSxNQUFNLEdBQUcsR0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBRSxTQUFTLENBQUM7UUFBQSxNQUFNLFlBQVksR0FBQyxRQUFRLENBQUMsTUFBTSxDQUFBLENBQUMsQ0FBQSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQW9DLENBQUEsQ0FBQyxDQUFBLFNBQVMsQ0FBQztRQUFBLE1BQU0sTUFBTSxHQUFDLFlBQVksQ0FBQSxDQUFDLENB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
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const integration_settings_1 = require("../../../../modules/integration-settings");
|
|
5
|
+
const api_1 = require("../../../../lib/modules/google-ads/api");
|
|
6
|
+
async function GET(req, res) {
|
|
7
|
+
try {
|
|
8
|
+
const code = String(req.query.code || "").trim();
|
|
9
|
+
const state = String(req.query.state || "").trim();
|
|
10
|
+
const oauthError = String(req.query.error || "").trim();
|
|
11
|
+
if (oauthError)
|
|
12
|
+
throw new Error(`Google OAuth hiba: ${oauthError}`);
|
|
13
|
+
if (!code || !state)
|
|
14
|
+
throw new Error("Hiányzó Google Ads OAuth code vagy state.");
|
|
15
|
+
const verifiedState = (0, api_1.verifyGoogleAdsOAuthState)(state);
|
|
16
|
+
const store = req.scope.resolve(integration_settings_1.INTEGRATION_SETTINGS_MODULE);
|
|
17
|
+
const resolved = await (0, integration_settings_1.resolvedIntegrationEnvironment)(store, "google-ads");
|
|
18
|
+
if (!resolved.enabled || resolved.env.GOOGLE_ADS_API_ENABLED !== "true") {
|
|
19
|
+
throw new Error("A Google Ads API kapcsolat nincs bekapcsolva.");
|
|
20
|
+
}
|
|
21
|
+
const token = await (0, api_1.exchangeGoogleAdsAuthorizationCode)(resolved.env, code);
|
|
22
|
+
await (0, integration_settings_1.saveIntegrationSettings)({
|
|
23
|
+
store,
|
|
24
|
+
key: "google-ads",
|
|
25
|
+
enabled: true,
|
|
26
|
+
values: { GOOGLE_ADS_OAUTH_REFRESH_TOKEN: token.refreshToken },
|
|
27
|
+
actorId: verifiedState.actorId || null,
|
|
28
|
+
});
|
|
29
|
+
const refreshed = await (0, integration_settings_1.resolvedIntegrationEnvironment)(store, "google-ads");
|
|
30
|
+
try {
|
|
31
|
+
const account = await (0, api_1.testGoogleAdsApiConnection)(refreshed.env);
|
|
32
|
+
await (0, integration_settings_1.saveIntegrationTestResult)({
|
|
33
|
+
store,
|
|
34
|
+
key: "google-ads",
|
|
35
|
+
ok: true,
|
|
36
|
+
message: `Google Ads API kapcsolat rendben (${account.customer_id}${account.descriptive_name ? ` – ${account.descriptive_name}` : ""}).`,
|
|
37
|
+
actorId: verifiedState.actorId || null,
|
|
38
|
+
});
|
|
39
|
+
return res.redirect(302, "/app/marketing/google-ads?oauth=connected");
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
const message = error instanceof Error ? error.message : "A Google Ads API teszt sikertelen.";
|
|
43
|
+
await (0, integration_settings_1.saveIntegrationTestResult)({
|
|
44
|
+
store,
|
|
45
|
+
key: "google-ads",
|
|
46
|
+
ok: false,
|
|
47
|
+
message,
|
|
48
|
+
actorId: verifiedState.actorId || null,
|
|
49
|
+
});
|
|
50
|
+
return res.redirect(302, "/app/marketing/google-ads?oauth=connected_test_failed");
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
const message = encodeURIComponent(error instanceof Error ? error.message : "A Google Ads OAuth sikertelen.");
|
|
55
|
+
return res.redirect(302, `/app/marketing/google-ads?oauth=error&message=${message}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2F1dGgvZ29vZ2xlLWFkcy9jYWxsYmFjay9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLGtCQW9EQztBQWpFRCxtRkFNaUQ7QUFDakQsZ0VBSStDO0FBRXhDLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxJQUFJLENBQUM7UUFDSCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDaEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ2xELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUN2RCxJQUFJLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixVQUFVLEVBQUUsQ0FBQyxDQUFBO1FBQ25FLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFBO1FBRWpGLE1BQU0sYUFBYSxHQUFHLElBQUEsK0JBQXlCLEVBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQzdCLGtEQUEyQixDQUNXLENBQUE7UUFDeEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLHFEQUE4QixFQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLHNCQUFzQixLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3hFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQTtRQUNsRSxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFBLHdDQUFrQyxFQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDMUUsTUFBTSxJQUFBLDhDQUF1QixFQUFDO1lBQzVCLEtBQUs7WUFDTCxHQUFHLEVBQUUsWUFBWTtZQUNqQixPQUFPLEVBQUUsSUFBSTtZQUNiLE1BQU0sRUFBRSxFQUFFLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQUU7WUFDOUQsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPLElBQUksSUFBSTtTQUN2QyxDQUFDLENBQUE7UUFFRixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEscURBQThCLEVBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQzNFLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSxnQ0FBMEIsRUFBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDL0QsTUFBTSxJQUFBLGdEQUF5QixFQUFDO2dCQUM5QixLQUFLO2dCQUNMLEdBQUcsRUFBRSxZQUFZO2dCQUNqQixFQUFFLEVBQUUsSUFBSTtnQkFDUixPQUFPLEVBQUUscUNBQXFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUk7Z0JBQ3hJLE9BQU8sRUFBRSxhQUFhLENBQUMsT0FBTyxJQUFJLElBQUk7YUFDdkMsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSwyQ0FBMkMsQ0FBQyxDQUFBO1FBQ3ZFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxPQUFPLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsb0NBQW9DLENBQUE7WUFDN0YsTUFBTSxJQUFBLGdEQUF5QixFQUFDO2dCQUM5QixLQUFLO2dCQUNMLEdBQUcsRUFBRSxZQUFZO2dCQUNqQixFQUFFLEVBQUUsS0FBSztnQkFDVCxPQUFPO2dCQUNQLE9BQU8sRUFBRSxhQUFhLENBQUMsT0FBTyxJQUFJLElBQUk7YUFDdkMsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSx1REFBdUQsQ0FBQyxDQUFBO1FBQ25GLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUE7UUFDN0csT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxpREFBaUQsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUN0RixDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
const arukereso_1 = require("../../../lib/modules/arukereso");
|
|
6
|
+
async function GET(req, res) {
|
|
7
|
+
try {
|
|
8
|
+
const result = await (0, arukereso_1.generateArukeresoMarketplaceFeed)(req.scope);
|
|
9
|
+
const etag = `"${(0, node_crypto_1.createHash)("sha256").update(result.xml).digest("hex")}"`;
|
|
10
|
+
if (req.headers["if-none-match"] === etag) {
|
|
11
|
+
res.status(304);
|
|
12
|
+
res.setHeader("ETag", etag);
|
|
13
|
+
res.setHeader("Cache-Control", "public, max-age=300, stale-while-revalidate=300");
|
|
14
|
+
return res.end();
|
|
15
|
+
}
|
|
16
|
+
res.setHeader("Content-Type", "application/xml; charset=utf-8");
|
|
17
|
+
res.setHeader("Cache-Control", "public, max-age=300, stale-while-revalidate=300");
|
|
18
|
+
res.setHeader("ETag", etag);
|
|
19
|
+
return res.send(result.xml);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
if (error instanceof arukereso_1.ArukeresoDisabledError ||
|
|
23
|
+
error instanceof arukereso_1.ArukeresoMarketplaceExportDisabledError) {
|
|
24
|
+
return res.status(404).json({ message: error.message });
|
|
25
|
+
}
|
|
26
|
+
return res.status(503).json({
|
|
27
|
+
message: error instanceof Error
|
|
28
|
+
? error.message
|
|
29
|
+
: "Az Árukereső Marketplace feed jelenleg nem generálható.",
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2ZlZWRzL2FydWtlcmVzby1tYXJrZXRwbGFjZS54bWwvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFRQSxrQkE4QkM7QUF0Q0QsNkNBQXdDO0FBRXhDLDhEQUl1QztBQUVoQyxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDRDQUFnQyxFQUFDLEdBQUcsQ0FBQyxLQUFjLENBQUMsQ0FBQTtRQUN6RSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUEsd0JBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFBO1FBRXpFLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMxQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2YsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDM0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsaURBQWlELENBQUMsQ0FBQTtZQUNqRixPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUNsQixDQUFDO1FBRUQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQTtRQUMvRCxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxpREFBaUQsQ0FBQyxDQUFBO1FBQ2pGLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzNCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUNFLEtBQUssWUFBWSxrQ0FBc0I7WUFDdkMsS0FBSyxZQUFZLG1EQUF1QyxFQUN4RCxDQUFDO1lBQ0QsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUN6RCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMxQixPQUFPLEVBQ0wsS0FBSyxZQUFZLEtBQUs7Z0JBQ3BCLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTztnQkFDZixDQUFDLENBQUMseURBQXlEO1NBQ2hFLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -6,7 +6,9 @@ const google_merchant_1 = require("../../../lib/modules/google-merchant");
|
|
|
6
6
|
async function GET(req, res) {
|
|
7
7
|
try {
|
|
8
8
|
const result = await (0, google_merchant_1.generateGoogleMerchantFeed)(req.scope);
|
|
9
|
-
const
|
|
9
|
+
const withCategoryFields = await (0, google_merchant_1.applyGoogleMerchantCategoryFields)(req.scope, result.xml, result.items);
|
|
10
|
+
const xml = await (0, google_merchant_1.applyGoogleMerchantShipping)(req.scope, withCategoryFields);
|
|
11
|
+
const etag = `\"${(0, node_crypto_1.createHash)("sha256").update(xml).digest("hex")}\"`;
|
|
10
12
|
if (req.headers["if-none-match"] === etag) {
|
|
11
13
|
return res.status(304).end();
|
|
12
14
|
}
|
|
@@ -15,7 +17,7 @@ async function GET(req, res) {
|
|
|
15
17
|
res.setHeader("ETag", etag);
|
|
16
18
|
res.setHeader("X-Google-Merchant-Items", String(result.diagnostics.itemsEmitted));
|
|
17
19
|
res.setHeader("X-Google-Merchant-Skipped", String(result.diagnostics.variantsScanned - result.diagnostics.itemsEmitted));
|
|
18
|
-
return res.status(200).send(
|
|
20
|
+
return res.status(200).send(xml);
|
|
19
21
|
}
|
|
20
22
|
catch (error) {
|
|
21
23
|
if (error instanceof google_merchant_1.GoogleMerchantDisabledError) {
|
|
@@ -32,4 +34,4 @@ async function GET(req, res) {
|
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2ZlZWRzL2dvb2dsZS1tZXJjaGFudC54bWwvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSxrQkF3Q0M7QUFqREQsNkNBQXdDO0FBRXhDLDBFQUs2QztBQUV0QyxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDRDQUEwQixFQUFDLEdBQUcsQ0FBQyxLQUFjLENBQUMsQ0FBQTtRQUNuRSxNQUFNLGtCQUFrQixHQUFHLE1BQU0sSUFBQSxtREFBaUMsRUFDaEUsR0FBRyxDQUFDLEtBQWMsRUFDbEIsTUFBTSxDQUFDLEdBQUcsRUFDVixNQUFNLENBQUMsS0FBSyxDQUNiLENBQUE7UUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUEsNkNBQTJCLEVBQUMsR0FBRyxDQUFDLEtBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO1FBQ3JGLE1BQU0sSUFBSSxHQUFHLEtBQUssSUFBQSx3QkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQTtRQUVwRSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUMsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQzlCLENBQUM7UUFFRCxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxvQ0FBb0MsQ0FBQyxDQUFBO1FBQ25FLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLGlEQUFpRCxDQUFDLENBQUE7UUFDakYsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDM0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO1FBQ2pGLEdBQUcsQ0FBQyxTQUFTLENBQ1gsMkJBQTJCLEVBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUM3RSxDQUFBO1FBQ0QsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLDZDQUEyQixFQUFFLENBQUM7WUFDakQsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDMUIsSUFBSSxFQUFFLDBCQUEwQjtnQkFDaEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2FBQ3ZCLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLElBQUksRUFBRSxrQ0FBa0M7WUFDeEMsT0FBTyxFQUNMLEtBQUssWUFBWSxLQUFLO2dCQUNwQixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU87Z0JBQ2YsQ0FBQyxDQUFDLGtEQUFrRDtTQUN6RCxDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyJ9
|