Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
node_modules
node_modules
.idea
.DS_Store
20 changes: 20 additions & 0 deletions .jshintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"node": true,
"curly": true,
"quotmark": "single",
"validthis": true,
"expr": true,
"loopfunc": false,
"onevar": true,
"strict": true,
"undef": true,
"unused": true,
"maxlen": 242,
"newcap": false,
"trailing": true,
"indent": 4,
"noarg": true,
"maxdepth":5,
"esversion":6,
"predef": ["describe", "document", "expect", "it", "window"]
}
206 changes: 97 additions & 109 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,112 +1,100 @@
'use strict';
const authLocalStorage = require('./localstorage-auth');
const request = require('superagent');
const BB = require('bluebird');

module.exports = function(unauthorizedRoute){

this.unauthorizedRoute = unauthorizedRoute;

var setHeaders = function (request,headers,token){
request
.set('Accept', 'application/json')
.set('X-API-Key', token);
for(var header in headers){
request.set(header,headers[header]);
}
return request;
};

this.get = function(apiDomain,url,headers,token){

return new BB((resolve,reject) => {
var authToken = token ? token : (authLocalStorage.enabled ? authLocalStorage.authToken : null);
var req = request.get(`${apiDomain}${url}`);
setHeaders(req,headers,authToken)
.end((err,res)=>{
if (err){
// If request is unauthorized
if (res.status === 403 && this.unauthorizedRoute && window){
console.error('http.js API GET Request Unauthorized');
window.location = this.unauthorizedRoute;
} else {
console.error('http.js API GET Request Error');
reject(err);
}
} else {
resolve(res);
}
});
});
};
this.post = function(apiDomain,url,data,headers,token){

return new BB((resolve,reject) => {
var authToken = token ? token : (authLocalStorage.enabled ? authLocalStorage.authToken : null);
var req = request.post(`${apiDomain}${url}`);
setHeaders(req,headers,authToken)
.send(this.data)
.end((err,res)=>{
if (err){
if (res.status === 403 && this.unauthorizedRoute && window){
console.error('http.js API POST Request Unauthorized');
window.location = this.unauthorizedRoute;
} else {
console.error('http.js API POST Request Error');
reject(err);
}
} else {
resolve(res);
}
});
});


};
this.put = function(apiDomain,url,data,headers,token){

return new BB((resolve,reject) => {
var authToken = token ? token : (authLocalStorage.enabled ? authLocalStorage.authToken : null);
var req = request.put(`${apiDomain}${url}`);
setHeaders(req,headers,authToken)
.send(data)
.end((err,res)=>{
if (err){
if (res.status === 403 && this.unauthorizedRoute && window){
console.error('http.js API PUT Request Unauthorized');
window.location = this.unauthorizedRoute;
} else {
console.error('http.js API PUT Request Error');
reject(err);
}
} else {
resolve(res);
}
});
});

};
this.delete = function(apiDomain,url,headers,token){

return new BB((resolve,reject) => {
var authToken = token ? token : (authLocalStorage.enabled ? authLocalStorage.authToken : null);
var req = request.delete(`${apiDomain}${url}`);
setHeaders(req,headers,authToken)
.end((err,res)=>{
if (err){
if (res.status === 403 && this.unauthorizedRoute && window){
console.error('http.js API DELETE Request Unauthorized');
window.location = this.unauthorizedRoute;
} else {
console.error('http.js API DELETE Request Error');
reject(err);
}
} else {
resolve(res);
}
});
});

};

};
let unauthorizedRoute = null;

module.exports = {

configure(options) {
unauthorizedRoute = options.unauthorizedRoute;
},

get(options){
let apiDomain = options.apiDomain || '';
let url = options.url || '';
let headers = options.headers || {};
let token = options.token;

let authToken = token ? token : (authLocalStorage.enabled ? authLocalStorage.authToken : null);
return request
.get(`${apiDomain}${url}`)
.set(getHeaders(headers, authToken))
.catch(err=>{
// If request is unauthorized
if (err.status === 403 && unauthorizedRoute&& window){
console.error('http.js API GET Request Unauthorized');
window.location = unauthorizedRoute;

}
});
},

post(options){
let apiDomain = options.apiDomain || '';
let url = options.url || '';
let data = options.data || {};
let headers = options.headers || {};
let token = options.token;
let authToken = token ? token : (authLocalStorage.enabled ? authLocalStorage.authToken : null);

return request
.post(`${apiDomain}${url}`)
.set(getHeaders(headers,authToken))
.send(data)
.catch(err=>{
if (err.status === 403 && unauthorizedRoute && window){
console.error('http.js API POST Request Unauthorized');
window.location = unauthorizedRoute;
}
});


},

put(options){
let apiDomain = options.apiDomain || '';
let url = options.url || '';
let data = options.data || {};
let headers = options.headers || {};
let token = options.token;

let authToken = token ? token : (authLocalStorage.enabled ? authLocalStorage.authToken : null);
return request
.put(`${apiDomain}${url}`)
.set(getHeaders(headers,authToken))
.send(data)
.catch(err=>{
if (err.status === 403 && unauthorizedRoute&& window){
console.error('http.js API PUT Request Unauthorized');
window.location = unauthorizedRoute;
}
});

},

delete(options){
let apiDomain = options.apiDomain || '';
let url = options.url || '';
let headers = options.headers || {};
let token = options.token;

let authToken = token ? token : (authLocalStorage.enabled ? authLocalStorage.authToken : null);
return request.delete(`${apiDomain}${url}`)
.set(getHeaders(headers,authToken))
.catch(err=>{
if (err.status === 403 && unauthorizedRoute&& window){
console.error('http.js API DELETE Request Unauthorized');
window.location = unauthorizedRoute;
}
});

}

};

function getHeaders(headers,token){
return Object.assign({}, {
'Accept': 'application/json',
'X-API-KEY': token
}, headers);
}