@zcatalyst/zia
Version: 
ZOHO CATALYST SDK for JavaScript zia for Node.js and Browser.
174 lines (173 loc) • 5.91 kB
JavaScript
;
import { Handler } from '@zcatalyst/transport';
import { CONSTANTS, isNonEmptyString, isValidInputString, isValidType, wrapValidatorsWithPromise } from '@zcatalyst/utils';
import { CatalystZiaError } from './utils/errors';
import { _getKeywordExtraction, _getNERPrediction, _getSentimentAnalysis, _getTextAnalytics } from './zia-text-analysis';
const { REQ_METHOD, COMPONENT, CREDENTIAL_USER } = CONSTANTS;
export class Zia {
    constructor(app) {
        this.requester = new Handler(app, this);
    }
    getComponentName() {
        return COMPONENT.zia;
    }
    async detectObject(file) {
        const fileData = { image: file };
        const request = {
            method: REQ_METHOD.post,
            path: `/ml/detect-object`,
            data: fileData,
            type: "file",
            service: "baas",
            track: true,
            user: CREDENTIAL_USER.admin
        };
        const resp = await this.requester.send(request);
        return resp.data.data;
    }
    async extractOpticalCharacters(file, opts = {}) {
        const fileData = { image: file, ...opts };
        const request = {
            method: REQ_METHOD.post,
            path: `/ml/ocr`,
            data: fileData,
            type: "file",
            service: "baas",
            track: true,
            user: CREDENTIAL_USER.admin
        };
        const resp = await this.requester.send(request);
        return resp.data.data;
    }
    async extractAadhaarCharacters(frontImg, backImg, language) {
        await wrapValidatorsWithPromise(() => {
            isNonEmptyString(language, 'language', true);
        }, CatalystZiaError);
        const fileData = {
            aadhaar_front: frontImg,
            aadhaar_back: backImg,
            language,
            model_type: 'AADHAAR'
        };
        const request = {
            method: REQ_METHOD.post,
            path: `/ml/ocr`,
            data: fileData,
            type: "file",
            service: "baas",
            track: true,
            user: CREDENTIAL_USER.admin
        };
        const resp = await this.requester.send(request);
        return resp.data.data;
    }
    async scanBarcode(image, opts = {}) {
        await wrapValidatorsWithPromise(() => {
            isValidType(image, 'object', 'image', true);
        }, CatalystZiaError);
        const fileData = { image, ...opts };
        const request = {
            method: REQ_METHOD.post,
            path: `/ml/barcode`,
            data: fileData,
            type: "file",
            service: "baas",
            track: true,
            user: CREDENTIAL_USER.admin
        };
        const resp = await this.requester.send(request);
        return resp.data.data;
    }
    async moderateImage(image, opts = { mode: undefined }) {
        await wrapValidatorsWithPromise(() => {
            isValidType(image, 'object', 'image', true);
        }, CatalystZiaError);
        const fileData = {
            image,
            ...opts
        };
        const request = {
            method: REQ_METHOD.post,
            path: '/ml/imagemoderation',
            data: fileData,
            type: "file",
            service: "baas",
            track: true,
            user: CREDENTIAL_USER.admin
        };
        const resp = await this.requester.send(request);
        return resp.data.data;
    }
    async analyseFace(image, opts = {
        mode: undefined,
        emotion: undefined,
        age: undefined,
        gender: undefined
    }) {
        await wrapValidatorsWithPromise(() => {
            isValidType(image, 'object', 'image', true);
        }, CatalystZiaError);
        const fileData = {
            image,
            ...opts
        };
        const request = {
            method: REQ_METHOD.post,
            path: '/ml/faceanalytics',
            data: fileData,
            type: "file",
            service: "baas",
            track: true,
            user: CREDENTIAL_USER.admin
        };
        const resp = await this.requester.send(request);
        return resp.data.data;
    }
    async compareFace(sourceImage, queryImage) {
        await wrapValidatorsWithPromise(() => {
            isValidType(sourceImage, 'object', 'source_image', true);
            isValidType(queryImage, 'object', 'query_image', true);
        }, CatalystZiaError);
        const fileData = { source_image: sourceImage, query_image: queryImage };
        const request = {
            method: REQ_METHOD.post,
            path: `/ml/facecomparison`,
            data: fileData,
            type: "file",
            service: "baas",
            track: true,
            user: CREDENTIAL_USER.admin
        };
        const resp = await this.requester.send(request);
        return resp.data.data;
    }
    async automl(modelId, data = {}) {
        await wrapValidatorsWithPromise(() => {
            isValidInputString(modelId, 'model_id', true);
            isValidType(data, 'object', 'data', true);
        }, CatalystZiaError);
        const request = {
            method: REQ_METHOD.post,
            path: `/ml/automl/model/${modelId}`,
            data,
            type: "json",
            service: "baas",
            track: true,
            user: CREDENTIAL_USER.admin
        };
        const resp = await this.requester.send(request);
        return resp.data.data;
    }
    async getSentimentAnalysis(listOfDocuments, keywords) {
        return _getSentimentAnalysis(this.requester, listOfDocuments, keywords);
    }
    async getKeywordExtraction(listOfDocuments) {
        return _getKeywordExtraction(this.requester, listOfDocuments);
    }
    async getNERPrediction(listOfDocuments) {
        return _getNERPrediction(this.requester, listOfDocuments);
    }
    async getTextAnalytics(listOfDocuments, keywords) {
        return _getTextAnalytics(this.requester, listOfDocuments, keywords);
    }
}