Last active
February 6, 2019 10:16
-
-
Save wickdninja/66758a9d5d93c482cb5ef1803b38f72d to your computer and use it in GitHub Desktop.
jQuery HTTP json service with promises
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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