in client/src/services/google/image-recognition.ts [164:192]
protected async loadImageDescriptions(imageBase64: string): Promise<RecognitionResponse|null> {
return new Promise<RecognitionResponse|null>((resolve, reject) => {
this.http.post<{responses: RecognitionResponse[]}>( VISION_URL + this.config.apiKey, {
requests: [ {
image: { content: imageBase64 },
features: [
{ type: 'LABEL_DETECTION', maxResults: this.config.maxResults },
{ type: 'SAFE_SEARCH_DETECTION' }
]
} ]
} )
.pipe( retry(this.config.retryCount) )
.subscribe(response => {
// check that image has at least one annotation
if (!response.responses) {
logger.warn('Empty response from Cloud Vision');
resolve(null);
}
// check errors
const firstResponse = response.responses[0];
if (firstResponse.error) {
logger.warn('Error loading image descriptions: ' + firstResponse.error);
reject(new Error(firstResponse.error.message));
return;
}
resolve(firstResponse);
}, reject );
});
}