diff --git a/.gitignore b/.gitignore index b512c09..c727bb7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -node_modules \ No newline at end of file +node_modules +.idea +.DS_Store diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..98875f5 --- /dev/null +++ b/.jshintrc @@ -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"] +} \ No newline at end of file diff --git a/index.js b/index.js index 9686037..0c27c63 100644 --- a/index.js +++ b/index.js @@ -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); - } - }); - }); - - }; - -}; \ No newline at end of file +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); +}