async function sendAnonymousMetric()

in source/custom-resource/index.ts [197:247]


async function sendAnonymousMetric(requestProperties: SendMetricsRequestProperties, requestType: CustomResourceRequestTypes): Promise<{ Message: string; Data: MetricPayload }> {
  const result: { Message: string; Data: MetricPayload } = { Message: '', Data: undefined };

  try {
    const numberOfSourceBuckets =
      requestProperties.SourceBuckets?.split(',')
        .map(x => x.trim())
        .filter(x => !isNullOrWhiteSpace(x)).length || 0;
    const payload: MetricPayload = {
      Solution: SOLUTION_ID,
      Version: SOLUTION_VERSION,
      UUID: requestProperties.UUID,
      TimeStamp: moment.utc().format('YYYY-MM-DD HH:mm:ss.S'),
      Data: {
        Region: AWS_REGION,
        Type: requestType,
        CorsEnabled: requestProperties.CorsEnabled,
        NumberOfSourceBuckets: numberOfSourceBuckets,
        DeployDemoUi: requestProperties.DeployDemoUi,
        LogRetentionPeriod: requestProperties.LogRetentionPeriod,
        AutoWebP: requestProperties.AutoWebP,
        EnableSignature: requestProperties.EnableSignature,
        EnableDefaultFallbackImage: requestProperties.EnableDefaultFallbackImage
      }
    };

    result.Data = payload;

    const payloadStr = JSON.stringify(payload);

    const config: AxiosRequestConfig = {
      headers: {
        'content-type': 'application/json',
        'content-length': payloadStr.length
      }
    };

    console.info('Sending anonymous metric', payloadStr);
    const response = await axios.post(METRICS_ENDPOINT, payloadStr, config);
    console.info(`Anonymous metric response: ${response.statusText} (${response.status})`);

    result.Message = 'Anonymous data was sent successfully.';
  } catch (err) {
    console.error('Error sending anonymous metric');
    console.error(err);

    result.Message = 'Anonymous data was sent failed.';
  }

  return result;
}