Home Reference Source

src/auth/TokenFetcher.js

import axios from 'axios';
import { authError } from '../catchError';
import querystring from 'querystring';
import { Token as ENDPOINT_TOKEN } from '../Endpoint';

/**
 * Fetches access token.
 */
export default class TokenFetcher {
  /**
   * @ignore
   */
  constructor(clientID, clientSecret) {
    /**
     * @ignore
     */
    this.clientID = clientID;

    /**
     * @ignore
     */
    this.clientSecret = clientSecret;
  }

  /**
   * Fetches access token.
   *
   * @param {object} params - Form data.
   * @return {Promise}
   */
  fetchAccessToken(params) {
    return axios
      .post(ENDPOINT_TOKEN, querystring.stringify(params), {
        auth: {
          username: this.clientID,
          password: this.clientSecret
        },
        headers: {}
      })
      .catch(authError);
  }
}