protected async loadImageDescriptions()

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 );
    });
  }