Files
standardnotes-app-web/app/assets/javascripts/app/services/httpManager.js
2017-02-26 10:31:20 -06:00

75 lines
1.8 KiB
JavaScript

class HttpManager {
constructor($timeout) {
// calling callbacks in a $timeout allows angular UI to update
this.$timeout = $timeout;
}
setAuthHeadersForRequest(request) {
var token = localStorage.getItem("jwt");
if(token) {
request.setRequestHeader('Authorization', 'Bearer ' + localStorage.getItem("jwt"));
}
}
postAbsolute(url, params, onsuccess, onerror) {
this.httpRequest("post", url, params, onsuccess, onerror);
}
getAbsolute(url, params, onsuccess, onerror) {
this.httpRequest("get", url, params, onsuccess, onerror);
}
httpRequest(verb, url, params, onsuccess, onerror) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
var response = xmlhttp.responseText;
if(response) {
response = JSON.parse(response);
}
if(xmlhttp.status == 200){
console.log("onsuccess", response);
this.$timeout(function(){
onsuccess(response);
})
} else {
console.error("onerror", response);
this.$timeout(function(){
onerror(response)
})
}
}
}.bind(this)
if(verb == "get") {
url = url + this.formatParams(params);
}
xmlhttp.open(verb, url, true);
this.setAuthHeadersForRequest(xmlhttp);
xmlhttp.setRequestHeader('Content-type', 'application/json');
if(verb == "post") {
xmlhttp.send(JSON.stringify(params));
} else {
xmlhttp.send();
}
}
formatParams(params) {
return "?" + Object
.keys(params)
.map(function(key){
return key+"="+params[key]
})
.join("&")
}
}
angular.module('app.frontend').service('httpManager', HttpManager);