UNPKG

lh-sdk

Version:

LassondeHacks REST API SDK in Typescript

112 lines (99 loc) 3.4 kB
import * as request from 'request'; export interface Response { success: boolean; msg: string; err: string; } export interface Model { save(): Promise<boolean>; delete(): Promise<boolean>; } export class SDK { public static instace: SDK; private cookie: string; private api: string; public static getInstance() { if (SDK.instace === undefined) { SDK.instace = new SDK(); } return SDK.instace; } constructor() { if (process.env.NODE_ENV === 'production') { this.api = "https://lassondehacks.io/api/"; } else if (process.env.NODE_ENV === 'staging') { this.api = "http://staging.lassondehacks.io:8080/"; } else { this.api = "http://localhost:8080/"; } this.cookie = null; } public GET(url: string): Promise<any> { return new Promise<any>((resolve, reject) => { let self = this; request.get(this.api + url, (err, res, body) => { if (err) { reject(err); } else { try { if (res.headers["set-cookie"]) { self.cookie = res.headers["set-cookie"][0]; } if (typeof (body) === 'string') { resolve(JSON.parse(body)); } else { resolve(body); } } catch (err) { reject(err); } } }).setHeader("Cookie", this.cookie); }); } public POST(url: string, params: Object): Promise<any> { return new Promise<any>((resolve, reject) => { let self = this; request.post(this.api + url, (err, res, body) => { if (err) { reject(err); } else { if (res.headers["set-cookie"]) { self.cookie = res.headers["set-cookie"][0]; } resolve(body); } }).json(params).setHeader("Cookie", this.cookie); }); } public PUT(url: string, params: Object): Promise<any> { return new Promise<any>((resolve, reject) => { let self = this; request.put(this.api + url, (err, res, body) => { if (err) { reject(err); } else { if (res.headers["set-cookie"]) { self.cookie = res.headers["set-cookie"][0]; } resolve(body); } }).json(params).setHeader("Cookie", this.cookie); }); } public DELETE(url: string, params: Object): Promise<any> { return new Promise<any>((resolve, reject) => { let self = this; request.delete(this.api + url, (err, res, body) => { if (err) { reject(err); } else { if (res.headers["set-cookie"]) { self.cookie = res.headers["set-cookie"][0]; } resolve(body); } }).json(params).setHeader("Cookie", this.cookie); }); } }