# Source: resources/connect.js

    var requestManager = require('../request-manager');
    var configurations = require('../configurations');
    var Promise = require('bluebird');
    var preConditions = require('../precondition');

    var connect = module.exports = {};

    connect.get = requestManager.describe({
      base_url: 'https://auth.mercadopago.com.ar',
      path: '/authorization',
      method: 'GET'
    });

    // Get the access_token for mercadopago connect client
    connect.getCredentials = requestManager.getUserCredentials;

    /**
     * Send the authorizationCode to the redirectURI specified
     * @param clientId
     * @param redirectURI
     * @param callback
     */
    connect.sendAuthorizationCode = function (clientId, redirectURI, callback) {
      return this.get({
        qs: {
          client_id: clientId,
          response_type: 'code',
          platform_id: 'mp',
          redirect_uri: redirectURI
        }
      }, callback);
    };

    /**
     * Get the access_token from MercadoPago API and set the access_token to the SDK
     * @param clientId
     * @param redirectURI
     * @param callback
     * @returns {*}
     */
    connect.getCredentialsAndConfigure = function (clientSecret, authorizationCode, redirectURI, callback) {
      callback = preConditions.getCallback(callback);

      return requestManager.getUserCredentials(clientSecret, authorizationCode, redirectURI).then(function (response) {
        configurations.setAccessToken(response.body.access_token)
          .setRefreshToken(response.body.refresh_token);

        callback.apply(null, [null, response]);
        return Promise.resolve(response);
      }).catch(function (error) {
        callback.apply(null, [error, null]);
        return Promise.reject(error);
      });
    };