All files / src FapiApplication.ts

74.19% Statements 23/31
50% Branches 4/8
44.44% Functions 4/9
74.19% Lines 23/31

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 1048x   8x 8x 8x 8x   8x         8x     8x 8x     8x   8x 8x 8x 8x     8x     17x                                                             7x   7x                       7x 1x     7x       1x           8x                            
import CoreFormsEnum, { getFormName } from '@orchesty/nodejs-sdk/dist/lib/Application/Base/CoreFormsEnum';
import { ApplicationInstall } from '@orchesty/nodejs-sdk/dist/lib/Application/Database/ApplicationInstall';
import Field from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/Field';
import FieldType from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/FieldType';
import Form from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/Form';
import FormStack from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Form/FormStack';
import WebhookSubscription from '@orchesty/nodejs-sdk/dist/lib/Application/Model/Webhook/WebhookSubscription';
import {
    ABasicApplication,
    PASSWORD,
    USER,
} from '@orchesty/nodejs-sdk/dist/lib/Authorization/Type/Basic/ABasicApplication';
import RequestDto from '@orchesty/nodejs-sdk/dist/lib/Transport/Curl/RequestDto';
import { HttpMethods } from '@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods';
import AProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/AProcessDto';
import { encode } from '@orchesty/nodejs-sdk/dist/lib/Utils/Base64';
import { CommonHeaders, JSON_TYPE } from '@orchesty/nodejs-sdk/dist/lib/Utils/Headers';
import { AxiosResponse } from 'axios';
 
export const NAME = 'fapi';
 
export enum WebhookTypes {
    ORDERED = 'ordered',
    UPDATED = 'invoice_update',
    PAID = 'paid',
}
 
export default class FapiApplication extends ABasicApplication {
 
    public getName(): string {
        return NAME;
    }
 
    public getDescription(): string {
        return 'JednoduchĂ˝ online prodej';
    }
 
    public getPublicName(): string {
        return 'Fapi';
    }
 
    public getLogo(): string {
        return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPwAAABXBAMAAADSXjV5AAAACXBIWXMAAAsSAAALEgHS3X78AAAAJFBMVEVHcEwAbtsAbtsAbtsAbtsAbtsAbtsAbtsAbtsAbtsAbtsAbtstx4spAAAAC3RSTlMAwUCBX5wl2hDxsRVwA1oAAARZSURBVGjetZq/b9NQEMdffjlJWQIrS1QQQrAE2oksXhiQl4pKFSiLV5SlEkVC8mKBUFV1CVKFomap2rELifOjrv85aJvY78fd+2H7vS1+5/vEz1/f3TubEOfdY2TshoQbzvv7iX2fwAPwtb/bxeyuXEJaTxN0nHFntQbriWkI0hFfX13EbuWTZiIZ3B8/TifGIB7zFR8gdmPiyfCH7GmDdGIK4nFfT2C7iFzL8Ev2juHr8jAk9/ETaLeSnZIkM8Z7jZq5gPAB7il2QTsTfBtdl/WQuYpAOxO8h3jTwid7RfG0TFbG+EVBvMNMuaZ46vJz4WvM1IUxPiqGZ4PKjTE+e1h18Yy+XzNTc3P8d1P8CI559w+yOT4yxffoPCHPBxr42DfDL2jfdfw51sSnV6OHP3dl6ezGHD+W4Yl8DDlfcxk+PfQ8AG5+HvyAv5NaeFKl+NP8+NaEX0pfC09+iafkwNdlOUSGp5fNzY2vbMy+4QUXjD8WInUOfKq8j7j2YHxVKN5y4Pvp/QvQnAvjKcTf3PhJCh2g2kPwHp/CzPH1bMmHqPYQ/KPi+K0s2FVQ7SH4Ch93zPHUJddQ7SH4WnF8P3t0W2i9Zw9Py/0a0541fJXOwR5UDljFN+jyqw0WQzh+qzD+dGPUof/LXA/f5JO0Md6jk4aD7XMR/LDwc7+JeXHIbBF9LXyfr5xN8Q5b/fUR7cF4qlIYadd6q0tIeTN2NUc6+EZ2uGNQalIh/YTNmE1EezDeE0pdLfwc8NBj88+tBr6uWWwJyw+0I3xux+Gr8X3Ro16dHwrKm/I7/Z4K3/qgW2jjO1Ihx3lw6ys7dWc93gTQjtUQ3+YzfBvWnmqXs5cP7/HnN2DtqfB+Pvw1f8SBtaegL0guvCM+CwGovXLbCz6vvEh8mg6tNVdiIWEuxSQ208fPzVpLC0F5HbF4XVhrrI2FPaILRNLQUltx6vNNnTgEGj2uLr6nwO8wY9cXrnQB7ZpHmvgzVUsZqzXakMw86KCEPvXz4ofQQ9aGlgSnr7okLz5d58vtbLyCtIdfu0vy4sWmToK1tjGTI7wkVeLrilh2qMD/vnop2Qsq8U0FfqkstEkR/FA3j9nB91WN4tAqfqIqIlybeJXyaO1ZwFeU+KVN/FCJX9jE95X42CY+UOIz7ZWPVyuPKoLKx29p4Jf28Kca+Mge3tPAx/bwWcx7u82OZ6L2SsdXodAu/LOOLXwDfqXIvaNZ2sKfIF8SsPEwsoX3EriRwNYhK1v4IMHax0xEcu3gHdlLw5bsBVkp+EaCtW9B7ZWNb0s/VvAkjfJS8F6Cv7IEtFc2fiD7WID+lMUvjI+l34B15cLssuaxHE/ZDZD+LGs3VbzS77K/bzU/BbjNYpdUXH9AN1+4feYQD5FwvJxlwQO6u5t337ELv2WYsMqX+oIC1n+79Vb5CNzdfn6gHyB+fgbs/lnmix60nXOXvX3E8MfdZIg7upt+Qa2HzBcR7f4BpkgWeCA6iDMAAAAASUVORK5CYII=';
    }
 
    public getFormStack(): FormStack {
        return new FormStack()
            .addForm(
                new Form(CoreFormsEnum.AUTHORIZATION_FORM, getFormName(CoreFormsEnum.AUTHORIZATION_FORM))
                    .addField(new Field(FieldType.TEXT, USER, 'User', undefined, true))
                    .addField(new Field(FieldType.TEXT, PASSWORD, 'Password', undefined, true)),
            );
    }
 
    public getRequestDto(
        dto: AProcessDto,
        applicationInstall: ApplicationInstall,
        method: HttpMethods,
        url?: string,
        data?: unknown,
    ): RequestDto {
        const { user, password } = applicationInstall.getSettings()[CoreFormsEnum.AUTHORIZATION_FORM];
 
        const requestDto = new RequestDto(
            `https://api.fapi.cz/${url}`,
            method,
            dto,
            undefined,
            {
                [CommonHeaders.CONTENT_TYPE]: JSON_TYPE,
                [CommonHeaders.ACCEPT]: JSON_TYPE,
                [CommonHeaders.AUTHORIZATION]: `Basic ${encode(`${user}:${password}`)}`,
            },
        );
 
        if (data) {
            requestDto.setJsonBody(data);
        }
 
        return requestDto;
    }
 
    public getWebhookSubscriptions(): WebhookSubscription[] {
        return [];
    }
 
}
 
// eslint-disable-next-line @typescript-eslint/require-await
export async function getErrorInResponse(response: AxiosResponse, body: string): Promise<string> {
    const data = JSON.parse(body) as IErrorResponse;
 
    if ('type' in data && 'message' in data) {
        return `Error: ${data.type}: ${data.message}`;
    }
 
    return body;
}
 
interface IErrorResponse {
    type: string;
    message: string;
}