Source: utility/utm-params.js

'use strict';

/** Provide easy access to the UTM parameters from the query parameters. */
export default class UtmParams {
  /** Create an object which houses the UTM information from window.location.search
   *  at that moment in time.
   */
  constructor() {
    const params = new URLSearchParams(window.location.search);

    this.source = params.get('utm_source') || params.get('campaignSource') || '';
    this.campaign = params.get('utm_campaign') || params.get('campaignName') || '';
    this.medium = params.get('utm_medium') || params.get('campaignMedium') || '';
    this.content = params.get('utm_content') || params.get('campaignContent') || '';
    this.term = params.get('utm_term') || params.get('campaignKeyword') || '';
  }

  /**
   * Return the URL search parameter string corresponding to the UTM parameters
   * @return {string} the search parameter string
   */
  toString() {
    return 'utm_source=' + this.source +
      '&utm_campaign=' + this.campaign +
      '&utm_medium=' + this.medium +
      '&utm_content=' + this.content +
      '&utm_term=' + this.term;
  }
}