Skip to content

Instantly share code, notes, and snippets.

@wickdninja
Last active February 6, 2019 10:16
Show Gist options
  • Save wickdninja/66758a9d5d93c482cb5ef1803b38f72d to your computer and use it in GitHub Desktop.
Save wickdninja/66758a9d5d93c482cb5ef1803b38f72d to your computer and use it in GitHub Desktop.
jQuery HTTP json service with promises
var Http = (function ($, storage, self) {
var _contentType = 'application/json; charset=utf-8',
_dataType = 'json',
_key = 'token';
function getToken() {
return storage.getItem(_key);
}
function setAuthHeader(xhr) {
var token = getToken();
if (!token) return;
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
}
function get(url) {
var method = 'GET';
var deferred = $.Deferred();
ajax({
deferred: deferred,
method: method,
url: url
});
return deferred.promise();
}
function post(url, payload) {
var method = 'POST';
var deferred = $.Deferred();
var json = JSON.stringify(payload);
ajax({
deferred: deferred,
json: json,
method: method,
url: url
});
return deferred.promise();
}
function patch(url, payload) {
var method = 'PATCH';
var deferred = $.Deferred();
var json = JSON.stringify(payload);
ajax({
deferred: deferred,
json: json,
method: method,
url: url
});
return deferred.promise();
}
function put(url, payload) {
var method = 'PUT';
var deferred = $.Deferred();
var json = JSON.stringify(payload);
ajax({
deferred: deferred,
json: json,
method: method,
url: url
});
return deferred.promise();
}
function del(url) {
var method = 'DELETE';
var deferred = $.Deferred();
ajax({
deferred: deferred,
method: method,
url: url,
});
return deferred.promise();
}
function ajax(cfg) {
$.ajax({
type: cfg.method,
crossDomain: true,
url: cfg.url,
data: cfg.json,
contentType: _contentType,
dataType: _dataType,
beforeSend: setAuthHeader,
success: function (response) {
cfg.deferred.resolve(response);
},
error: function (xhr, ajaxOptions, thrownError) {
cfg.deferred.reject(thrownError);
}
});
}
self.post = post;
self.patch = patch;
self.put = put;
self.get = get;
self.delete = del;
return self;
}(jQuery, window.localStorage, Http || {}));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment