Guest User

Untitled

a guest
Nov 28th, 2017
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import fetch from "node-fetch";
  2.  
  3. /**
  4.  * TYPES
  5.  */
  6. import { ICommandStatusMessage, IConfigAuth, IToken } from "./authTypes";
  7.  
  8. /**
  9.  * CONST
  10.  */
  11. const BASE_URL: string = "http://v2-sbjck1.rxnova.com/api/v2_3/";
  12. const POST: string = "POST";
  13.  
  14. /**
  15.  * CLASS
  16.  */
  17. export default class AuthEtouches {
  18.   public username: string;
  19.   public password: string;
  20.   public accessToken: IToken;
  21.  
  22.   constructor({ username, password }: { username: string; password: string }) {
  23.     this.username = username;
  24.     this.password = password;
  25.   }
  26.  
  27.   public getAuthURL(): string {
  28.     const URL: string = `${BASE_URL}security/login/${this.username}/apikey`;
  29.     return URL;
  30.   }
  31.  
  32.   public async authorized(): Promise<string | null> {
  33.     const URL: string = this.getAuthURL();
  34.     const configRequest: IConfigAuth = {
  35.       headers: {
  36.         "Accept": "application/json",
  37.         "x-Verbosity": "Verbose",
  38.       },
  39.     };
  40.  
  41.     const res = await fetch(URL, {
  42.       method: POST,
  43.       ...configRequest,
  44.       body: JSON.stringify(this.password),
  45.     });
  46.     const accessToken = await res.json<IToken>();
  47.  
  48.     if (!accessToken.Data || !accessToken.Result) {
  49.       const error: ICommandStatusMessage = accessToken.CommandStatusMessages[0];
  50.       throw new Error(`${error.__type}: ${error.Message}`);
  51.     }
  52.     this.accessToken = accessToken;
  53.     return this.accessToken.Data;
  54.   }
  55.  
  56.   // getter
  57.   public getAccessToken(): string | null {
  58.     return this.accessToken.Data;
  59.   }
  60. }
Add Comment
Please, Sign In to add comment