All files / src PohodaApplication.ts

83.33% Statements 35/42
66.66% Branches 8/12
55.55% Functions 5/9
83.33% Lines 35/42

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 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 12718x   18x 18x 18x 18x 18x         18x 18x     18x 18x 18x   18x 18x 18x   18x     36x                                                                 18x   18x                       18x 18x     18x         18x 63x 13x     50x 2x 7x       50x                 18x             18x         18x     18x 18x     18x 18x        
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 {
    ABasicApplication,
    PASSWORD,
    USER,
} from '@orchesty/nodejs-sdk/dist/lib/Authorization/Type/Basic/ABasicApplication';
import OnStopAndFailException from '@orchesty/nodejs-sdk/dist/lib/Exception/OnStopAndFailException';
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 } from '@orchesty/nodejs-sdk/dist/lib/Utils/Headers';
import { XMLBuilder, XMLParser } from 'fast-xml-parser';
 
export const NAME = 'pohoda';
export const M_SERVER_URL = 'mServerUrl';
export const ICO = 'ico';
 
export default class PohodaApplication extends ABasicApplication {
 
    public getName(): string {
        return NAME;
    }
 
    public getPublicName(): string {
        return 'Pohoda';
    }
 
    public getDescription(): string {
        return 'POHODA is a popular economic accounting software for small, medium and larger companies. The program is also suitable for contributory and non-profit organizations';
    }
 
    public getLogo(): string {
        return 'data:image/png;base64,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';
    }
 
    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))
                    .addField(new Field(FieldType.TEXT, M_SERVER_URL, 'mServer URL', undefined, true))
                    .addField(new Field(FieldType.TEXT, ICO, 'ICO', undefined, true)),
            );
    }
 
    public getRequestDto(
        dto: AProcessDto,
        applicationInstall: ApplicationInstall,
        method: HttpMethods,
        url?: string,
        data?: unknown,
    ): RequestDto {
        const { user, password, mServerUrl } = applicationInstall.getSettings()[CoreFormsEnum.AUTHORIZATION_FORM];
 
        const requestDto = new RequestDto(
            `${mServerUrl}/${url}`,
            method,
            dto,
            undefined,
            {
                [CommonHeaders.CONTENT_TYPE]: 'text/xml',
                [CommonHeaders.ACCEPT]: 'text/xml',
                'STW-Authorization': `Basic ${encode(`${user}:${password}`)}`,
            },
        );
 
        Eif (data) {
            requestDto.setBody(data);
        }
 
        return requestDto;
    }
 
}
 
export function checkErrorInResponse(data?: object): void {
    if (data === undefined) {
        return;
    }
 
    if (Array.isArray(data)) {
        for (const innerData of data) {
            checkErrorInResponse(innerData);
        }
    }
 
    Iif ('state' in data && data.state === 'error') {
        if ('note' in data) {
            throw new OnStopAndFailException(`Error: ${data.note}`);
        }
 
        throw new OnStopAndFailException(`Error: ${JSON.stringify(data)}`);
    }
}
 
const xmlParser = new XMLParser({
    ignoreAttributes: false,
    parseAttributeValue: true,
    removeNSPrefix: true,
    attributeNamePrefix: '',
});
 
const xmlBuilder = new XMLBuilder({
    attributeNamePrefix: '@_',
    ignoreAttributes: false,
});
 
const textDecoder = new TextDecoder('Windows-1250');
 
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
export function xmlToJson<T>(buffer: Buffer): T {
    return xmlParser.parse(textDecoder.decode(buffer)) as T;
}
 
export function jsonToXml(data: object): string {
    return xmlBuilder.build(data);
}
 
export type ResponseState = 'ok' | 'warning' | 'error';