import BaseEntityClient from '../../common/clients/BaseEntityClient'; import AuthenticatorClientInterface from './AuthenticatorClientInterface'; import HTTPRequest from '../../Request/entity/HTTPRequest'; import RequestPromise from '../../common/DTO/RequestPromise'; import GrantType from '../enums/GrantType'; import MethodNotImplementedYetException from '../../common/exceptions/MethodNotImplementedYetException'; export default class AuthenticatorClient extends BaseEntityClient implements AuthenticatorClientInterface { private LOGIN = `${this.getBasepath()}`; private REFRESH_TOKEN = `${this.getBasepath()}`; getBasepath() { return '/oauth/token'; } login(httpRequest: HTTPRequest): RequestPromise { httpRequest.url = this.LOGIN; const data = { ...httpRequest.data, grant_type: GrantType.PASSWORD, client_id: '1', // Given by Albert, save into params file. client_secret: '2cQRUseGngtHMgRlzyj89FTTj06QdVZ7H4Pn6vD9', // Given by Albert, save into params file. }; httpRequest.data = this.getLoginPayload(data); return super.post(httpRequest); } refreshToken(httpRequest: HTTPRequest): RequestPromise { throw new MethodNotImplementedYetException('\'refreshToken\' at client level'); } private getLoginPayload(data) { return Object.keys(data).map(each => `${each}=${data[each]}`).join('&'); } }