Source: app/net/gateway/output/RESTOutputHandler.js

/* eslint-disable class-methods-use-this */

import stringify from 'qs/lib/stringify';

/**
 * Formats the data according to the MediaMonks REST API spec, where the action is appended to
 * the base-url.
 */
class RESTOutputHandler {
  /**
   * @param {string} action
   * @param {any} data
   * @param {IGatewayOptions} options
   * @returns {any} data
   */
  format(action, data, options) {
    /* eslint-disable no-param-reassign */
    options.url += action;

    if (options.params) {
      options.url += options.url.indexOf('?') >= 0 ? '&' : '?';
      options.url += stringify(options.params);
    }

    // make headers optional
    options.headers = options.headers || {};

    // Optional body parameters no longer work since upgrading to .NET Core 2.0
    if (options.method && options.method === 'POST') {
      data = data || {};
    }

    if (data) {
      options.headers['Content-Type'] = 'application/json';
      options.body = JSON.stringify(data);
    }
    /* eslint-disable no-param-reassign */

    return options;
  }
}

export default RESTOutputHandler;