UNPKG

@zcatalyst/zia

Version:

ZOHO CATALYST SDK for JavaScript zia for Node.js and Browser.

174 lines (173 loc) 5.91 kB
'use strict'; 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); } }