Home Reference Source

src/domains.js

/* @flow */

import { ENV } from "@paypal/sdk-constants/src";
import {
  getDomain,
  getActualDomain,
  isCurrentDomain,
} from "@krakenjs/cross-domain-utils/src";

import {
  getProtocol,
  getStageHost,
  getPayPalDomain,
  getPayPalAPIDomain,
} from "./global";
import { URI } from "./config";

export function getPayPalLoggerDomain(): string {
  if (__ENV__ === ENV.LOCAL) {
    const stageHost = getStageHost();

    if (!stageHost) {
      throw new Error(`No stage host found`);
    }

    return `${getProtocol()}://${stageHost}`;
  }

  return getPayPalDomain();
}

export function buildPayPalUrl(path: string = ""): string {
  return __TEST__ && __WEB__
    ? `${getActualDomain()}${path}`
    : `${getPayPalDomain()}${path}`;
}

export function buildPayPalAPIUrl(path: string = ""): string {
  const paypalAPIDomain = isCurrentDomain(getPayPalDomain())
    ? getPayPalDomain()
    : getPayPalAPIDomain();

  return __TEST__ && __WEB__
    ? `${getActualDomain()}${path}`
    : `${paypalAPIDomain}${path}`;
}

export function getPayPalLoggerUrl(): string {
  return buildPayPalUrl(URI.LOGGER);
}

export function getAuthAPIUrl(): string {
  return buildPayPalAPIUrl(URI.AUTH);
}

export function getOrderAPIUrl(): string {
  return buildPayPalAPIUrl(URI.ORDER);
}

export function getPayPalDomainRegex(): RegExp {
  if (__ENV__ === ENV.LOCAL) {
    return /.*loca.*/;
  }
  // eslint-disable-next-line security/detect-unsafe-regex
  return /\.paypal\.(com|cn)(:\d+)?$/;
}

export function isPayPalDomain(): boolean {
  return Boolean(getDomain().match(getPayPalDomainRegex()));
}