@bytebrand/export-cars 1.7.1 → 1.9.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.
Files changed (146) hide show
  1. package/dist/app.module.js +7 -5
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/configs/alleskralle.config.js +3 -1
  4. package/dist/configs/alleskralle.config.js.map +1 -1
  5. package/dist/configs/as24.config.js.map +1 -1
  6. package/dist/configs/autoboerse.config.js +1 -1
  7. package/dist/configs/autouncle.config.js +1 -1
  8. package/dist/configs/config.d.ts +3 -1
  9. package/dist/configs/config.js +6 -4
  10. package/dist/configs/config.js.map +1 -1
  11. package/dist/configs/criteo.config.js +2 -1
  12. package/dist/configs/criteo.config.js.map +1 -1
  13. package/dist/configs/dasparking.config.js +1 -1
  14. package/dist/configs/facebook-shop.config.d.ts +5 -0
  15. package/dist/configs/facebook-shop.config.js +17 -0
  16. package/dist/configs/facebook-shop.config.js.map +1 -0
  17. package/dist/configs/index.d.ts +1 -0
  18. package/dist/configs/index.js +1 -0
  19. package/dist/configs/index.js.map +1 -1
  20. package/dist/configs/kleinanzeigefocus.config.js +2 -2
  21. package/dist/configs/kleinanzeigefocus.config.js.map +1 -1
  22. package/dist/configs/meinstadt.config.js +0 -1
  23. package/dist/configs/meinstadt.config.js.map +1 -1
  24. package/dist/configs/ooyyo.config.js +1 -0
  25. package/dist/configs/ooyyo.config.js.map +1 -1
  26. package/dist/constants/modix/index.d.ts +1 -0
  27. package/dist/constants/modix/index.js +1 -0
  28. package/dist/constants/modix/index.js.map +1 -1
  29. package/dist/enums/export-type.enum.d.ts +2 -1
  30. package/dist/enums/export-type.enum.js +1 -0
  31. package/dist/enums/export-type.enum.js.map +1 -1
  32. package/dist/enums/file-types.enum.js +0 -1
  33. package/dist/enums/file-types.enum.js.map +1 -1
  34. package/dist/enums/image-type.enum.d.ts +4 -0
  35. package/dist/enums/image-type.enum.js +9 -0
  36. package/dist/enums/image-type.enum.js.map +1 -0
  37. package/dist/enums/index.d.ts +2 -0
  38. package/dist/enums/index.js +2 -0
  39. package/dist/enums/index.js.map +1 -1
  40. package/dist/export.schema.d.ts +6 -2
  41. package/dist/export.schema.js +4 -0
  42. package/dist/export.schema.js.map +1 -1
  43. package/dist/exporters/auto24.exporter.js +1 -1
  44. package/dist/exporters/auto24.exporter.js.map +1 -1
  45. package/dist/exporters/facebook-shop.exporter.d.ts +12 -0
  46. package/dist/exporters/facebook-shop.exporter.js +63 -0
  47. package/dist/exporters/facebook-shop.exporter.js.map +1 -0
  48. package/dist/exporters/fb.exporter.js +1 -3
  49. package/dist/exporters/fb.exporter.js.map +1 -1
  50. package/dist/exporters/index.d.ts +1 -0
  51. package/dist/exporters/index.js +1 -0
  52. package/dist/exporters/index.js.map +1 -1
  53. package/dist/exporters/modix.exporter.js.map +1 -1
  54. package/dist/exporters/ooyyo.exporter.js +1 -1
  55. package/dist/exporters/ooyyo.exporter.js.map +1 -1
  56. package/dist/formats/facebook-shop.builder.d.ts +10 -0
  57. package/dist/formats/facebook-shop.builder.js +62 -0
  58. package/dist/formats/facebook-shop.builder.js.map +1 -0
  59. package/dist/formats/index.d.ts +1 -0
  60. package/dist/formats/index.js +1 -0
  61. package/dist/formats/index.js.map +1 -1
  62. package/dist/interfaces/export-item.interface.d.ts +26 -0
  63. package/dist/interfaces/params.interface.d.ts +1 -7
  64. package/dist/services/{marketing-images.service.d.ts → images.service.d.ts} +9 -5
  65. package/dist/services/images.service.js +151 -0
  66. package/dist/services/images.service.js.map +1 -0
  67. package/dist/services/index.d.ts +1 -1
  68. package/dist/services/index.js +1 -1
  69. package/dist/services/index.js.map +1 -1
  70. package/dist/transformers/auto24.transfomer.d.ts +4 -6
  71. package/dist/transformers/auto24.transfomer.js +10 -27
  72. package/dist/transformers/auto24.transfomer.js.map +1 -1
  73. package/dist/transformers/autouncle.transformer.d.ts +5 -5
  74. package/dist/transformers/autouncle.transformer.js +10 -34
  75. package/dist/transformers/autouncle.transformer.js.map +1 -1
  76. package/dist/transformers/facebook-shop.transformer.d.ts +18 -0
  77. package/dist/transformers/facebook-shop.transformer.js +96 -0
  78. package/dist/transformers/facebook-shop.transformer.js.map +1 -0
  79. package/dist/transformers/fb.transformer.d.ts +2 -3
  80. package/dist/transformers/fb.transformer.js +8 -26
  81. package/dist/transformers/fb.transformer.js.map +1 -1
  82. package/dist/transformers/google.transformer.d.ts +5 -5
  83. package/dist/transformers/google.transformer.js +10 -26
  84. package/dist/transformers/google.transformer.js.map +1 -1
  85. package/dist/transformers/index.d.ts +1 -0
  86. package/dist/transformers/index.js +1 -0
  87. package/dist/transformers/index.js.map +1 -1
  88. package/dist/transformers/meinstadt.transformer.d.ts +1 -1
  89. package/dist/transformers/meinstadt.transformer.js +3 -4
  90. package/dist/transformers/meinstadt.transformer.js.map +1 -1
  91. package/dist/transformers/modix.transformer.d.ts +1 -1
  92. package/dist/transformers/modix.transformer.js +3 -4
  93. package/dist/transformers/modix.transformer.js.map +1 -1
  94. package/dist/transformers/ooyyo.transformer.d.ts +4 -5
  95. package/dist/transformers/ooyyo.transformer.js +7 -17
  96. package/dist/transformers/ooyyo.transformer.js.map +1 -1
  97. package/dist/transformers/rubrikk.transformer.d.ts +4 -4
  98. package/dist/transformers/rubrikk.transformer.js +5 -13
  99. package/dist/transformers/rubrikk.transformer.js.map +1 -1
  100. package/dist/tsconfig.build.tsbuildinfo +1 -1
  101. package/package.json +2 -2
  102. package/src/app.module.ts +6 -12
  103. package/src/configs/alleskralle.config.ts +3 -1
  104. package/src/configs/as24.config.ts +1 -1
  105. package/src/configs/auto24.config.ts +1 -1
  106. package/src/configs/autoboerse.config.ts +2 -2
  107. package/src/configs/autouncle.config.ts +1 -1
  108. package/src/configs/config.ts +3 -2
  109. package/src/configs/criteo.config.ts +3 -2
  110. package/src/configs/dasparking.config.ts +1 -1
  111. package/src/configs/{kleinanzeigefocus.config.ts → facebook-shop.config.ts} +3 -3
  112. package/src/configs/index.ts +1 -0
  113. package/src/configs/kleinanzeigeFocus.config.ts +14 -0
  114. package/src/configs/meinstadt.config.ts +1 -1
  115. package/src/configs/ooyyo.config.ts +2 -1
  116. package/src/constants/modix/index.ts +1 -0
  117. package/src/enums/export-type.enum.ts +7 -6
  118. package/src/enums/file-types.enum.ts +1 -1
  119. package/src/enums/image-type.enum.ts +4 -0
  120. package/src/enums/index.ts +2 -0
  121. package/src/export.schema.ts +8 -3
  122. package/src/exporters/auto24.exporter.ts +2 -4
  123. package/src/exporters/facebook-shop.exporter.ts +51 -0
  124. package/src/exporters/fb.exporter.ts +6 -6
  125. package/src/exporters/index.ts +1 -0
  126. package/src/exporters/modix.exporter.ts +6 -5
  127. package/src/exporters/ooyyo.exporter.ts +3 -4
  128. package/src/formats/facebook-shop.builder.ts +69 -0
  129. package/src/formats/index.ts +1 -0
  130. package/src/interfaces/export-item.interface.ts +26 -0
  131. package/src/interfaces/params.interface.ts +1 -7
  132. package/src/services/images.service.ts +161 -0
  133. package/src/services/index.ts +1 -2
  134. package/src/transformers/auto24.transfomer.ts +8 -31
  135. package/src/transformers/autouncle.transformer.ts +9 -35
  136. package/src/transformers/facebook-shop.transformer.ts +94 -0
  137. package/src/transformers/fb.transformer.ts +16 -44
  138. package/src/transformers/google.transformer.ts +10 -28
  139. package/src/transformers/index.ts +1 -0
  140. package/src/transformers/meinstadt.transformer.ts +2 -3
  141. package/src/transformers/modix.transformer.ts +19 -10
  142. package/src/transformers/ooyyo.transformer.ts +4 -18
  143. package/src/transformers/rubrikk.transformer.ts +5 -16
  144. package/dist/services/marketing-images.service.js +0 -58
  145. package/dist/services/marketing-images.service.js.map +0 -1
  146. package/src/services/marketing-images.service.ts +0 -70
@@ -11,8 +11,7 @@ import { DataSchemes } from '@bytebrand/car-schema';
11
11
 
12
12
  import { imageItem, IModixWrapItem, ModixXmlItem } from '../interfaces';
13
13
  import { isNotEmptyArray, isValidVin } from '../utils/validator.utils';
14
- import { CategoryList } from '../constants/modix/category.constant';
15
- import { ConfigService } from '../services/config.service';
14
+ import { ConfigService } from '../services';
16
15
  import {
17
16
  BodyColorList,
18
17
  VehicleClassList,
@@ -21,20 +20,21 @@ import {
21
20
  TransmissionList,
22
21
  UsageConditionList,
23
22
  UsageTypeList,
23
+ CategoryList,
24
24
  } from '../constants';
25
25
 
26
26
 
27
-
28
27
  @Injectable()
29
28
  export class ModixTransformer {
30
- constructor(private readonly configService: ConfigService) { }
31
-
32
- async transform(chunkData: { car: DataSchemes.Car; images: ImboImageResponseInterface[]; }, mappingRules: MappingRulesInterface[]): Promise<ModixXmlItem> {
29
+ constructor(private readonly configService: ConfigService) {}
33
30
 
31
+ async transform(
32
+ chunkData: { car: DataSchemes.Car; images: ImboImageResponseInterface[] },
33
+ mappingRules: MappingRulesInterface[],
34
+ ): Promise<ModixXmlItem> {
34
35
  const { car, images } = chunkData;
35
- // await this.buildOptions(car, mappingRules);
36
- return {
37
36
 
37
+ return {
38
38
  //Main data
39
39
  maindata: {
40
40
  category: this.getCategoryData(car),
@@ -211,8 +211,17 @@ export class ModixTransformer {
211
211
  return { url, imageList };
212
212
  }
213
213
 
214
- private async buildOptions(car: DataSchemes.Car, mappingRules: MappingRulesInterface[]): Promise<Omit<DataSchemes.Car, 'state'>> {
215
- const transformer = TransformerFactory.createTransformer(ImportOrigins.MODIX, car, { importSelectorMappingLog: () => { } } as any, [{ make: 'make', model: 'model' }], ['alt_model']);
214
+ private async buildOptions(
215
+ car: DataSchemes.Car,
216
+ mappingRules: MappingRulesInterface[],
217
+ ): Promise<Omit<DataSchemes.Car, 'state'>> {
218
+ const transformer = TransformerFactory.createTransformer(
219
+ ImportOrigins.MODIX,
220
+ car,
221
+ { importSelectorMappingLog: () => {} } as any,
222
+ [{ make: 'make', model: 'model' }],
223
+ ['alt_model'],
224
+ );
216
225
  const { car: transformedCar } = await transformer.transform(mappingRules);
217
226
 
218
227
  return omit(transformedCar, ['state']);
@@ -5,19 +5,18 @@ import * as moment from 'moment';
5
5
  import { DataSchemes } from '@bytebrand/car-schema';
6
6
  import { OoyyoXmlItem } from '../interfaces';
7
7
  import { ImboImageResponseInterface } from '@bytebrand/chunkable';
8
- import { ConfigService } from '../services/config.service';
8
+ import { ConfigService, ImagesService } from '../services';
9
9
  import { Injectable } from '@nestjs/common';
10
- import { isNotEmptyArray } from '../utils/validator.utils';
11
10
 
12
11
  @Injectable()
13
12
  export class OoyyoTransformer {
14
13
  private translator: Translator;
15
14
 
16
- constructor(private configService: ConfigService) {
15
+ constructor(private configService: ConfigService, private imageService: ImagesService) {
17
16
  this.translator = new Translator(de);
18
17
  }
19
18
 
20
- transform(car: DataSchemes.Car, imboImages: ImboImageResponseInterface[]): OoyyoXmlItem {
19
+ async transform(car: DataSchemes.Car, imboImages: ImboImageResponseInterface[]): Promise<OoyyoXmlItem> {
21
20
  const autodeid = toString(get(car, '_id', ''));
22
21
  const creationDate = get(car, 'metaData.creationDate') as number;
23
22
  const constructionYear = get(car, 'mainData.constructionYear') as number;
@@ -49,7 +48,7 @@ export class OoyyoTransformer {
49
48
  doors: toString(get(car, 'mainData.doors', '')),
50
49
  seats: toString(get(car, 'mainData.seats', '')),
51
50
  gears: toString(get(car, 'driveSuspension.gears', '')),
52
- pictures: this.getImagesField(autodeid, imboImages),
51
+ pictures: await this.imageService.getImages(car, imboImages, this.configService.config.imageType),
53
52
  location: {
54
53
  city: toString(get(car, 'location.city', '')),
55
54
  postcode: toString(get(car, 'location.zipCode', '')),
@@ -107,17 +106,4 @@ export class OoyyoTransformer {
107
106
  const format = onlyTime ? 'hh:mm:ss' : 'DD/MM/YYYY';
108
107
  return moment(timestamp * 1000).format(format);
109
108
  }
110
-
111
- private getImagesField(carId: string, images: ImboImageResponseInterface[]): string[] {
112
- if (isNotEmptyArray(images)) {
113
- return images.map((image: ImboImageResponseInterface) => {
114
- return this.buildLargeImageUrl(carId, image.imageIdentifier);
115
- });
116
- }
117
- return [];
118
- }
119
-
120
- private buildLargeImageUrl(carId: string, imageId: string): string {
121
- return `${this.configService.config.imageUrl}/carimage/${carId}/${imageId}/large`;
122
- }
123
109
  }
@@ -3,21 +3,21 @@ import { Injectable } from '@nestjs/common';
3
3
 
4
4
  import { de, deVehicleDetailsPage, deVehicleProps } from '@bytebrand/i18n-dictionaries';
5
5
  import { DePostalCodesService } from '@bytebrand/car-basic-data-scope';
6
+ import { ImboImageResponseInterface } from '@bytebrand/chunkable';
6
7
  import { TranslatorExtended } from '@bytebrand/schema-tools';
7
8
  import { DataSchemes } from '@bytebrand/car-schema';
8
9
 
9
10
  import { RubrikkXmlItem } from '../interfaces';
10
- import { ConfigService } from '../services';
11
+ import { ConfigService, ImagesService } from '../services';
12
+
11
13
  import * as moment from 'moment/moment';
12
- import { ImboImageResponseInterface } from '@bytebrand/chunkable';
13
- import { isNotEmptyArray } from '../utils/validator.utils';
14
14
 
15
15
  @Injectable()
16
16
  export class RubrikkTransformer {
17
17
  private translator: TranslatorExtended;
18
18
  private postalCodesService: DePostalCodesService;
19
19
 
20
- constructor(private readonly configService: ConfigService) {
20
+ constructor(private readonly configService: ConfigService, private readonly imageService: ImagesService) {
21
21
  const dict = { ...de, ...deVehicleProps, ...deVehicleDetailsPage };
22
22
  this.postalCodesService = DePostalCodesService.getInstance();
23
23
  this.translator = new TranslatorExtended(dict);
@@ -30,11 +30,9 @@ export class RubrikkTransformer {
30
30
  car: DataSchemes.Car;
31
31
  images: ImboImageResponseInterface[];
32
32
  }): Promise<RubrikkXmlItem> {
33
- const autodeId = toString(get(car, '_id', ''));
34
-
35
33
  return {
36
34
  //Common Fields
37
- ad__all_imageurls: this.getImagesLinks(autodeId, images),
35
+ ad__all_imageurls: await this.imageService.getImages(car, images, this.configService.config.imageType),
38
36
  ad__condition_new_used_etc: this.getCondition(car),
39
37
  ad__description: toString(get(car, 'offer.offerDescription', '')),
40
38
  ad__headline: this.getTitle(car),
@@ -135,15 +133,6 @@ export class RubrikkTransformer {
135
133
  : `${this.configService.config.baseImageUrl}/carimage/noimage/7pNvWELuWhZX/large-cached.jpeg`;
136
134
  }
137
135
 
138
- private getImagesLinks(carId: string, images: ImboImageResponseInterface[]): string[] {
139
- if (isNotEmptyArray(images)) {
140
- return images.map((image: ImboImageResponseInterface) => {
141
- return `${this.configService.config.baseImageUrl}/carimage/${carId}/${image.imageIdentifier}/large`;
142
- });
143
- }
144
- return [];
145
- }
146
-
147
136
  private getEnergyClass(car: DataSchemes.Car): string {
148
137
  const available = {
149
138
  selector_energyEfficiencyClass_a: 'A',
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MarketingImagesService = void 0;
4
- class MarketingImagesService {
5
- configService;
6
- userService;
7
- constructor(configService, userService) {
8
- this.configService = configService;
9
- this.userService = userService;
10
- }
11
- async getImagesUrl(images, imageUrl, carId) {
12
- const transformedImages = this.transformImagesArrayIntoObject(images);
13
- const configs = (await this.getMarketingImageConfigs());
14
- const marketingImageConfigs = this.transform(configs);
15
- const imageUrls = [];
16
- for (let i = 0; i < marketingImageConfigs.length; i++) {
17
- const marketingImage = marketingImageConfigs[i];
18
- for (let i = 0; i < marketingImage.marketingImageCodes.length; i++) {
19
- const imageCode = marketingImage.marketingImageCodes[i];
20
- const imageId = transformedImages[imageCode];
21
- if (imageId) {
22
- imageUrls.push({ url: this.getImagePathWithExtenstion(imageUrl, carId, imageId, configs) });
23
- break;
24
- }
25
- }
26
- }
27
- return imageUrls;
28
- }
29
- async getMarketingImageConfigs() {
30
- const configs = await this.userService.getMarketingImageConfigs();
31
- const { id } = configs.find(config => config.channelCode.includes(this.configService.config.exportType));
32
- return this.userService.getMarketingImageConfig(id);
33
- }
34
- transformImagesArrayIntoObject(images) {
35
- const result = {};
36
- images.forEach(image => {
37
- const imageCode = image.imageCodePredicted.split('-')[0];
38
- result[imageCode] = image.imageIdentifier;
39
- });
40
- return result;
41
- }
42
- transform(config) {
43
- return config.marketingImages.map(marketingImage => {
44
- return {
45
- marketingImageCodes: marketingImage.imageCodes,
46
- };
47
- });
48
- }
49
- getChannelPath(imageUrl, carId) {
50
- return `${imageUrl}/${[carId[0], carId[1], carId[2], carId].join('/')}`;
51
- }
52
- getImagePathWithExtenstion(imageUrl, carId, imageId, config) {
53
- const { channelCode, imageExtension } = config;
54
- return `${this.getChannelPath(imageUrl, carId)}/${channelCode.replace(/ /g, '-')}-${imageId}.${imageExtension}`;
55
- }
56
- }
57
- exports.MarketingImagesService = MarketingImagesService;
58
- //# sourceMappingURL=marketing-images.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marketing-images.service.js","sourceRoot":"","sources":["../../src/services/marketing-images.service.ts"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- import { MarketingImageConfigInterface, MarketingImageConfigsInterface } from '@bytebrand/autode-request';
2
- import { ConfigService } from './config.service';
3
- import { UserService } from './user.service';
4
-
5
- export class MarketingImagesService {
6
- constructor(
7
- private readonly configService: ConfigService,
8
- private readonly userService: UserService
9
- ) {}
10
-
11
- async getImagesUrl(images: any, imageUrl: string, carId: string): Promise<{ url: string }[]> {
12
- const transformedImages = this.transformImagesArrayIntoObject(images);
13
- const configs = (await this.getMarketingImageConfigs()) as any;
14
- const marketingImageConfigs = this.transform(configs);
15
-
16
- const imageUrls = [];
17
-
18
- for (let i = 0; i < marketingImageConfigs.length; i++) {
19
- const marketingImage = marketingImageConfigs[i];
20
- for (let i = 0; i < marketingImage.marketingImageCodes.length; i++) {
21
- const imageCode = marketingImage.marketingImageCodes[i];
22
- const imageId = transformedImages[imageCode];
23
- if (imageId) {
24
- imageUrls.push({ url: this.getImagePathWithExtenstion(imageUrl, carId, imageId, configs) });
25
- break;
26
- }
27
- }
28
- }
29
-
30
- return imageUrls;
31
- }
32
-
33
- async getMarketingImageConfigs(): Promise<MarketingImageConfigsInterface> {
34
- const configs = await this.userService.getMarketingImageConfigs();
35
- const { id } = configs.find(config => config.channelCode.includes(this.configService.config.exportType));
36
-
37
- return this.userService.getMarketingImageConfig(id);
38
- }
39
-
40
- private transformImagesArrayIntoObject(images: { [imageCode: string]: string }[]) {
41
- const result: { [imageCode: string]: string } = {};
42
- images.forEach(image => {
43
- const imageCode = image.imageCodePredicted.split('-')[0];
44
- result[imageCode] = image.imageIdentifier;
45
- });
46
- return result;
47
- }
48
-
49
- private transform(config: MarketingImageConfigInterface): { marketingImageCodes: string[] }[] {
50
- return config.marketingImages.map(marketingImage => {
51
- return {
52
- marketingImageCodes: marketingImage.imageCodes,
53
- };
54
- });
55
- }
56
-
57
- protected getChannelPath(imageUrl: string, carId: string): string {
58
- return `${imageUrl}/${[carId[0], carId[1], carId[2], carId].join('/')}`;
59
- }
60
-
61
- protected getImagePathWithExtenstion(
62
- imageUrl: string,
63
- carId: string,
64
- imageId: string,
65
- config: MarketingImageConfigsInterface,
66
- ): string {
67
- const { channelCode, imageExtension } = config;
68
- return `${this.getChannelPath(imageUrl, carId)}/${channelCode.replace(/ /g, '-')}-${imageId}.${imageExtension}`;
69
- }
70
- }