Skip to content

Commit d3bbff6

Browse files
committed
Web APIs Draft
1 parent b132c8e commit d3bbff6

1 file changed

Lines changed: 65 additions & 0 deletions

File tree

Xrm.Portal.js

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,71 @@
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+
138
var Xrm = Xrm || {};
239

340
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+
},
469
User: {
570
getAsync: async function () {
671
var t = await Xrm.Portal.Utility.Auth.get();

0 commit comments

Comments
 (0)