@orchesty/connector-authentica 1.0.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 (172) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +190 -0
  3. package/coverage/clover.xml +413 -0
  4. package/coverage/coverage-final.json +19 -0
  5. package/coverage/lcov-report/base.css +224 -0
  6. package/coverage/lcov-report/block-navigation.js +87 -0
  7. package/coverage/lcov-report/favicon.png +0 -0
  8. package/coverage/lcov-report/index.html +161 -0
  9. package/coverage/lcov-report/prettify.css +1 -0
  10. package/coverage/lcov-report/prettify.js +2 -0
  11. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  12. package/coverage/lcov-report/sorter.js +210 -0
  13. package/coverage/lcov-report/src/AuthenticaApplication.ts.html +496 -0
  14. package/coverage/lcov-report/src/Batch/AuthenticaGetStock.ts.html +316 -0
  15. package/coverage/lcov-report/src/Batch/AuthenticaGetStockAvailable.ts.html +262 -0
  16. package/coverage/lcov-report/src/Batch/index.html +131 -0
  17. package/coverage/lcov-report/src/Connector/AuthenticaCreateOrder.ts.html +244 -0
  18. package/coverage/lcov-report/src/Connector/AuthenticaCreateProduct.ts.html +247 -0
  19. package/coverage/lcov-report/src/Connector/AuthenticaCreateReceipt.ts.html +244 -0
  20. package/coverage/lcov-report/src/Connector/AuthenticaGetCarriersConnector.ts.html +205 -0
  21. package/coverage/lcov-report/src/Connector/AuthenticaGetOrder.ts.html +259 -0
  22. package/coverage/lcov-report/src/Connector/AuthenticaGetOrderStatus.ts.html +199 -0
  23. package/coverage/lcov-report/src/Connector/AuthenticaGetReceipt.ts.html +259 -0
  24. package/coverage/lcov-report/src/Connector/AuthenticaGetShippingMethods.ts.html +208 -0
  25. package/coverage/lcov-report/src/Connector/AuthenticaPostLabel.ts.html +196 -0
  26. package/coverage/lcov-report/src/Connector/AuthenticaPutOrders.ts.html +334 -0
  27. package/coverage/lcov-report/src/Connector/AuthenticaPutProducts.ts.html +250 -0
  28. package/coverage/lcov-report/src/Connector/AuthenticaUpdateOrder.ts.html +256 -0
  29. package/coverage/lcov-report/src/Connector/AuthenticaUpdateProduct.ts.html +259 -0
  30. package/coverage/lcov-report/src/Connector/AuthenticaUpdateReceipt.ts.html +193 -0
  31. package/coverage/lcov-report/src/Connector/index.html +311 -0
  32. package/coverage/lcov-report/src/index.html +116 -0
  33. package/coverage/lcov-report/test/dataProvider.ts.html +325 -0
  34. package/coverage/lcov-report/test/index.html +116 -0
  35. package/coverage/lcov.info +676 -0
  36. package/dist/AuthenticaApplication.d.ts +29 -0
  37. package/dist/AuthenticaApplication.js +128 -0
  38. package/dist/Batch/AuthenticaGetStock.d.ts +20 -0
  39. package/dist/Batch/AuthenticaGetStock.js +45 -0
  40. package/dist/Batch/AuthenticaGetStockAvailable.d.ts +13 -0
  41. package/dist/Batch/AuthenticaGetStockAvailable.js +36 -0
  42. package/dist/Connector/AuthenticaCreateOrder.d.ts +12 -0
  43. package/dist/Connector/AuthenticaCreateOrder.js +37 -0
  44. package/dist/Connector/AuthenticaCreateProduct.d.ts +12 -0
  45. package/dist/Connector/AuthenticaCreateProduct.js +37 -0
  46. package/dist/Connector/AuthenticaCreateReceipt.d.ts +11 -0
  47. package/dist/Connector/AuthenticaCreateReceipt.js +37 -0
  48. package/dist/Connector/AuthenticaGetCarriersConnector.d.ts +15 -0
  49. package/dist/Connector/AuthenticaGetCarriersConnector.js +23 -0
  50. package/dist/Connector/AuthenticaGetOrder.d.ts +14 -0
  51. package/dist/Connector/AuthenticaGetOrder.js +38 -0
  52. package/dist/Connector/AuthenticaGetOrderStatus.d.ts +11 -0
  53. package/dist/Connector/AuthenticaGetOrderStatus.js +20 -0
  54. package/dist/Connector/AuthenticaGetReceipt.d.ts +13 -0
  55. package/dist/Connector/AuthenticaGetReceipt.js +38 -0
  56. package/dist/Connector/AuthenticaGetShippingMethods.d.ts +14 -0
  57. package/dist/Connector/AuthenticaGetShippingMethods.js +20 -0
  58. package/dist/Connector/AuthenticaPostLabel.d.ts +12 -0
  59. package/dist/Connector/AuthenticaPostLabel.js +22 -0
  60. package/dist/Connector/AuthenticaPutOrders.d.ts +52 -0
  61. package/dist/Connector/AuthenticaPutOrders.js +22 -0
  62. package/dist/Connector/AuthenticaPutProducts.d.ts +24 -0
  63. package/dist/Connector/AuthenticaPutProducts.js +22 -0
  64. package/dist/Connector/AuthenticaUpdateOrder.d.ts +12 -0
  65. package/dist/Connector/AuthenticaUpdateOrder.js +39 -0
  66. package/dist/Connector/AuthenticaUpdateProduct.d.ts +12 -0
  67. package/dist/Connector/AuthenticaUpdateProduct.js +39 -0
  68. package/dist/Connector/AuthenticaUpdateReceipt.d.ts +9 -0
  69. package/dist/Connector/AuthenticaUpdateReceipt.js +22 -0
  70. package/dist/package.json +24 -0
  71. package/dist/types/order.d.ts +39 -0
  72. package/dist/types/order.js +2 -0
  73. package/dist/types/product.d.ts +20 -0
  74. package/dist/types/product.js +2 -0
  75. package/dist/types/receipt.d.ts +29 -0
  76. package/dist/types/receipt.js +1 -0
  77. package/jest.config.js +13 -0
  78. package/package.json +24 -0
  79. package/src/AuthenticaApplication.ts +137 -0
  80. package/src/Batch/AuthenticaGetStock.ts +77 -0
  81. package/src/Batch/AuthenticaGetStockAvailable.ts +59 -0
  82. package/src/Batch/__tests__/AuthenticaGetStock.ts +26 -0
  83. package/src/Batch/__tests__/AuthenticaGetStockAvailable.ts +22 -0
  84. package/src/Batch/__tests__/Data/AuthenticaGetStock/input.json +6 -0
  85. package/src/Batch/__tests__/Data/AuthenticaGetStock/mock.json +23 -0
  86. package/src/Batch/__tests__/Data/AuthenticaGetStock/nok-input.json +6 -0
  87. package/src/Batch/__tests__/Data/AuthenticaGetStock/nok-mock.json +20 -0
  88. package/src/Batch/__tests__/Data/AuthenticaGetStock/nok-output.json +13 -0
  89. package/src/Batch/__tests__/Data/AuthenticaGetStock/output.json +11 -0
  90. package/src/Batch/__tests__/Data/AuthenticaGetStockAvailable/1-mock.json +20 -0
  91. package/src/Batch/__tests__/Data/AuthenticaGetStockAvailable/input.json +6 -0
  92. package/src/Batch/__tests__/Data/AuthenticaGetStockAvailable/mock.json +21 -0
  93. package/src/Batch/__tests__/Data/AuthenticaGetStockAvailable/output.json +14 -0
  94. package/src/Batch/__tests__/Data/AuthenticaGetStockAvailable/output1.json +12 -0
  95. package/src/Connector/AuthenticaCreateOrder.ts +53 -0
  96. package/src/Connector/AuthenticaCreateProduct.ts +54 -0
  97. package/src/Connector/AuthenticaCreateReceipt.ts +53 -0
  98. package/src/Connector/AuthenticaGetCarriersConnector.ts +40 -0
  99. package/src/Connector/AuthenticaGetOrder.ts +58 -0
  100. package/src/Connector/AuthenticaGetOrderStatus.ts +38 -0
  101. package/src/Connector/AuthenticaGetReceipt.ts +58 -0
  102. package/src/Connector/AuthenticaGetShippingMethods.ts +41 -0
  103. package/src/Connector/AuthenticaPostLabel.ts +37 -0
  104. package/src/Connector/AuthenticaPutOrders.ts +83 -0
  105. package/src/Connector/AuthenticaPutProducts.ts +55 -0
  106. package/src/Connector/AuthenticaUpdateOrder.ts +57 -0
  107. package/src/Connector/AuthenticaUpdateProduct.ts +58 -0
  108. package/src/Connector/AuthenticaUpdateReceipt.ts +36 -0
  109. package/src/Connector/__tests__/AuthenticaCreateOrder.ts +22 -0
  110. package/src/Connector/__tests__/AuthenticaCreateProduct.ts +22 -0
  111. package/src/Connector/__tests__/AuthenticaCreateReceipt.ts +22 -0
  112. package/src/Connector/__tests__/AuthenticaGetCarriers.ts +22 -0
  113. package/src/Connector/__tests__/AuthenticaGetOrder.ts +22 -0
  114. package/src/Connector/__tests__/AuthenticaGetOrderStatus.ts +36 -0
  115. package/src/Connector/__tests__/AuthenticaGetReceipt.ts +22 -0
  116. package/src/Connector/__tests__/AuthenticaGetShippingMethods.ts +22 -0
  117. package/src/Connector/__tests__/AuthenticaPostLabel.ts +36 -0
  118. package/src/Connector/__tests__/AuthenticaPutOrders.ts +36 -0
  119. package/src/Connector/__tests__/AuthenticaPutProducts.ts +36 -0
  120. package/src/Connector/__tests__/AuthenticaUpdateOrder.ts +22 -0
  121. package/src/Connector/__tests__/AuthenticaUpdateProduct.ts +22 -0
  122. package/src/Connector/__tests__/AuthenticaUpdateReceipt.ts +22 -0
  123. package/src/Connector/__tests__/Data/AuthenticaCreateOrder/input.json +67 -0
  124. package/src/Connector/__tests__/Data/AuthenticaCreateOrder/mock.json +70 -0
  125. package/src/Connector/__tests__/Data/AuthenticaCreateOrder/output.json +71 -0
  126. package/src/Connector/__tests__/Data/AuthenticaCreateProduct/input.json +28 -0
  127. package/src/Connector/__tests__/Data/AuthenticaCreateProduct/mock.json +28 -0
  128. package/src/Connector/__tests__/Data/AuthenticaCreateProduct/output.json +29 -0
  129. package/src/Connector/__tests__/Data/AuthenticaCreateReceipt/input.json +47 -0
  130. package/src/Connector/__tests__/Data/AuthenticaCreateReceipt/mock.json +51 -0
  131. package/src/Connector/__tests__/Data/AuthenticaCreateReceipt/output.json +52 -0
  132. package/src/Connector/__tests__/Data/AuthenticaGetCarriers/input.json +6 -0
  133. package/src/Connector/__tests__/Data/AuthenticaGetCarriers/mock.json +18 -0
  134. package/src/Connector/__tests__/Data/AuthenticaGetCarriers/output.json +19 -0
  135. package/src/Connector/__tests__/Data/AuthenticaGetOrder/input.json +8 -0
  136. package/src/Connector/__tests__/Data/AuthenticaGetOrder/mock.json +63 -0
  137. package/src/Connector/__tests__/Data/AuthenticaGetOrder/output.json +64 -0
  138. package/src/Connector/__tests__/Data/AuthenticaGetOrderStatus/input.json +6 -0
  139. package/src/Connector/__tests__/Data/AuthenticaGetOrderStatus/mock.json +12 -0
  140. package/src/Connector/__tests__/Data/AuthenticaGetOrderStatus/output.json +11 -0
  141. package/src/Connector/__tests__/Data/AuthenticaGetReceipt/input.json +8 -0
  142. package/src/Connector/__tests__/Data/AuthenticaGetReceipt/mock.json +54 -0
  143. package/src/Connector/__tests__/Data/AuthenticaGetReceipt/output.json +55 -0
  144. package/src/Connector/__tests__/Data/AuthenticaGetShippingMethods/input.json +6 -0
  145. package/src/Connector/__tests__/Data/AuthenticaGetShippingMethods/mock.json +404 -0
  146. package/src/Connector/__tests__/Data/AuthenticaGetShippingMethods/output.json +403 -0
  147. package/src/Connector/__tests__/Data/AuthenticaPostLabel/input.json +10 -0
  148. package/src/Connector/__tests__/Data/AuthenticaPostLabel/mock.json +5 -0
  149. package/src/Connector/__tests__/Data/AuthenticaPostLabel/output.json +10 -0
  150. package/src/Connector/__tests__/Data/AuthenticaPutOrders/input.json +43 -0
  151. package/src/Connector/__tests__/Data/AuthenticaPutOrders/mock.json +44 -0
  152. package/src/Connector/__tests__/Data/AuthenticaPutOrders/output.json +43 -0
  153. package/src/Connector/__tests__/Data/AuthenticaPutProducts/input.json +19 -0
  154. package/src/Connector/__tests__/Data/AuthenticaPutProducts/mock.json +20 -0
  155. package/src/Connector/__tests__/Data/AuthenticaPutProducts/output.json +19 -0
  156. package/src/Connector/__tests__/Data/AuthenticaUpdateOrder/input.json +68 -0
  157. package/src/Connector/__tests__/Data/AuthenticaUpdateOrder/mock.json +70 -0
  158. package/src/Connector/__tests__/Data/AuthenticaUpdateOrder/output.json +71 -0
  159. package/src/Connector/__tests__/Data/AuthenticaUpdateProduct/input.json +32 -0
  160. package/src/Connector/__tests__/Data/AuthenticaUpdateProduct/mock.json +28 -0
  161. package/src/Connector/__tests__/Data/AuthenticaUpdateProduct/output.json +31 -0
  162. package/src/Connector/__tests__/Data/AuthenticaUpdateReceipt/input.json +45 -0
  163. package/src/Connector/__tests__/Data/AuthenticaUpdateReceipt/mock.json +51 -0
  164. package/src/Connector/__tests__/Data/AuthenticaUpdateReceipt/output.json +52 -0
  165. package/src/__tests__/AuthenticaApplication.ts +41 -0
  166. package/src/types/order.ts +40 -0
  167. package/src/types/product.ts +21 -0
  168. package/src/types/receipt.ts +30 -0
  169. package/test/dataProvider.ts +80 -0
  170. package/tsconfig.json +8 -0
  171. package/tsconfig.prod.json +13 -0
  172. package/tsconfig.prod.tsbuildinfo +1 -0
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NAME = void 0;
7
+ const AConnector_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Connector/AConnector"));
8
+ const HttpMethods_1 = require("@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods");
9
+ exports.NAME = 'authentica-post-label';
10
+ class AuthenticaPostLabel extends AConnector_1.default {
11
+ getName() {
12
+ return exports.NAME;
13
+ }
14
+ async processAction(dto) {
15
+ const label = dto.getJsonData();
16
+ const requestDto = await this.getApplication().getRequestDto(dto, await this.getApplicationInstallFromProcess(dto), HttpMethods_1.HttpMethods.POST, 'applinth/label', label);
17
+ await this.getSender().send(requestDto);
18
+ dto.setNewJsonData(label);
19
+ return dto;
20
+ }
21
+ }
22
+ exports.default = AuthenticaPostLabel;
@@ -0,0 +1,52 @@
1
+ import AConnector from '@orchesty/nodejs-sdk/dist/lib/Connector/AConnector';
2
+ import ProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/ProcessDto';
3
+ export declare const NAME = "authentica-post-orders";
4
+ export default class AuthenticaPutOrders extends AConnector {
5
+ getName(): string;
6
+ processAction(dto: ProcessDto<IInput>): Promise<ProcessDto<IOutput>>;
7
+ }
8
+ export interface IOrder {
9
+ id: string;
10
+ orderNumber: string;
11
+ destination: {
12
+ firstName: string;
13
+ lastName: string;
14
+ phone: string;
15
+ email: string;
16
+ company: string;
17
+ address1: string;
18
+ address2: string;
19
+ city: string;
20
+ province: string;
21
+ country: string;
22
+ zip: string;
23
+ };
24
+ deliveryMethod: {
25
+ id: number;
26
+ branchId: string;
27
+ } | null;
28
+ paymentMethod: {
29
+ codAmount: number;
30
+ codCurrency: string;
31
+ } | null;
32
+ price: {
33
+ totalPrice: number;
34
+ currency: string;
35
+ };
36
+ items: {
37
+ sku: string;
38
+ quantity: number;
39
+ unitPrice: number | null;
40
+ }[];
41
+ variableSymbol: string | null;
42
+ application: string;
43
+ orderTags: string[];
44
+ packagingType?: string;
45
+ printDeliveryNote?: boolean;
46
+ packagingInstructions?: {
47
+ message: string;
48
+ packagingInstructionType: string;
49
+ }[];
50
+ }
51
+ export type IInput = IOrder[];
52
+ export type IOutput = IInput;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NAME = void 0;
7
+ const AConnector_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Connector/AConnector"));
8
+ const HttpMethods_1 = require("@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods");
9
+ exports.NAME = 'authentica-post-orders';
10
+ class AuthenticaPutOrders extends AConnector_1.default {
11
+ getName() {
12
+ return exports.NAME;
13
+ }
14
+ async processAction(dto) {
15
+ const orders = dto.getJsonData();
16
+ const requestDto = await this.getApplication().getRequestDto(dto, await this.getApplicationInstallFromProcess(dto), HttpMethods_1.HttpMethods.PUT, 'applinth/orders', orders);
17
+ await this.getSender().send(requestDto, { success: 200, stopAndFail: '300-499' });
18
+ dto.setNewJsonData(orders);
19
+ return dto;
20
+ }
21
+ }
22
+ exports.default = AuthenticaPutOrders;
@@ -0,0 +1,24 @@
1
+ import AConnector from '@orchesty/nodejs-sdk/dist/lib/Connector/AConnector';
2
+ import ProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/ProcessDto';
3
+ export declare const NAME = "authentica-put-products";
4
+ export default class AuthenticaPutProducts extends AConnector {
5
+ getName(): string;
6
+ processAction(dto: ProcessDto<IInput>): Promise<ProcessDto<IOutput>>;
7
+ }
8
+ export interface IProduct {
9
+ productId: string;
10
+ sku: string;
11
+ name: string;
12
+ englishName: string | null;
13
+ ean: string;
14
+ width: number | null;
15
+ widthUnit: string | null;
16
+ height: number | null;
17
+ heightUnit: string | null;
18
+ length: number | null;
19
+ lengthUnit: string | null;
20
+ weight: number | null;
21
+ weightUnit: string | null;
22
+ }
23
+ export type IInput = IProduct[];
24
+ export type IOutput = IInput;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NAME = void 0;
7
+ const AConnector_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Connector/AConnector"));
8
+ const HttpMethods_1 = require("@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods");
9
+ exports.NAME = 'authentica-put-products';
10
+ class AuthenticaPutProducts extends AConnector_1.default {
11
+ getName() {
12
+ return exports.NAME;
13
+ }
14
+ async processAction(dto) {
15
+ const products = dto.getJsonData();
16
+ const requestDto = await this.getApplication().getRequestDto(dto, await this.getApplicationInstallFromProcess(dto), HttpMethods_1.HttpMethods.PUT, 'applinth/products', products);
17
+ const response = await this.getSender().send(requestDto, { stopAndFail: '300-499' });
18
+ dto.setNewJsonData(response.getJsonBody().data);
19
+ return dto;
20
+ }
21
+ }
22
+ exports.default = AuthenticaPutProducts;
@@ -0,0 +1,12 @@
1
+ import AConnector from '@orchesty/nodejs-sdk/dist/lib/Connector/AConnector';
2
+ import ProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/ProcessDto';
3
+ import { AuthenticaOrder } from '../types/order';
4
+ export declare const AUTHENTICA_UPDATE_ORDER = "authentica-update-order";
5
+ export default class AuthenticaUpdateOrder extends AConnector {
6
+ protected dataKey: string | null;
7
+ constructor(dataKey?: string | null);
8
+ getName(): string;
9
+ processAction(dto: ProcessDto<AuthenticaUpdateOrderInput>): Promise<ProcessDto<AuthenticaUpdateOrderOutput>>;
10
+ }
11
+ export type AuthenticaUpdateOrderInput = Omit<AuthenticaOrder, 'status' | 'trackingNumbers' | 'trackingUrls'>;
12
+ export type AuthenticaUpdateOrderOutput = AuthenticaOrder;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AUTHENTICA_UPDATE_ORDER = void 0;
7
+ const AConnector_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Connector/AConnector"));
8
+ const HttpMethods_1 = require("@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods");
9
+ exports.AUTHENTICA_UPDATE_ORDER = 'authentica-update-order';
10
+ class AuthenticaUpdateOrder extends AConnector_1.default {
11
+ dataKey;
12
+ constructor(dataKey = null) {
13
+ super();
14
+ this.dataKey = dataKey;
15
+ }
16
+ getName() {
17
+ return exports.AUTHENTICA_UPDATE_ORDER;
18
+ }
19
+ async processAction(dto) {
20
+ let order = dto.getJsonData();
21
+ if (this.dataKey) {
22
+ order = order[this.dataKey];
23
+ }
24
+ const url = `order/${order.id}`;
25
+ delete order.id;
26
+ const req = await this.getApplication().getRequestDto(dto, await this.getApplicationInstallFromProcess(dto), HttpMethods_1.HttpMethods.PUT, url, order);
27
+ const resp = (await this.getSender().send(req)).getJsonBody();
28
+ if (this.dataKey) {
29
+ const data = dto.getJsonData();
30
+ data[this.dataKey] = resp;
31
+ dto.setNewJsonData(data);
32
+ }
33
+ else {
34
+ dto.setNewJsonData(resp);
35
+ }
36
+ return dto;
37
+ }
38
+ }
39
+ exports.default = AuthenticaUpdateOrder;
@@ -0,0 +1,12 @@
1
+ import AConnector from '@orchesty/nodejs-sdk/dist/lib/Connector/AConnector';
2
+ import ProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/ProcessDto';
3
+ import { AuthenticaProduct } from '../types/product';
4
+ export declare const AUTHENTICA_UPDATE_PRODUCT = "authentica-update-product";
5
+ export default class AuthenticaUpdateProduct extends AConnector {
6
+ protected dataKey: string | null;
7
+ constructor(dataKey?: string | null);
8
+ getName(): string;
9
+ processAction(dto: ProcessDto<AuthenticaUpdateProductInput>): Promise<ProcessDto<AuthenticaUpdateProductOutput>>;
10
+ }
11
+ export type AuthenticaUpdateProductInput = Omit<AuthenticaProduct, 'hasImei' | 'hasLot' | 'hasLotExpiration'>;
12
+ export type AuthenticaUpdateProductOutput = AuthenticaProduct;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AUTHENTICA_UPDATE_PRODUCT = void 0;
7
+ const AConnector_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Connector/AConnector"));
8
+ const HttpMethods_1 = require("@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods");
9
+ exports.AUTHENTICA_UPDATE_PRODUCT = 'authentica-update-product';
10
+ class AuthenticaUpdateProduct extends AConnector_1.default {
11
+ dataKey;
12
+ constructor(dataKey = null) {
13
+ super();
14
+ this.dataKey = dataKey;
15
+ }
16
+ getName() {
17
+ return exports.AUTHENTICA_UPDATE_PRODUCT;
18
+ }
19
+ async processAction(dto) {
20
+ let product = dto.getJsonData();
21
+ if (this.dataKey) {
22
+ product = product[this.dataKey];
23
+ }
24
+ const url = `product/${product.id}`;
25
+ delete product.id;
26
+ const req = await this.getApplication().getRequestDto(dto, await this.getApplicationInstallFromProcess(dto), HttpMethods_1.HttpMethods.PUT, url, product);
27
+ const resp = (await this.getSender().send(req)).getJsonBody();
28
+ if (this.dataKey) {
29
+ const data = dto.getJsonData();
30
+ data[this.dataKey] = resp;
31
+ dto.setNewJsonData(data);
32
+ }
33
+ else {
34
+ dto.setNewJsonData(resp);
35
+ }
36
+ return dto;
37
+ }
38
+ }
39
+ exports.default = AuthenticaUpdateProduct;
@@ -0,0 +1,9 @@
1
+ import AConnector from '@orchesty/nodejs-sdk/dist/lib/Connector/AConnector';
2
+ import ProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/ProcessDto';
3
+ export declare const AUTHENTICA_UPDATE_RECEIPT = "authentica-update-receipt";
4
+ export default class AuthenticaUpdateReceipt extends AConnector {
5
+ getName(): string;
6
+ processAction(dto: ProcessDto<AuthenticaUpdateReceiptInput>): Promise<ProcessDto<AuthenticaUpdateReceiptOutput>>;
7
+ }
8
+ export type AuthenticaUpdateReceiptInput = Omit<AuthenticaReceipt, 'status' | 'trackingNumbers' | 'shipments'>;
9
+ export type AuthenticaUpdateReceiptOutput = AuthenticaReceipt;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AUTHENTICA_UPDATE_RECEIPT = void 0;
7
+ const AConnector_1 = __importDefault(require("@orchesty/nodejs-sdk/dist/lib/Connector/AConnector"));
8
+ const HttpMethods_1 = require("@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods");
9
+ exports.AUTHENTICA_UPDATE_RECEIPT = 'authentica-update-receipt';
10
+ class AuthenticaUpdateReceipt extends AConnector_1.default {
11
+ getName() {
12
+ return exports.AUTHENTICA_UPDATE_RECEIPT;
13
+ }
14
+ async processAction(dto) {
15
+ const receipt = dto.getJsonData();
16
+ const req = await this.getApplication().getRequestDto(dto, await this.getApplicationInstallFromProcess(dto), HttpMethods_1.HttpMethods.PUT, `receipt/${receipt.id}`, receipt);
17
+ const resp = (await this.getSender().send(req)).getJsonBody();
18
+ dto.setNewJsonData(resp);
19
+ return dto;
20
+ }
21
+ }
22
+ exports.default = AuthenticaUpdateReceipt;
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@orchesty/connector-authentica",
3
+ "description": "",
4
+ "version": "0.0.0",
5
+ "license": "Apache-2.0",
6
+ "url": "https://github.com/Orchesty/orchesty-nodejs-connectors",
7
+ "repository": "https://github.com/Orchesty/orchesty-nodejs-connectors",
8
+ "scripts": {
9
+ "build": "rm -rf dist && rm -rf tsconfig.prod.tsbuildinfo && tsc -d -p tsconfig.prod.json && cp package.json ./dist/package.json",
10
+ "test": "jest --coverage --forceExit --passWithNoTests",
11
+ "lint": "eslint src test --fix",
12
+ "lint-ci": "eslint src test"
13
+ },
14
+ "keywords": [],
15
+ "author": "info@hanaboso.com",
16
+ "dependencies": {
17
+ "@orchesty/connector-git-hub": "workspace:*",
18
+ "@orchesty/nodejs-sdk": "^4.3.6",
19
+ "http-status-codes": "^2.3.0"
20
+ },
21
+ "engines": {
22
+ "node": ">=24"
23
+ }
24
+ }
@@ -0,0 +1,39 @@
1
+ export interface AuthenticaOrder {
2
+ id: number;
3
+ status: string;
4
+ externalId: string;
5
+ carrierId: number;
6
+ branchId: unknown | null;
7
+ price: string;
8
+ priceCurrency: string;
9
+ cod: boolean;
10
+ codValue: unknown | null;
11
+ codValueCurrency: unknown | null;
12
+ vs: unknown | null;
13
+ companyName: string;
14
+ firstName: unknown | null;
15
+ lastName: unknown | null;
16
+ addressLine1: string;
17
+ addressLine2: string;
18
+ addressLine3: unknown | null;
19
+ city: string;
20
+ zip: string;
21
+ country: string;
22
+ state: unknown | null;
23
+ phone: string;
24
+ email: string;
25
+ processingDate: string;
26
+ printDeliveryNote: boolean;
27
+ orderNumber: unknown | null;
28
+ orderTags: string[];
29
+ packagingInstructions: {
30
+ message: string;
31
+ packagingInstructionType: string;
32
+ }[];
33
+ items: {
34
+ productId: number;
35
+ amount: number;
36
+ }[];
37
+ trackingNumbers: unknown[];
38
+ trackingUrls: string[];
39
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,20 @@
1
+ export interface AuthenticaProduct {
2
+ id: number;
3
+ name: string;
4
+ declarationName: string;
5
+ description?: string;
6
+ note?: string;
7
+ length?: string;
8
+ width?: string;
9
+ height?: string;
10
+ weight?: string;
11
+ hsCode?: string;
12
+ fdaCode?: string;
13
+ inspectionMethod?: string;
14
+ countryOfOrigin?: string;
15
+ hasLot: boolean;
16
+ hasImei: boolean;
17
+ hasLotExpiration: boolean;
18
+ skus: string[];
19
+ barcodes: string[];
20
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,29 @@
1
+ interface AuthenticaReceipt {
2
+ id: number;
3
+ status: string;
4
+ externalId: string;
5
+ incomingDate: number;
6
+ customerNote: string | null;
7
+ customerType: string | null;
8
+ supplier: {
9
+ firstName: string | null;
10
+ lastName: string | null;
11
+ companyName: string;
12
+ addressLine1: string;
13
+ addressLine2: string | null;
14
+ addressLine3: string | null;
15
+ city: string;
16
+ zip: string;
17
+ country: string;
18
+ state: string | null;
19
+ };
20
+ items: {
21
+ productId: number;
22
+ receivedAmount: number | null;
23
+ expectedAmount: number;
24
+ expectedLot: unknown | null;
25
+ expectedExpirationDate: unknown | null;
26
+ }[];
27
+ trackingNumbers: string[];
28
+ shipments: number[];
29
+ }
@@ -0,0 +1 @@
1
+ "use strict";
package/jest.config.js ADDED
@@ -0,0 +1,13 @@
1
+ const baseConfig = require('../../jest.config.js');
2
+
3
+ module.exports = {
4
+ ...baseConfig,
5
+ roots: ["<rootDir>/src"],
6
+ setupFiles: ["<rootDir>/../../.jest/testEnvs.ts"],
7
+ setupFilesAfterEnv: ["<rootDir>/../../.jest/testLifecycle.ts"],
8
+ globalSetup: "<rootDir>/../../.jest/globalSetup.ts",
9
+ moduleNameMapper: {
10
+ "^@orchesty/nodejs-connectors/test/(.*)$": "<rootDir>/../../test/$1",
11
+ "^@orchesty/nodejs-connectors/lib/(.*)$": "<rootDir>/../../lib/$1",
12
+ },
13
+ }
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@orchesty/connector-authentica",
3
+ "description": "",
4
+ "version": "1.0.0",
5
+ "license": "Apache-2.0",
6
+ "url": "https://github.com/Orchesty/orchesty-nodejs-connectors",
7
+ "repository": "https://github.com/Orchesty/orchesty-nodejs-connectors",
8
+ "keywords": [],
9
+ "author": "info@hanaboso.com",
10
+ "dependencies": {
11
+ "@orchesty/nodejs-sdk": "^4.3.6",
12
+ "http-status-codes": "^2.3.0",
13
+ "@orchesty/connector-git-hub": "1.0.0"
14
+ },
15
+ "engines": {
16
+ "node": ">=24"
17
+ },
18
+ "scripts": {
19
+ "build": "rm -rf dist && rm -rf tsconfig.prod.tsbuildinfo && tsc -d -p tsconfig.prod.json && cp package.json ./dist/package.json",
20
+ "test": "jest --coverage --forceExit --passWithNoTests",
21
+ "lint": "eslint src test --fix",
22
+ "lint-ci": "eslint src test"
23
+ }
24
+ }
@@ -0,0 +1,137 @@
1
+ import CoreFormsEnum, { getFormName } from '@orchesty/nodejs-sdk/dist/lib/Application/Base/CoreFormsEnum';
2
+ import { ApplicationInstall } from '@orchesty/nodejs-sdk/dist/lib/Application/Database/ApplicationInstall';
3
+ import Field from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/Field';
4
+ import FieldType from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/FieldType';
5
+ import Form from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/Form';
6
+ import FormStack from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/FormStack';
7
+ import { ABasicApplication } from '@orchesty/nodejs-sdk/dist/lib/Authorization/Type/Basic/ABasicApplication';
8
+ import { CLIENT_ID, CLIENT_SECRET } from '@orchesty/nodejs-sdk/dist/lib/Authorization/Type/OAuth2/IOAuth2Application';
9
+ import CacheService, { ICacheCallback } from '@orchesty/nodejs-sdk/dist/lib/Cache/CacheService';
10
+ import RequestDto from '@orchesty/nodejs-sdk/dist/lib/Transport/Curl/RequestDto';
11
+ import ResponseDto from '@orchesty/nodejs-sdk/dist/lib/Transport/Curl/ResponseDto';
12
+ import { defaultRanges } from '@orchesty/nodejs-sdk/dist/lib/Transport/Curl/ResultCodeRange';
13
+ import { HttpMethods } from '@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods';
14
+ import AProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/AProcessDto';
15
+ import { CommonHeaders, JSON_TYPE } from '@orchesty/nodejs-sdk/dist/lib/Utils/Headers';
16
+ import ProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/ProcessDto';
17
+
18
+ export const NAME = 'authentica';
19
+ const AUTHENTICA_SHOP_ID = 'authentica-shop-id';
20
+ const CACHE_KEY = 'authentica_cache_key';
21
+ const LOCK_KEY = 'authentica_lock_key';
22
+
23
+ export default class AuthenticaApplication extends ABasicApplication {
24
+
25
+ public constructor(private readonly cacheService: CacheService) {
26
+ super();
27
+ }
28
+
29
+ public getName(): string {
30
+ return NAME;
31
+ }
32
+
33
+ public getPublicName(): string {
34
+ return 'Authentica Fulfillment';
35
+ }
36
+
37
+ public getDescription(): string {
38
+ return 'Simple solution for outsourcing logistics. In a few simple steps, connect your current e-commerce or accounting solution for automated order processing';
39
+ }
40
+
41
+ public getLogo(): string {
42
+ return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t+KAAAACXBIWXMAAAsSAAALEgHS3X78AAAVB0lEQVR4nO3dv29k53UG4OtATQiERViGBFwRCBum8zotYf8DcYDUbJzafRr/AYZSpjHgLgiUbisJTpnddNpGArbVqotUSIBUyjjaHe0Pcjkz5Nx7zznf8zR2JX68MzvvPe98vN/Pfvjtz3+YAIDS/srLBwD1CXQAaECgA0ADAh0AGhDoANCAQAeABgQ6ADQg0AGgAYEOAA0IdABoQKADQAMCHQAaEOgA0IBAB4AGBDoANCDQAaABgQ4ADQh0AGhAoANAAwIdABoQ6ADQgEAHgAYEOgA0INABoAGBDgANCHQAaECgA0ADAh0AGhDoANCAQAeABgQ6ADQg0AGgAYEOAA0IdABoQKADQAMCHQAaEOgA0IBAB4AGBDoANCDQAaABgQ4ADQh0AGhAoANAAwIdABoQ6ADQgEAHgAYEOgA0INABoAGBDgANCHQAaECgA0ADAh0AGhDoANCAQAeABgQ6ADQg0AGgAYEOAA0IdABoQKADQAMCHQAaEOgA0IBAB4AGBDoANCDQAaABgQ4ADQh0AGhAoANAAwIdABoQ6ADQgEAHgAYEOgA0INABoAGBDgANCHQAaECgA0ADAh0AGhDoANCAQAeABgQ6ADQg0AGgAYEOAA0IdABoQKADQAMCHQAaEOgA0IBAB4AGBDoANCDQAaABgQ4ADQh0AGhAoANAAwIdABoQ6ADQgEAHgAYEOgA0INABoAGBDgANCHQAaECgA0ADAh0AGhDoANCAQAeABgQ6ADQg0AGgAYEOAA0IdABoQKADQAMCHQAaEOgA0IBAB4AGBDoANCDQAaABgQ4ADQh0AGhAoANAAwIdABoQ6ADQgEAHgAYEOgA0INABoAGBDgANCHQAaECgA0ADAh0AGhDoANCAQAeABgQ6ADTwgReRe/mHX0/Tv/5H3mv3u8tp+u6bBAthL7/7z2k6/4VrxuE8/79p+sO/DHFBTejcz+Wvc1+47OsDlvHs42EutEBnf0fHLyf0zLKvD1jGpwId3i+m37/+m9wX6PJXL288gHG9+HyavnoxzK8v0Nlflen3l79JsAhgNU8+GuraC3T2E1NvTL8VCHQY20B1+yTQ2VulzWanfz9NJ6cJFgIsbrC6fRLo7K3aZjOb42BMg9Xtk0BnLzHtVqnbN9TuMKbB6vZJoLOXitOu2h3GM2DdPgl09lJ12r26TrAIYDED1u2TQGdnMeXGtFuR79FhLAPW7ZNAZ2eVQ/Fv/26azi4SLASY3bNPhqzbJ4HOzqpvLrM5DsYw6HQ+CXR2EtNt1bp9Q+0OYxjoMJZ3CXS26zDdRu1+/ijBQoDZRN0+8LHJAp3tuky3anfobeC6fRLobBV1e0y3HajdobeB6/ZJoLNVp6k2jnwV6tDT4HX7JNDZqlsAVjpcBtjd4HX7JNC5U4R5l7p9w4QOPQ1et08CnTt1nGajdrc5DnpRt/9IoPN+XadZUzr0om7/kUDndhF6Mc12FEfAHh174aGD779Vt78i0Lld981jNsdBDzGdq9t/JNC5KabX7rW02h16MJ3/RKBz02Xjun1D7Q71Rd3u+/OfCHRuGmV6tdsdahPmbxHovC2m1pheRyDQoTZ1+1sEOm8babNYHAl7cppgIcDe1O03CHTeNtpmMZvjoCZhfoNA57WYVkep2zfU7lCTuv0Ggc5rI06raneoR91+K4HOa6NOq1fXCRYB7EyY30qg81JMqTGtjsj36FCLuv1WAp2XRg61OCL27CLBQoCt1O3v9UHSdbG00TeHxe//xe8TLIT0Hv/7ND3+0OtEOiZ0Xk6no9btG2p3oDiBjul8elW7nz9KsBCA+xHomE433NgAhQn00UXdHtMpbmyA0gT66Eylr8WRsUIdKEqgj06AvW2kw2mAVgT6yCLM1e1vc4MDFCXQR2YavSlqd19DAAUJ9JGZRm/nugAFCfRRRWjFNMpNcYTs0bELA5Qi0Eelbr+b6wMUI9BHFNOnWvlurg9QjEAf0aW6fSu1O1CMQB+R6XM3drsDhQj00cTUGdMn2wl0oBCBPhqbvXYXR8qenFZZLTA4gT4adft+XC+gCIE+kpg21e37UbsDRQj0kZg296d2B4oQ6CMxbd7P1XXFVQODEeijiCkzpk32p9kAChDooxBK9xdHzJ5dVF09MAiBPgp1+8O4fkByAn0EMV1mr9uf/HeCRdxBwwEkJ9BHkH26/PrLaXr8YYKF3CFq9/NHaZcHINBHkH26/PTjafrqxTS9+DzBYu6gdgcSE+jdRd0e02VmTz56ubjN/2aldgcSE+jdVajbv/js5f9//nTt1dwtjpwV6kBSAr27CnX7RgR7BHxmDrcBkhLonUWYV6nbN94M+IxM6EBSAr2z7NPkm3X7Rvbv0aN2tzkOSEigd1apbt+oULub0oGEBHpXEToxTWb2vmk8e+0eR9AeHSdYCMBrAr2rinX7RvbafbI5DshHoHcU02PFun1D7Q6wN4He0WWBun3b35yr3QH2ItA7yj49fv/t9sCuULvb7Q4kItC7iakxpsfMdpm+K9TuAh1IRKB3U2Gz1rMd6/TstXscSXtymmAhAAK9nw51+0aF2t3mOCAJgd5JTIsd6vYNtTvAzgR6JxWmxV3r9g21O8BOBHon2afFfer2jQq1+9V1gkUAoxPoXcSUGNNiZveZtj1kBmAnAr2LjnX7RvbaPY6oPbtIsBBgZAK9i451+4aHzABsJdA7iOmwY92+oXYH2Eqgd1BhOrxv3b5RoXY/f5RgIcCoBHoHnR4m8z5qd4A7CfTqom6P6TCzQ0zXaneAOwn06kao2zey1+5xZK1QB1Yi0KsboW7f2HaGegYVDscBWhLolUWYj1C3v/nfihuEzEzowEoEemWdjkrdVYXa3eY4YAUCvbKR6vaNQ98gzMGUDqxAoFcVoRHTYGZzTNMVavc4wvboOMFCgJEI9KpGrNs3stfuk81xwPIEekUx/VWodecKXrU7wA0CvaLLAnX7s0/m+2+r3QFuEOgVjTydL/XfPwS73YEFCfRqYuqL6S+7uWvxCrW7QAcWJNCrKbEZ7pNp+u6beX9Ghdo9jrQ9OU2wEGAEAr0adfvyP+chbI4DFiLQK4lpT92+/M95CLU7sBCBXkmFaW+Jun1D7Q7wE4FeSYVpb+kavELtfnWdYBFAdwK9ipjyYtrLbuka3ENmAH4k0KtQt9+uQu0eR9yeXSRYCNCZQK9C3Z7v5+7D5jhgZgK9gpju1O35fu4+1O7AzAR6BRWmuzXq9o0qtfv5owQLAboS6BV4mEz+n78LtTswow9c3OSibo/pLru1a+/4+b/8p9wXKW7M/pRgHTzMP/5G2/I+z59O0+MPc65tAAI9O3X7bja1e+ZjZWNtEeoV2gTeL26wK9xkr+HJR+P9zomo3LNTt+8upoPsKhyuA/dVYYNqYwI9swhzdfvuHNYC68nQ1A1OoGfmqNT9VJgOona3OY6O1O2rE+iZqdv3EzcWcYORnSmdbmL/ir0hqxPoWcWHfuYNXhvZpuIKHypxBO7RcYKFwIEI8xQEelbq9vupsinH5jg6+Z8/ejkTEOgZxfSmbr8ftTss6+svp+mLz1z0BAR6RpdF6vasfyamdoflqNvTEOgZVZjeXnw+TV+9SLCQW1Sp3e12p4M/q9uzEOjZxNQW01t2mf9EpUrtLtCpLvON/YAEejZVNktlr9kq1IBxJO7JaYKFwD352/NUBHo26vbDqFK72xxHZb4/T0WgZxLTmrr9MNTuMK/496VuT0WgZ1JlWqtyV652h/mYztMR6JlUmNYqbYKpUrtfXSdYBOwhHvXqZLV0BHoWMaXFtJZdpU0wHjID84jp3Mlq6Qj0LNTt86iw3jgi9+wiwUJgR6bzlAR6Fur2eXjIDByWk9XSEugZxHSmbp+H2h0Oy9+epyXQM6gynVW9K69Su58/SrAQ2EKgpyXQM/AwmXmp3eEwnKyWmkBfW9TtMZ1lV/muXO0Oh/G/pvPMBPra1O3LqLD+ODJXqJOZuj01gb42dfsyqtTuVQ7nYTxOVktPoK8pwlzdvoyo3eMDKTsTOlk59zw9gb4mR6Uuq8KNSdTuNseRkYfJpCfQ16RuX1aVGxNTOtnEplKPek1PoK8lPrRjGsuu0yaYuDGpULvHEbpHxwkWAq94MlwJAn0t6vZ1VLlBsTmOLOJRr3a3lyDQ1xDTl7p9HWp32I/pvAyBvobLInV7x3/IanfYj81wZQj0NVSZvrr+Q65SH9rtztriUa8m9DIE+tJi6orpK7vOz2yu8gEl0FmbMC/lg9EvwOJshlvfpnbPfmRtrO/k1NO5somb3f8f5DWxGa4Ugb60KnV793/I8fv9878lWMgW8X7xhK5c4oCSxx+OfhVISOW+pJi21O05qN2BZgT6kqpM5yN8b1Zlt/umdgfYQqAvqcq0Ncr3ZlV+z6vrBIsAshPoS4kpK/smrGmQun3DQ2aARgT6UtTt+VSp3eOI3bOLBAsBMhPoS1G35+QhM0ATAn0JMV2p23NSuwNNCPQlVJmuRnwqVKXa/fxRgoUAWQn0JXiYTG5qd6ABgT63qNtjuspuxLp9Q+0ONCDQ56Zuz69K7R5H7gp14D08y31uVT6AI9RG/o422okKGxfjcB8nYAG3EOhzijCvULeHCgeV8PI99SfXAbhJ5T6nKkelUkfU7jbHAbcQ6HPyfSdz8L4CbiHQ5xIfujFNwaHFEbxHxy4r8BaBPhd1O3Py/gLeIdDnENOTWpQ5eX8B7xDoc7hUtzMztTvwDoE+B9MTS7DbHXiDQD+0mJpieoK5CXTgDQL90GxWYinxZLuTU5cb+JFAPzR1O0vyfgNeEeiHFNOSup0lqd2BVwT6IZmWWJraHXhFoB+SaYk1XF277IBAP5iYkiocv0k/miEY3iTQD8iHKmuJI3rPLlx+GJxAPxR1O2vy/oPhCfRDiOlI3c6aNEQwPIF+CKYj1ha1+/kjLwMMTKAfgumIDNxYwtAE+kNF3R7TEazNjSUMTaA/lKmILOLIXqEOwxLoD+UDlEwcDgTDEugPEWGubicTN5gwLIH+EKYhsona3ddAMCSB/hCmITLyvoQhCfT7ig/NmIYgmzjC9+jYywKDEej3pW4nM+9PGI5Av4+YftSaZOb9CcMR6PdxqW4nObU7DEeg34fphwrsdoehCPR9xdQT0w9kJ9BhKAJ9XzYbUUUc6Xty6uWCQQj0fanbqcT7FYYh0PcR0466nUrU7jCMD7zUe6g07bz4fJo+/TjBQpo6fzRN57/I/7ttavevXiRYDDAngb6PStPOn/84TU8+SrCQpuLmrkKgh6vrafqv3ydYCDAnlfuuYsqJaaeKZ6bzWUX78f23Ndbqe3QYgkDfVaUPxWefTNN33yRYSHNVvtKII37PLhIsBJiTQN9Vpbrdd+fLqNSC2BwH7Qn0XcR0o27nXWp3IBGBvotK0426fVmVavfYmQ+0JdB3UWm6UbcvS+0OJCHQt4m6PaabKtTty1K7A0kI9G3U7WxTpRWJI3+FOrQl0LdRt7NNpVbE4ULQlkC/S4S5up1tnj+tc4lM6NCWQL9LpWkmnt2ubl9HXPf4uqOCqN1tjoOWBPpdKk0zntu+rkpfd5jSoSWB/j7xoRfTTBW+P19Xqe/RfzVNR8cJFgIckkB/n2p1u+Mx11Wpdp9sjoOOBPptYnpRt7MvtTuwIoF+m0t1O/egdgdWJNBvU2l6UbfnUa12t9sdWhHo74qpJaaXKtTtuVRqSwQ6tCLQ31Vts5C6PZdKtXscCXxymmAhwCEI9Hep23mIarW7zXHQhkB/U0wr6nYeSu0OrECgv6natKJuz0ntDqxAoL+p0rSibs+rWu1+dZ1gEcBDCfSNmFJiWqlC3Z6bh8wACxPoG+p2DqlS7R5HBJ9dJFgI8BACfUPdziF5yAywMIEeYjpRt3Noz5/WuaRqdyhPoE8FpxN1ew2VXqeo3c8fJVgIcF8CfSo2nXz9pbq9inid4uuRKtTuUJpAj7o9ppMqTOe1VPp6RO0OpQn0alOJ789rqXQDFkcGC3UoS6BXq9u/+CzBQthZtdq92uFEwE/GDvQIc3U7c1O7AwsYO9CrTSPq9pqq1e42x0FJJvQq1O11VavdTelQ0riBHh9aMY1UoW6vrVK7EkcIHx0nWAiwj3EDXd3OkqrdkNkcB+WMGegxfajbWZLaHZjZmIF+qW5nBWp3YEZjBnq16UPd3kO1GzO73aGU8QI9po6YPqpQt/fh2e7AjMYL9GqbfdTtvVRqW+JI4ZPTBAsBdjFeoKvbWVO1GzSb46CMsQI9pg11O2tSuwMzGSvQq00b6vaeKr2uancoY6xArzZtCPSenhV7Xa+uEywC2GacQI8pI6aNKr7/dpqeP62zXnYXX6PE1ylV+B4dShgn0NXtZFLp9Y0jhs8uEiwEuMs4gV7tz9Wq1bLsp9pfL3i2O6T3sx9++/MfvEwAUNvY56EDQBMCHQAaEOgA0IBAB4AGBDoANCDQAaABgQ4ADQh0AGhAoANAAwIdABoQ6ADQgEAHgAYEOgA0INABoAGBDgANCHQAaECgA0ADAh0AGhDoANCAQAeABgQ6ADQg0AGgAYEOAA0IdABoQKADQAMCHQAaEOgA0IBAB4AGBDoANCDQAaABgQ4ADQh0AGhAoANAAwIdABoQ6ADQgEAHgAYEOgA0INABoAGBDgANCHQAaECgA0ADAh0AGhDoANCAQAeABgQ6ADQg0AGgAYEOAA0IdABoQKADQAMCHQAaEOgA0IBAB4AGBDoANCDQAaABgQ4ADQh0AGhAoANAAwIdABoQ6ADQgEAHgAYEOgA0INABoAGBDgANCHQAaECgA0ADAh0AGhDoANCAQAeABgQ6ADQg0AGgAYEOAA0IdABoQKADQAMCHQAaEOgA0IBAB4AGBDoANCDQAaABgQ4ADQh0AGhAoANAAwIdABoQ6ADQgEAHgAYEOgA0INABoAGBDgANCHQAaECgA0ADAh0AGhDoANCAQAeABgQ6ADQg0AGgAYEOAA0IdABoQKADQAMCHQAaEOgA0IBAB4AGBDoANCDQAaABgQ4ADQh0AGhAoANAAwIdABoQ6ADQgEAHgAYEOgA0INABoAGBDgANCHQAaECgA0ADAh0AGhDoANCAQAeABgQ6ADQg0AGgAYEOAA0IdABoQKADQAMCHQAaEOgA0IBAB4AGBDoANCDQAaABgQ4A1U3T9BfhFEHh3pA/0gAAAABJRU5ErkJggg==';
43
+ }
44
+
45
+ public getFormStack(): FormStack {
46
+ const settingsForm = new Form(CoreFormsEnum.AUTHORIZATION_FORM, getFormName(CoreFormsEnum.AUTHORIZATION_FORM));
47
+ const clientId = new Field(FieldType.TEXT, CLIENT_ID, 'Client id');
48
+ const clientSecret = new Field(FieldType.PASSWORD, CLIENT_SECRET, 'Client secret');
49
+ const shopId = new Field(FieldType.TEXT, AUTHENTICA_SHOP_ID, 'Shop ID', undefined, false);
50
+
51
+ settingsForm
52
+ .addField(clientId)
53
+ .addField(clientSecret)
54
+ .addField(shopId);
55
+ return new FormStack().addForm(settingsForm);
56
+ }
57
+
58
+ public isAuthorized(applicationInstall: ApplicationInstall): boolean {
59
+ const authorizationForm = applicationInstall.getSettings()[CoreFormsEnum.AUTHORIZATION_FORM];
60
+ return authorizationForm?.[CLIENT_ID] && authorizationForm?.[CLIENT_SECRET];
61
+ }
62
+
63
+ public async getRequestDto(
64
+ dto: ProcessDto,
65
+ applicationInstall: ApplicationInstall,
66
+ method: HttpMethods,
67
+ _url?: string,
68
+ data?: unknown,
69
+ ): Promise<RequestDto> {
70
+ const headers = {
71
+ [CommonHeaders.CONTENT_TYPE]: JSON_TYPE,
72
+ [CommonHeaders.ACCEPT]: JSON_TYPE,
73
+ [AUTHENTICA_SHOP_ID]: applicationInstall.getUser(),
74
+ [CommonHeaders.AUTHORIZATION]: await this.getAccessToken(dto, applicationInstall),
75
+ };
76
+
77
+ let url = _url;
78
+ if (!url?.includes('applinth')) {
79
+ const shopId = applicationInstall.getUser();
80
+ url = `shop/${shopId}/${url}`;
81
+ }
82
+
83
+ const req = new RequestDto(`${this.getBaseUrl()}/${url}`, method, dto);
84
+ req.setHeaders(headers);
85
+
86
+ if (data) {
87
+ req.setJsonBody(data);
88
+ }
89
+
90
+ return req;
91
+ }
92
+
93
+ protected getBaseUrl(): string {
94
+ return 'https://app.authentica.cz/api';
95
+ }
96
+
97
+ protected async getAccessToken(processDto: AProcessDto, applicationInstall: ApplicationInstall): Promise<string> {
98
+ const url = `${this.getBaseUrl()}/token`;
99
+
100
+ const clientId = applicationInstall.getSettings()[CoreFormsEnum.AUTHORIZATION_FORM][CLIENT_ID];
101
+ const clientSecret = applicationInstall.getSettings()[CoreFormsEnum.AUTHORIZATION_FORM][CLIENT_SECRET];
102
+
103
+ const request = new RequestDto(
104
+ url,
105
+ HttpMethods.POST,
106
+ processDto,
107
+ `grant_type=client_credentials&client_id=${clientId}&client_secret=${clientSecret}&scopes=default applinth`,
108
+ {
109
+ [CommonHeaders.CONTENT_TYPE]: 'application/x-www-form-urlencoded',
110
+ },
111
+ );
112
+
113
+ const storedAccessToken = await this.cacheService.entryWithLock<IAccessToken>(
114
+ CACHE_KEY,
115
+ LOCK_KEY,
116
+ request,
117
+ this.accessCallBack.bind(this),
118
+ defaultRanges,
119
+ );
120
+
121
+ return `Bearer ${storedAccessToken.access_token}`;
122
+ }
123
+
124
+ protected accessCallBack(res: ResponseDto): ICacheCallback<IAccessToken> {
125
+ const token = res.getJsonBody() as IAccessToken;
126
+ return {
127
+ dataToStore: token,
128
+ expire: token.expires_in - 300,
129
+ };
130
+ }
131
+
132
+ }
133
+
134
+ interface IAccessToken {
135
+ expires_in: number;
136
+ access_token: string;
137
+ }