UNPKG

wwwitsourceproviders-attendanceapi

Version:

Attendance Tracker

253 lines (249 loc) 9.7 kB
const https = require('https'); const SResponse = require('../query/response'); const AttendanceException = require('../query/exception'); const jwt = require('jsonwebtoken'); const fs = require('fs'); const querystring = require('querystring'); class Setting{ static setCredentials(credentials){ Setting.credentials = JSON.parse(fs.readFileSync(credentials, 'utf8')); } static get(link,data){ data['institution_id'] = Setting.credentials['institution_id']; var date = new Date(); var payload = { 'institution_id' : data['institution_id'], "iat": Math.floor(date.getTime()/1000)-date.getTimezoneOffset(), "exp": Math.floor(new Date().getTime()/1000)+3600 }; var token = jwt.sign(payload, Setting.credentials['key'], { algorithm: 'RS256'}); const body = querystring.stringify(data); const options = { hostname: Setting.base, path: '/v1.1/private'+link, method: 'GET', headers: { "Content-Type": "application/x-www-form-urlencoded", "TOKEN":token } }; var promise = new Promise((resolve, reject) => { const req = https.request(options, (res) => { let raw = ''; res.on('data', (d) => { raw += d; }); res.on('end', () => { var success, ex, response,data; try{ data = JSON.parse(raw); success = data[0]['success'] * 1; if (success == 0) { var msg = {}; var len = data[0]['messages'].length; for (var i = 0; i < len; i++) { var current = data[0]['messages'][i]; for (var key in current) { msg[key] = current[key]; } } ex = new AttendanceException(data[0]['errorcode'], msg); reject(ex); } else { var msg = {}; var len = data[0]['messages'].length; for (var i = 0; i < len; i++) { var current = data[0]['messages'][i]; for (var key in current) { msg[key] = current[key]; } } response = new SResponse(data[0]['id'], msg, data); resolve(response); } }catch(parseErr){ reject(parseErr); } }); }); req.on('error', (e) => { try{ var msg = {}; var err = JSON.parse(e.messages); msg['Error'] = err.Message; var ex = new AttendanceException(e.status, msg); if (typeof err === "object" && err !== null) { return err; }else{ reject(ex); } } catch (othere) { reject(e); } }); req.write(body); req.end(); }); return promise; } static post(link,data){ data['institution_id'] = Setting.credentials['institution_id']; var date = new Date(); var payload = { 'institution_id' : data['institution_id'], "iat": Math.floor(date.getTime()/1000)-date.getTimezoneOffset(), "exp": Math.floor(new Date().getTime()/1000)+3600 }; var token = jwt.sign(payload, Setting.credentials['key'], { algorithm: 'RS256'}); const body = querystring.stringify(data); const options = { hostname: Setting.base, path: '/v1.1/private'+link, method: 'POST', headers: { "Content-Type": "application/x-www-form-urlencoded", "TOKEN":token } }; var promise = new Promise((resolve, reject) => { const req = https.request(options, (res) => { let raw = ''; res.on('data', (d) => { raw += d; }); res.on('end', () => { var success, ex, response,data; try{ data = JSON.parse(raw); success = data[0]['success'] * 1; if (success == 0) { var msg = {}; var len = data[0]['messages'].length; for (var i = 0; i < len; i++) { var current = data[0]['messages'][i]; for (var key in current) { msg[key] = current[key]; } } ex = new AttendanceException(data[0]['errorcode'], msg); reject(ex); } else { var msg = {}; var len = data[0]['messages'].length; for (var i = 0; i < len; i++) { var current = data[0]['messages'][i]; for (var key in current) { msg[key] = current[key]; } } response = new SResponse(data[0]['id'], msg, data); resolve(response); } }catch(parseErr){ reject(parseErr); } }); }); req.on('error', (e) => { try{ var msg = {}; var err = JSON.parse(e.messages); msg['Error'] = err.Message; var ex = new AttendanceException(e.status, msg); if (typeof err === "object" && err !== null) { return err; }else{ reject(ex); } } catch (othere) { reject(e); } }); req.write(body); req.end(); }); return promise; } static get(link,data){ data['institution_id'] = Setting.credentials['institution_id']; var date = new Date(); var payload = { 'institution_id' : data['institution_id'], "iat": Math.floor(date.getTime()/1000)-date.getTimezoneOffset(), "exp": Math.floor(new Date().getTime()/1000)+3600 }; var token = jwt.sign(payload, Setting.credentials['key'], { algorithm: 'RS256'}); const body = querystring.stringify(data); const options = { hostname: Setting.base, path: '/v1.1/private'+link+'?'+body, method: 'GET', headers: { "Content-Type": "application/x-www-form-urlencoded", "TOKEN":token } }; var promise = new Promise((resolve, reject) => { const req = https.request(options, (res) => { let raw = ''; res.on('data', (d) => { raw += d; }); res.on('end', () => { var success, ex, response,data; try{ data = JSON.parse(raw); success = data[0]['success'] * 1; if (success == 0) { var msg = {}; var len = data[0]['messages'].length; for (var i = 0; i < len; i++) { var current = data[0]['messages'][i]; for (var key in current) { msg[key] = current[key]; } } ex = new AttendanceException(data[0]['errorcode'], msg); reject(ex); } else { var msg = {}; var len = data[0]['messages'].length; for (var i = 0; i < len; i++) { var current = data[0]['messages'][i]; for (var key in current) { msg[key] = current[key]; } } response = new SResponse(data[0]['id'], msg, data); resolve(response); } }catch(parseErr){ reject(parseErr); } }); }); req.on('error', (e) => { try{ var msg = {}; var err = JSON.parse(e.messages); msg['Error'] = err.Message; var ex = new AttendanceException(e.status, msg); if (typeof err === "object" && err !== null) { return err; }else{ reject(ex); } } catch (othere) { reject(e); } }); req.end(); }); return promise; } } Setting.base = 'attendance.itsourceproviders.com'; module.exports = Setting;