wwwitsourceproviders-attendanceapi
Version:
Attendance Tracker
253 lines (249 loc) • 9.7 kB
JavaScript
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;