async function createOrUpdateMetric()

in src/metric-client.ts [96:121]


async function createOrUpdateMetric(
  input: Input,
  metric: Metric,
  accessToken: string
): Promise<MetricResponse> {
  const { githubSha, addCommitShaToDescription } = input
  const url = `${getBaseUri(input)}/experiment-metrics/${metric.id}?api-version=${apiVersion}`
  const headers = {
    Authorization: `Bearer ${accessToken}`,
    'Content-Type': 'application/merge-patch+json',
    Accept: '*/*'
  }

  const { id, ...metricBody } = metric

  if (addCommitShaToDescription) {
    metricBody.description = `${metricBody.description} Commit hash: ${githubSha}`
  }

  const response = await axios.patch(url, metricBody, { headers })
  return {
    status: response.status,
    statusText: response.statusText,
    data: response.data
  }
}