async sendDataInternal()

in marketing-analytics/activation/gmp-googleads-connector/src/api_handlers/google_ads_offline_userdata_job.js [84:124]


  async sendDataInternal(googleAds, message, messageId, config) {
    let records;
    try {
      const { bucket, file } = JSON.parse(message);
      if (file) {
        const storageFile = new StorageFile(bucket, file);
        records = await storageFile.loadContent(0);
      } else {
        this.logger.error('Could find GCS infomation in message', message);
        return {
          result: false,
          errors: [`Could find GCS infomation in message: ${message}`],
        };
      }
    } catch (error) {
      this.logger.error('Incoming message: ', message);
      records = message;
    }
    try {
      const { offlineUserDataJobConfig } =
        changeObjectNamingFromSnakeToLowerCamel(config);
      if (offlineUserDataJobConfig.type.startsWith('CUSTOMER_MATCH')) {
        offlineUserDataJobConfig.listId =
          await this.getOrCreateUserList(googleAds, offlineUserDataJobConfig);
      }
      const jobResourceName =
        await googleAds.createOfflineUserDataJob(offlineUserDataJobConfig);
      this.logger.info('jobResourceName: ', jobResourceName);
      const managedSend = this.getManagedSendFn(config);
      const configedUpload = googleAds.getAddOperationsToOfflineUserDataJobFn(
        offlineUserDataJobConfig, jobResourceName);
      const result = await managedSend(configedUpload, records, messageId);
      this.logger.info('add userdata result: ', result);
      await googleAds.runOfflineUserDataJob(
        offlineUserDataJobConfig, jobResourceName);
      return result;
    } catch (error) {
      this.logger.error('Error in UserdataOfflineDataService: ', error);
      return this.getResultFromError(googleAds, error);
    }
  }