window.SharedApi = (function ($) { "use strict"; var api = {}; api.safeAjax = function (ajaxOptions) { var deferredAjax = $.Deferred(); if (!window.shell || !shell.getTokenDeferred) { deferredAjax.reject({ responseText: "Power Pages shell token API is not available on this page." }); return deferredAjax.promise(); } shell.getTokenDeferred() .done(function (token) { ajaxOptions.headers = ajaxOptions.headers || {}; ajaxOptions.headers["__RequestVerificationToken"] = token; $.ajax(ajaxOptions) .done(function (data, textStatus, jqXHR) { deferredAjax.resolve(data, textStatus, jqXHR); }) .fail(function (jqXHR, textStatus, errorThrown) { deferredAjax.reject(jqXHR, textStatus, errorThrown); }); }) .fail(function () { deferredAjax.reject({ responseText: "Could not obtain Power Pages verification token." }); }); return deferredAjax.promise(); }; api.get = function (url, options) { return api.safeAjax($.extend(true, { type: "GET", url: url, contentType: "application/json" }, options || {})); }; api.post = function (url, payload, options) { return api.safeAjax($.extend(true, { type: "POST", url: url, contentType: "application/json", data: JSON.stringify(payload || {}) }, options || {})); }; api.patch = function (url, payload, options) { return api.safeAjax($.extend(true, { type: "PATCH", url: url, contentType: "application/json", data: JSON.stringify(payload || {}) }, options || {})); }; api.del = function (url, options) { return api.safeAjax($.extend(true, { type: "DELETE", url: url }, options || {})); }; return api; })(jQuery);