Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import fetch from "node-fetch";
- /**
- * TYPES
- */
- import { ICommandStatusMessage, IConfigAuth, IToken } from "./authTypes";
- /**
- * CONST
- */
- const BASE_URL: string = "http://v2-sbjck1.rxnova.com/api/v2_3/";
- const POST: string = "POST";
- /**
- * CLASS
- */
- export default class AuthEtouches {
- public username: string;
- public password: string;
- public accessToken: IToken;
- constructor({ username, password }: { username: string; password: string }) {
- this.username = username;
- this.password = password;
- }
- public getAuthURL(): string {
- const URL: string = `${BASE_URL}security/login/${this.username}/apikey`;
- return URL;
- }
- public async authorized(): Promise<string | null> {
- const URL: string = this.getAuthURL();
- const configRequest: IConfigAuth = {
- headers: {
- "Accept": "application/json",
- "x-Verbosity": "Verbose",
- },
- };
- const res = await fetch(URL, {
- method: POST,
- ...configRequest,
- body: JSON.stringify(this.password),
- });
- const accessToken = await res.json<IToken>();
- if (!accessToken.Data || !accessToken.Result) {
- const error: ICommandStatusMessage = accessToken.CommandStatusMessages[0];
- throw new Error(`${error.__type}: ${error.Message}`);
- }
- this.accessToken = accessToken;
- return this.accessToken.Data;
- }
- // getter
- public getAccessToken(): string | null {
- return this.accessToken.Data;
- }
- }
Add Comment
Please, Sign In to add comment