function checkResponseStatus()

in typescript/src/services/appleValidateReceipts.ts [123:161]


function checkResponseStatus(
  response: AppleValidationServerResponse,
): AppleValidationServerResponse {
  if (
    (response.status >= 21100 && response.status <= 21199) ||
    response['is-retryable']
  ) {
    console.error(
      `Server error received from Apple, got status ${response.status}, will retry`,
    );
    throw new ProcessingError(`Server error, status ${response.status}`, true);
  }
  if (response.status === 21007) {
    const msg = `Got status 21007 and we're in ${Stage}, so we are processing a receipt from the wrong environment.`;
    console.error(msg);
    throw new GracefulProcessingError(
      `Got status ${response.status} and we're in ${Stage}`,
    );
  }
  if (response.status === 21008) {
    console.error(
      `Got status ${response.status} and we're in ${Stage}, so we are processing a receipt from the wrong environment`,
    );
    throw new ProcessingError(
      `Got status ${response.status} and we're in ${Stage}`,
    );
  }
  if (response.status != 0 && response.status != 21006) {
    console.error(
      `Invalid receipt, got status ${response.status} for ${response.latest_receipt}`,
    );
    throw new ProcessingError(`Invalid receipt, got status ${response.status}`);
  }
  if (!response.latest_receipt_info && !response.latest_expired_receipt_info) {
    console.error(`No receipt info`);
    throw new ProcessingError(`Invalid validation response, no receipt info`);
  }
  return response;
}