Home Reference Source

src/auth.js

import querystring from 'querystring'
import axios from 'axios'


export default class Auth {

    constructor(config){
        this.config = config
    }


    authorize_url(){
        const config = this.config
        const location =  
            config.base_url + 
            config.authorize_url + '?' + 
            querystring.stringify({
                'client_id' : config.client_id,
                'redirect_uri': config.redirect_url,
                'response_type': 'code'
                })
        return location
    }

    async revoke_token(token){
        const config = this.config
        const result = await axios.delete( 
            config.base_url + config.token_url, 
            querystring.stringify({
            client_id: config.client_id,
            client_secret: config.client_secret,
            access_token: access_token,
            redirect_uri: config.redirect_url
          }),{
            headers: {
              'Content-Type': 'application/x-www-form-urlencoded'
            }
        })
        return result
    }


    async request_token(code){
        const config = this.config
        const result = await axios.post( 
            config.base_url + config.token_url, 
            querystring.stringify({
            client_id: config.client_id,
            client_secret: config.client_secret,
            code: code,
            grant_type: 'authorization_code',
            redirect_uri: config.redirect_url
          }),{
            headers: {
              'Content-Type': 'application/x-www-form-urlencoded'
            }
        })
        const token = result.data
        return token
    }

}