@bytebrand/export-cars 1.25.0 → 1.26.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/dist/constants/fb.constants.d.ts +5 -3
- package/dist/constants/fb.constants.js +6 -4
- package/dist/constants/fb.constants.js.map +1 -1
- package/dist/exporters/facebook-shop.exporter.js +6 -4
- package/dist/exporters/facebook-shop.exporter.js.map +1 -1
- package/dist/formats/facebook-shop.builder.d.ts +3 -3
- package/dist/formats/facebook-shop.builder.js +21 -21
- package/dist/formats/facebook-shop.builder.js.map +1 -1
- package/dist/interfaces/export-item.interface.d.ts +19 -33
- package/dist/services/rules.service.d.ts +1 -1
- package/dist/transformers/facebook-shop.transformer.d.ts +0 -2
- package/dist/transformers/facebook-shop.transformer.js +20 -42
- package/dist/transformers/facebook-shop.transformer.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +1 -1
- package/src/constants/fb.constants.ts +8 -3
- package/src/exporters/facebook-shop.exporter.ts +6 -4
- package/src/formats/facebook-shop.builder.ts +59 -52
- package/src/interfaces/export-item.interface.ts +23 -35
- package/src/transformers/facebook-shop.transformer.ts +24 -46
|
@@ -8,8 +8,10 @@ export declare const TIMESTAMP_FIRST_YEAR = 1970;
|
|
|
8
8
|
export declare const META_PUSH_PRIORITY_STANDARD = "standard";
|
|
9
9
|
export declare const META_PUSH_PRIORITY_ALLOWED_VALUES: string[];
|
|
10
10
|
export declare enum OfferType {
|
|
11
|
-
financing = "
|
|
12
|
-
leasing = "
|
|
13
|
-
buy = "
|
|
11
|
+
financing = "finance",
|
|
12
|
+
leasing = "lease",
|
|
13
|
+
buy = "cash"
|
|
14
14
|
}
|
|
15
|
+
export declare const AMOUNT_QUALIFIER_APR = "APR";
|
|
16
|
+
export declare const TERM_QUALIFIER_MONTHS = "months";
|
|
15
17
|
export declare const OFFER_DISCLAIMER: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OFFER_DISCLAIMER = exports.OfferType = exports.META_PUSH_PRIORITY_ALLOWED_VALUES = exports.META_PUSH_PRIORITY_STANDARD = exports.TIMESTAMP_FIRST_YEAR = exports.DEFAULT_ADDR1 = exports.DEFAULT_CITY = exports.DEFAULT_ZIP = exports.FB_MIN_MILEAGES = exports.FB_MAX_IMAGE_COUNT_FOR_DEAFULT = exports.FB_MAX_TRIM_LENGTH = void 0;
|
|
3
|
+
exports.OFFER_DISCLAIMER = exports.TERM_QUALIFIER_MONTHS = exports.AMOUNT_QUALIFIER_APR = exports.OfferType = exports.META_PUSH_PRIORITY_ALLOWED_VALUES = exports.META_PUSH_PRIORITY_STANDARD = exports.TIMESTAMP_FIRST_YEAR = exports.DEFAULT_ADDR1 = exports.DEFAULT_CITY = exports.DEFAULT_ZIP = exports.FB_MIN_MILEAGES = exports.FB_MAX_IMAGE_COUNT_FOR_DEAFULT = exports.FB_MAX_TRIM_LENGTH = void 0;
|
|
4
4
|
exports.FB_MAX_TRIM_LENGTH = 50;
|
|
5
5
|
exports.FB_MAX_IMAGE_COUNT_FOR_DEAFULT = 47;
|
|
6
6
|
exports.FB_MIN_MILEAGES = 900;
|
|
@@ -12,10 +12,12 @@ exports.META_PUSH_PRIORITY_STANDARD = 'standard';
|
|
|
12
12
|
exports.META_PUSH_PRIORITY_ALLOWED_VALUES = ['dealer_priority_1', 'dealer_priority_2'];
|
|
13
13
|
var OfferType;
|
|
14
14
|
(function (OfferType) {
|
|
15
|
-
OfferType["financing"] = "
|
|
16
|
-
OfferType["leasing"] = "
|
|
17
|
-
OfferType["buy"] = "
|
|
15
|
+
OfferType["financing"] = "finance";
|
|
16
|
+
OfferType["leasing"] = "lease";
|
|
17
|
+
OfferType["buy"] = "cash";
|
|
18
18
|
})(OfferType || (exports.OfferType = OfferType = {}));
|
|
19
|
+
exports.AMOUNT_QUALIFIER_APR = 'APR';
|
|
20
|
+
exports.TERM_QUALIFIER_MONTHS = 'months';
|
|
19
21
|
exports.OFFER_DISCLAIMER = 'Für Ihre Finanzierungswünsche stellen wir eine Bonitätsanfrage. Bonität ' +
|
|
20
22
|
'vorausgesetzt, ist dies ein repräsentatives Berechnungsbeispiel gem. der Angaben, welches 2/3 aller Kunden, ' +
|
|
21
23
|
'im Sinne des § 17a Abs. 4 PAngV, erhalten. Dieses freibleibende Angebot der Santander Consumer Bank AG, ' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fb.constants.js","sourceRoot":"","sources":["../../src/constants/fb.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,EAAE,CAAC;AACxB,QAAA,8BAA8B,GAAG,EAAE,CAAC;AACpC,QAAA,eAAe,GAAG,GAAG,CAAC;AACtB,QAAA,WAAW,GAAG,OAAO,CAAC;AACtB,QAAA,YAAY,GAAG,oBAAoB,CAAC;AACpC,QAAA,aAAa,GAAG,oBAAoB,CAAC;AACrC,QAAA,oBAAoB,GAAG,IAAI,CAAC;AAC5B,QAAA,2BAA2B,GAAG,UAAU,CAAC;AACzC,QAAA,iCAAiC,GAAG,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"fb.constants.js","sourceRoot":"","sources":["../../src/constants/fb.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,EAAE,CAAC;AACxB,QAAA,8BAA8B,GAAG,EAAE,CAAC;AACpC,QAAA,eAAe,GAAG,GAAG,CAAC;AACtB,QAAA,WAAW,GAAG,OAAO,CAAC;AACtB,QAAA,YAAY,GAAG,oBAAoB,CAAC;AACpC,QAAA,aAAa,GAAG,oBAAoB,CAAC;AACrC,QAAA,oBAAoB,GAAG,IAAI,CAAC;AAC5B,QAAA,2BAA2B,GAAG,UAAU,CAAC;AACzC,QAAA,iCAAiC,GAAG,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;AAI5F,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,kCAAqB,CAAA;IACrB,8BAAiB,CAAA;IACjB,yBAAY,CAAA;AACd,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB;AAEY,QAAA,oBAAoB,GAAG,KAAK,CAAC;AAC7B,QAAA,qBAAqB,GAAG,QAAQ,CAAC;AAEjC,QAAA,gBAAgB,GAAG,0EAA0E;IACxG,8GAA8G;IAC9G,0GAA0G;IAC1G,6GAA6G;IAC7G,6GAA6G;IAC7G,kBAAkB,CAAC"}
|
|
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.FacebookShopExporter = void 0;
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
|
14
14
|
const core_1 = require("@nestjs/core");
|
|
15
|
+
const path_1 = require("path");
|
|
15
16
|
const cronicle_helper_1 = require("@bytebrand/cronicle-helper");
|
|
16
17
|
const services_1 = require("../services");
|
|
17
18
|
const transformers_1 = require("../transformers");
|
|
@@ -33,8 +34,9 @@ let FacebookShopExporter = class FacebookShopExporter {
|
|
|
33
34
|
const [fileXml] = this.configService.config.outputFiles;
|
|
34
35
|
await cronicle_helper_1.CronicleUtils.ensureDir(this.configService.config.pathesConfig.localConvertedDirectory);
|
|
35
36
|
await cronicle_helper_1.CronicleUtils.emptyDir(this.configService.config.pathesConfig.localConvertedDirectory);
|
|
36
|
-
const
|
|
37
|
-
|
|
37
|
+
const selfUrl = `https://ftp.${this.configService.config.domain}/feeds/${(0, path_1.basename)(fileXml)}`;
|
|
38
|
+
const facebookShopXmlBuilder = new formats_1.FacebookShopXmlBuilder(fileXml);
|
|
39
|
+
await facebookShopXmlBuilder.buildStart(selfUrl);
|
|
38
40
|
const facebookShopTransformer = await this.moduleRef.create(transformers_1.FacebookShopTransformer);
|
|
39
41
|
await this.loaderService.process(async (chunk) => {
|
|
40
42
|
const chunkData = chunk.data.filter(car => this.carService.filterCar(car, this.rulesService.rules));
|
|
@@ -46,12 +48,12 @@ let FacebookShopExporter = class FacebookShopExporter {
|
|
|
46
48
|
continue;
|
|
47
49
|
}
|
|
48
50
|
for (const item of items) {
|
|
49
|
-
await
|
|
51
|
+
await facebookShopXmlBuilder.addItem(item);
|
|
50
52
|
}
|
|
51
53
|
this.carService.counter.countCar(data.images);
|
|
52
54
|
}
|
|
53
55
|
});
|
|
54
|
-
await
|
|
56
|
+
await facebookShopXmlBuilder.buildEnd();
|
|
55
57
|
console.log(this.carService.counter.getCountedCars());
|
|
56
58
|
}
|
|
57
59
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facebook-shop.exporter.js","sourceRoot":"","sources":["../../src/exporters/facebook-shop.exporter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,uCAAyC;
|
|
1
|
+
{"version":3,"file":"facebook-shop.exporter.js","sourceRoot":"","sources":["../../src/exporters/facebook-shop.exporter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,uCAAyC;AACzC,+BAAgC;AAEhC,gEAA2D;AAG3D,0CAAqF;AAErF,kDAA0D;AAC1D,wCAAoD;AAG7C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAErB;IACA;IACA;IACA;IACA;IALV,YACU,UAAsB,EACtB,aAA4B,EAC5B,aAA4B,EAC5B,SAAoB,EACpB,YAA0B;QAJ1B,eAAU,GAAV,UAAU,CAAY;QACtB,kBAAa,GAAb,aAAa,CAAe;QAC5B,kBAAa,GAAb,aAAa,CAAe;QAC5B,cAAS,GAAT,SAAS,CAAW;QACpB,iBAAY,GAAZ,YAAY,CAAc;IAChC,CAAC;IAEL,KAAK,CAAC,MAAM;QACV,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC;QACxD,MAAM,+BAAa,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;QAC9F,MAAM,+BAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;QAE7F,MAAM,OAAO,GAAG,eAAe,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,UAAU,IAAA,eAAQ,EAAC,OAAO,CAAC,EAAE,CAAC;QAC7F,MAAM,sBAAsB,GAAG,IAAI,gCAAsB,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEjD,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,sCAAuB,CAAC,CAAC;QAErF,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,KAAuB,EAAE,EAAE;YACjE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAEpG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAG3B,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAG5D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBACjB,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,gCAAgC,CAAC,CAAC;oBACtE,SAAS;iBACV;gBAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACxB,MAAM,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC5C;gBACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC/C;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,sBAAsB,CAAC,QAAQ,EAAE,CAAC;QAExC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACxD,CAAC;CACF,CAAA;AA9CY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAGW,qBAAU;QACP,wBAAa;QACb,wBAAa;QACjB,gBAAS;QACN,uBAAY;GANzB,oBAAoB,CA8ChC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { XMLBuilderBase } from '@bytebrand/cronicle-helper';
|
|
2
|
-
import { FacebookShopItem
|
|
2
|
+
import { FacebookShopItem } from '../interfaces';
|
|
3
3
|
export declare class FacebookShopXmlBuilder extends XMLBuilderBase {
|
|
4
|
-
buildStart(): Promise<void>;
|
|
4
|
+
buildStart(selfUrl?: string): Promise<void>;
|
|
5
5
|
addItem(car: FacebookShopItem): Promise<void>;
|
|
6
|
-
buildTagElement
|
|
6
|
+
private buildTagElement;
|
|
7
7
|
buildEnd(): Promise<void>;
|
|
8
8
|
}
|
|
@@ -3,37 +3,37 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.FacebookShopXmlBuilder = void 0;
|
|
4
4
|
const lodash_1 = require("lodash");
|
|
5
5
|
const cronicle_helper_1 = require("@bytebrand/cronicle-helper");
|
|
6
|
+
const MAX_IMAGES = 2;
|
|
6
7
|
class FacebookShopXmlBuilder extends cronicle_helper_1.XMLBuilderBase {
|
|
7
|
-
async buildStart() {
|
|
8
|
-
await this.write('<?xml version="1.0" encoding="utf-8"?>\n<rss version="2.0" xmlns:
|
|
9
|
-
'\n<channel>\n<title>
|
|
10
|
-
'<
|
|
8
|
+
async buildStart(selfUrl) {
|
|
9
|
+
await this.write('<?xml version="1.0" encoding="utf-8"?>\n<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">' +
|
|
10
|
+
'\n<channel>\n<title>auto.de Vehicle Offers Feed</title>' +
|
|
11
|
+
'\n<description>Automotive Model Ads Vehicle Offers Feed für auto.de</description>' +
|
|
12
|
+
'\n<link>https://www.auto.de/</link>' +
|
|
13
|
+
`\n<atom:link href="${(0, lodash_1.escape)(selfUrl)}" rel="self" type="application/rss+xml" />\n`);
|
|
11
14
|
}
|
|
12
15
|
async addItem(car) {
|
|
13
16
|
let item = '\n<item>\n';
|
|
14
|
-
const tags =
|
|
15
|
-
for (const tag of tags) {
|
|
16
|
-
|
|
17
|
-
item += car[tag]
|
|
18
|
-
.map((url) => `<image><url>${(0, lodash_1.escape)(url)}</url></image>\n`)
|
|
19
|
-
.join('');
|
|
20
|
-
continue;
|
|
21
|
-
}
|
|
22
|
-
item += this.buildTagElement(tag, car[tag]);
|
|
17
|
+
const { image, ...tags } = car;
|
|
18
|
+
for (const [tag, value] of Object.entries(tags)) {
|
|
19
|
+
item += this.buildTagElement(tag, value);
|
|
23
20
|
}
|
|
21
|
+
item += image
|
|
22
|
+
.slice(0, MAX_IMAGES)
|
|
23
|
+
.map((url) => `<image><url>${(0, lodash_1.escape)(url)}</url></image>\n`)
|
|
24
|
+
.join('');
|
|
24
25
|
item += '</item>';
|
|
25
26
|
await this.write(item);
|
|
26
27
|
}
|
|
27
|
-
buildTagElement(tag,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
value = (0, lodash_1.escape)(value);
|
|
28
|
+
buildTagElement(tag, value) {
|
|
29
|
+
if ((0, lodash_1.isNil)(value) || value === '') {
|
|
30
|
+
return '';
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
if ((0, lodash_1.isString)(value)) {
|
|
33
|
+
return this.getElement(tag, (0, lodash_1.escape)(value));
|
|
34
34
|
}
|
|
35
|
-
if (
|
|
36
|
-
return this.getElement(
|
|
35
|
+
if ((0, lodash_1.isNumber)(value)) {
|
|
36
|
+
return this.getElement(tag, String(value));
|
|
37
37
|
}
|
|
38
38
|
return this.getElement(tag, value);
|
|
39
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facebook-shop.builder.js","sourceRoot":"","sources":["../../src/formats/facebook-shop.builder.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"facebook-shop.builder.js","sourceRoot":"","sources":["../../src/formats/facebook-shop.builder.ts"],"names":[],"mappings":";;;AAAA,mCAA2D;AAC3D,gEAA4D;AAG5D,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,MAAa,sBAAuB,SAAQ,gCAAc;IAIxD,KAAK,CAAC,UAAU,CAAC,OAAgB;QAC/B,MAAM,IAAI,CAAC,KAAK,CACd,sGAAsG;YACpG,yDAAyD;YACzD,mFAAmF;YACnF,qCAAqC;YACrC,sBAAsB,IAAA,eAAM,EAAC,OAAO,CAAC,8CAA8C,CACtF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAqB;QACjC,IAAI,IAAI,GAAG,YAAY,CAAC;QAExB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;QAE/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC/C,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAC1C;QAED,IAAI,IAAI,KAAK;aACV,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;aACpB,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,eAAe,IAAA,eAAM,EAAC,GAAG,CAAC,kBAAkB,CAAC;aAClE,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,IAAI,IAAI,SAAS,CAAC;QAElB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAEO,eAAe,CAAC,GAAW,EAAE,KAAc;QACjD,IAAI,IAAA,cAAK,EAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE;YAChC,OAAO,EAAE,CAAC;SACX;QAGD,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE;YACnB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE;YACnB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5C;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;CACF;AApDD,wDAoDC"}
|
|
@@ -339,40 +339,26 @@ export interface dealerItem {
|
|
|
339
339
|
};
|
|
340
340
|
}
|
|
341
341
|
export interface FacebookShopItem {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
342
|
+
vehicle_offer_id: string;
|
|
343
|
+
make: string;
|
|
344
|
+
model: string;
|
|
345
|
+
year: string;
|
|
346
|
+
offer_type: string;
|
|
347
|
+
title: string;
|
|
348
|
+
offer_description: string;
|
|
349
|
+
url: string;
|
|
350
|
+
offer_disclaimer?: string;
|
|
350
351
|
image: string[];
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
term_length?: FacebookShopTag;
|
|
362
|
-
apr?: FacebookShopTag;
|
|
363
|
-
final_payment?: FacebookShopTag;
|
|
364
|
-
total_amount?: FacebookShopTag;
|
|
365
|
-
net_loan_amount?: FacebookShopTag;
|
|
366
|
-
quantity_to_sell_on_facebook: FacebookShopTag;
|
|
367
|
-
google_product_category: FacebookShopTag;
|
|
368
|
-
sale_price: FacebookShopTag;
|
|
369
|
-
status: FacebookShopTag;
|
|
370
|
-
color: FacebookShopTag;
|
|
371
|
-
product_type: FacebookShopTag;
|
|
372
|
-
}
|
|
373
|
-
export interface FacebookShopTag {
|
|
374
|
-
isGoogle: boolean;
|
|
375
|
-
value: any;
|
|
352
|
+
price: string;
|
|
353
|
+
availability: string;
|
|
354
|
+
exterior_color: string;
|
|
355
|
+
custom_label_4: string;
|
|
356
|
+
amount_price?: string;
|
|
357
|
+
amount_percentage?: string;
|
|
358
|
+
amount_qualifier?: string;
|
|
359
|
+
term_length?: number;
|
|
360
|
+
term_qualifier?: string;
|
|
361
|
+
downpayment?: string;
|
|
376
362
|
}
|
|
377
363
|
export interface TrovitXmlItem {
|
|
378
364
|
id: IAtributeWrapItem;
|
|
@@ -6,7 +6,7 @@ export declare class RulesService {
|
|
|
6
6
|
private configService;
|
|
7
7
|
constructor(configService: ConfigService);
|
|
8
8
|
private _rules;
|
|
9
|
-
get rules(): (
|
|
9
|
+
get rules(): (StringRule | NumberRule | DateRule)[];
|
|
10
10
|
private buildRules;
|
|
11
11
|
private buildStringRules;
|
|
12
12
|
private buildNumberRules;
|
|
@@ -16,12 +16,10 @@ export declare class FacebookShopTransformer {
|
|
|
16
16
|
private computeFinancials;
|
|
17
17
|
private isLeasingEligible;
|
|
18
18
|
private financialTags;
|
|
19
|
-
private tag;
|
|
20
19
|
private getNum;
|
|
21
20
|
private formatEUR;
|
|
22
21
|
private getMetaPushPriority;
|
|
23
22
|
private getYear;
|
|
24
|
-
private getCondition;
|
|
25
23
|
private getAvailability;
|
|
26
24
|
private getCarLink;
|
|
27
25
|
private getPriceValue;
|
|
@@ -47,32 +47,23 @@ let FacebookShopTransformer = class FacebookShopTransformer {
|
|
|
47
47
|
return [];
|
|
48
48
|
}
|
|
49
49
|
const base = {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
sale_price: this.tag(`${price} EUR`, true),
|
|
55
|
-
link: this.tag(this.getCarLink(car), true),
|
|
50
|
+
make,
|
|
51
|
+
model,
|
|
52
|
+
year: this.getYear(car),
|
|
53
|
+
url: this.getCarLink(car),
|
|
56
54
|
image: imageLinks.slice(0, 2),
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
custom_label_4: this.tag(customLabel4, false),
|
|
62
|
-
dealer_privacy_policy_url: this.tag('https://www.auto.de/einwilligungserklaerung/', false),
|
|
63
|
-
quantity_to_sell_on_facebook: this.tag(1, true),
|
|
64
|
-
google_product_category: this.tag('916', true),
|
|
65
|
-
status: this.tag('active', true),
|
|
66
|
-
color: this.tag(this.getColor(car), false),
|
|
67
|
-
product_type: this.tag('Vehicles & Parts > Vehicles > Motor Vehicles > Cars, Trucks & Vans', true),
|
|
55
|
+
price: `${price} EUR`,
|
|
56
|
+
availability: this.getAvailability(car),
|
|
57
|
+
exterior_color: this.getColor(car),
|
|
58
|
+
custom_label_4: customLabel4,
|
|
68
59
|
};
|
|
69
60
|
return offers.map((offer) => ({
|
|
70
61
|
...base,
|
|
71
|
-
|
|
72
|
-
title:
|
|
73
|
-
|
|
74
|
-
offer_type:
|
|
75
|
-
...(offer.disclaimer ? { offer_disclaimer:
|
|
62
|
+
vehicle_offer_id: `${vehicleId}_${offer.offerType}`,
|
|
63
|
+
title: offer.title,
|
|
64
|
+
offer_description: offer.description,
|
|
65
|
+
offer_type: offer.offerType,
|
|
66
|
+
...(offer.disclaimer ? { offer_disclaimer: offer.disclaimer } : {}),
|
|
76
67
|
...(offer.financials ? this.financialTags(offer.financials) : {}),
|
|
77
68
|
}));
|
|
78
69
|
}
|
|
@@ -156,18 +147,14 @@ let FacebookShopTransformer = class FacebookShopTransformer {
|
|
|
156
147
|
}
|
|
157
148
|
financialTags(financials) {
|
|
158
149
|
return {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
net_loan_amount: this.tag(financials.netLoanAmount, false),
|
|
150
|
+
amount_price: `${financials.monthlyPayment} EUR`,
|
|
151
|
+
amount_percentage: String(financials.apr),
|
|
152
|
+
amount_qualifier: fb_constants_1.AMOUNT_QUALIFIER_APR,
|
|
153
|
+
term_length: financials.termLength,
|
|
154
|
+
term_qualifier: fb_constants_1.TERM_QUALIFIER_MONTHS,
|
|
155
|
+
downpayment: `${financials.downPayment} EUR`,
|
|
166
156
|
};
|
|
167
157
|
}
|
|
168
|
-
tag(value, isGoogle) {
|
|
169
|
-
return { value, isGoogle };
|
|
170
|
-
}
|
|
171
158
|
getNum(source, path, fallback = 0) {
|
|
172
159
|
return (0, lodash_1.get)(source, path) ?? fallback;
|
|
173
160
|
}
|
|
@@ -184,17 +171,8 @@ let FacebookShopTransformer = class FacebookShopTransformer {
|
|
|
184
171
|
const firstRegistration = this.getNum(car, 'mainData.firstRegistration');
|
|
185
172
|
return firstRegistration ? moment(firstRegistration * 1000).format('YYYY') : moment().format('YYYY');
|
|
186
173
|
}
|
|
187
|
-
getCondition(car) {
|
|
188
|
-
const available = {
|
|
189
|
-
selector_condition_new: 'New',
|
|
190
|
-
selector_condition_used: 'Used',
|
|
191
|
-
selector_unknown: 'Used',
|
|
192
|
-
};
|
|
193
|
-
const condition = (0, lodash_1.get)(car, 'mainData.condition', 'selector_unknown');
|
|
194
|
-
return (0, lodash_1.get)(available, condition);
|
|
195
|
-
}
|
|
196
174
|
getAvailability(car) {
|
|
197
|
-
return (0, lodash_1.get)(car, 'state.isOnline', false) ? '
|
|
175
|
+
return (0, lodash_1.get)(car, 'state.isOnline', false) ? 'AVAILABLE' : 'NOT_AVAILABLE';
|
|
198
176
|
}
|
|
199
177
|
getCarLink(car) {
|
|
200
178
|
return `https://${this.configService.config.domain}/search/vehicle/${car._id}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facebook-shop.transformer.js","sourceRoot":"","sources":["../../src/transformers/facebook-shop.transformer.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAE5C,mCAA8C;AAC9C,iCAAiC;AAEjC,oEAAwF;AAExF,0DAA6D;AAE7D,0DAAoF;AAGpF,0CAA2E;AAC3E,
|
|
1
|
+
{"version":3,"file":"facebook-shop.transformer.js","sourceRoot":"","sources":["../../src/transformers/facebook-shop.transformer.ts"],"names":[],"mappings":"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"}
|