|
| 1 | +(function (webapi, $) { |
| 2 | + function safeAjax(ajaxOptions) { |
| 3 | + var deferredAjax = $.Deferred(); |
| 4 | + |
| 5 | + shell.getTokenDeferred().done(function (token) { |
| 6 | + // add headers for AJAX |
| 7 | + if (!ajaxOptions.headers) { |
| 8 | + $.extend(ajaxOptions, { |
| 9 | + headers: { |
| 10 | + "__RequestVerificationToken": token |
| 11 | + } |
| 12 | + }); |
| 13 | + } else { |
| 14 | + ajaxOptions.headers["__RequestVerificationToken"] = token; |
| 15 | + } |
| 16 | + $.ajax(ajaxOptions) |
| 17 | + .done(function (data, textStatus, jqXHR) { |
| 18 | + validateLoginSession(data, textStatus, jqXHR, deferredAjax.resolve); |
| 19 | + }).fail(deferredAjax.reject); //AJAX |
| 20 | + }).fail(function () { |
| 21 | + deferredAjax.rejectWith(this, arguments); // on token failure pass the token AJAX and args |
| 22 | + }); |
| 23 | + |
| 24 | + return deferredAjax.promise(); |
| 25 | + } |
| 26 | + webapi.safeAjax = safeAjax; |
| 27 | +})(window.webapi = window.webapi || {}, jQuery) |
| 28 | + |
| 29 | +var PortalWebAPI = { |
| 30 | + Url: '/_api/', |
| 31 | + Verb: { |
| 32 | + POST: 'POST', |
| 33 | + PATCH: 'PATCH', |
| 34 | + DELETE: 'DELETE' |
| 35 | + } |
| 36 | +} |
| 37 | + |
1 | 38 | var Xrm = Xrm || {}; |
2 | 39 |
|
3 | 40 | Xrm.Portal = { |
| 41 | + WebAPI: { |
| 42 | + createRecord: function (datasetName, data, successCallback) { |
| 43 | + webapi.safeAjax({ |
| 44 | + type: PortalWebAPI.Verb.POST, |
| 45 | + url: `${PortalWebAPI.Url}${datasetName}`, |
| 46 | + contentType: "application/json", |
| 47 | + data: JSON.stringify(data), |
| 48 | + success: function(r, s, x) { successCallback(x); } |
| 49 | + }); |
| 50 | + }, |
| 51 | + updateRecord: function (datasetName, id, data, successCallback) { |
| 52 | + webapi.safeAjax({ |
| 53 | + type: PortalWebAPI.Verb.PATCH, |
| 54 | + url: `${PortalWebAPI.Url}${datasetName}(${id})`, |
| 55 | + contentType: "application/json", |
| 56 | + data: JSON.stringify(data), |
| 57 | + success: function(r) { successCallback(r); } |
| 58 | + }); |
| 59 | + }, |
| 60 | + deleteRecord: function (datasetName, id, successCallback) { |
| 61 | + webapi.safeAjax({ |
| 62 | + type: PortalWebAPI.Verb.DELETE, |
| 63 | + url: `${PortalWebAPI.Url}${datasetName}(${id})`, |
| 64 | + contentType: "application/json", |
| 65 | + success: function(r) { successCallback(r); } |
| 66 | + }) |
| 67 | + } |
| 68 | + }, |
4 | 69 | User: { |
5 | 70 | getAsync: async function () { |
6 | 71 | var t = await Xrm.Portal.Utility.Auth.get(); |
|
0 commit comments