Files
rockfish/wwwroot/js/app.api.js
2020-07-05 19:03:45 +00:00

395 lines
11 KiB
JavaScript

/*
* app.api.js
* Ajax api helper module
*/
/*jslint browser : true, continue : true,
devel : true, indent : 2, maxerr : 50,
newcap : true, nomen : true, plusplus : true,
regexp : true, sloppy : true, vars : false,
white : true
*/
/*global $, io, app */
app.api = (function () {
"use strict";
var initModule,
getAuthHeaderObject,
RockFishVersion,
get,
remove,
create,
update,
uploadFile,
putAction,
postAction,
createLicense,
createRavLicense,
getLicenseRequests,
generateFromRequest,
licenseEmailResponse;
RockFishVersion = "6.10";
//////////////////////////////////////////////////////////////////////////////////////
// NOT AUTHORIZED ERROR HANDLER
$(document).ajaxError(function (event, jqxhr, settings, thrownError) {
//unauthorized? Trigger logout which will trigger login after clearing creds
if (jqxhr.status == 401) {
window.location.replace("#!/logout");
}
});
//////////////////////////////////////////////////////////////////////////////////////
// UTILITY
///////////////////////////////////////////////////////////
// Return the auth token header
//
//
getAuthHeaderObject = function () {
return {
Authorization: "Bearer " + app.shell.stateMap.user.token
};
};
//////////////////////////////////////////////////////////////////////////////////////
// ROCKFISH CORE ROUTES
///////////////////////////////////////////////////////////
//Create
//Route app.post('/api/:obj_type/create', function (req, res) {
//
create = function (apiRoute, objData, callback) {
$.ajax({
method: "post",
dataType: "json",
url: app.shell.stateMap.apiUrl + apiRoute,
headers: getAuthHeaderObject(),
contentType: "application/json; charset=utf-8",
data: JSON.stringify(objData),
success: function (data, textStatus) {
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg: textStatus + "\n" + jqXHR.responseText + "\n" + errorThrown,
error_detail: {}
});
}
});
};
/////////////////
//Get - get anything, the caller provides the route, this should replace most legacy get
//
get = function (apiRoute, callback) {
$.ajax({
method: "GET",
dataType: "json",
url: app.shell.stateMap.apiUrl + apiRoute,
headers: getAuthHeaderObject(),
success: function (data, textStatus) {
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg: textStatus + "\n" + jqXHR.responseText + "\n" + errorThrown,
error_detail: {}
});
}
});
};
////////////////////
///////////////////////////////////////////////////////////
//Update
//route: app.post('/api/:obj_type/update/:id', function (req, res) {
//
update = function (objType, objData, callback) {
var theId;
if (!objData.id) {
return callback({
error: 1,
msg: "app.api.js::update->Error: missing id field in update document",
error_detail: objData
});
}
theId = objData.id;
$.ajax({
method: "put",
dataType: "json",
url: app.shell.stateMap.apiUrl + objType + "/" + theId,
headers: getAuthHeaderObject(),
contentType: "application/json; charset=utf-8",
data: JSON.stringify(objData),
success: function (data, textStatus) {
if (data == null) {
data = { ok: 1 };
}
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg: textStatus + "\n" + jqXHR.responseText + "\n" + errorThrown,
error_detail: {}
});
}
});
};
///////////////////////////////////////////////////////////
//remove Item
remove = function (apiRoute, callback) {
$.ajax({
method: "DELETE",
dataType: "json",
url: app.shell.stateMap.apiUrl + apiRoute,
headers: getAuthHeaderObject(),
success: function (data, textStatus) {
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg: textStatus + "\n" + jqXHR.responseText + "\n" + errorThrown,
error_detail: {}
});
}
});
};
///////////////////////////////////////////////////////////
// uploadFile
// (ajax route to upload a file)
//
uploadFile = function (apiRoute, objData, callback) {
$.ajax({
method: "post",
dataType: "json",
url: app.shell.stateMap.apiUrl + apiRoute,
headers: getAuthHeaderObject(),
contentType: false,
processData: false,
data: objData,
success: function (data, textStatus) {
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg: textStatus + "\n" + errorThrown,
error_detail: {}
});
}
});
};
//////////////////////////////////////////////////////////////
//putAction - ad-hoc put method used to trigger actions etc
//
putAction = function (apiRoute, callback) {
$.ajax({
method: "put",
dataType: "json",
url: app.shell.stateMap.apiUrl + apiRoute,
headers: getAuthHeaderObject(),
contentType: "application/json; charset=utf-8",
//data: JSON.stringify(objData),
success: function (data, textStatus) {
if (data == null) {
data = { ok: 1 };
}
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg: textStatus + "\n" + jqXHR.responseText + "\n" + errorThrown,
error_detail: {}
});
}
});
};
//////////////////////////////////////////////////////////////
//postAction - ad-hoc post method used to trigger actions etc
// (becuase it shouldn't have been put in the first place above)
postAction = function (apiRoute, callback) {
$.ajax({
method: "post",
dataType: "json",
url: app.shell.stateMap.apiUrl + apiRoute,
headers: getAuthHeaderObject(),
contentType: "application/json; charset=utf-8",
success: function (data, textStatus) {
if (data == null) {
data = { ok: 1 };
}
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg: textStatus + "\n" + jqXHR.responseText + "\n" + errorThrown,
error_detail: {}
});
}
});
};
//////////////////////////////////////////////////////////////////////////////////////
// LICENSE KEY RELATED API METHODS
///////////////////////////////////////////////////////////
//CreateLicense
//Route app.post('/api/license/create', function (req, res) {
//
createLicense = function (objData, callback) {
$.ajax({
method: "post",
dataType: "text",
url: app.shell.stateMap.apiUrl + "license/generate",
headers: getAuthHeaderObject(),
contentType: "application/json; charset=utf-8",
data: JSON.stringify(objData),
success: function (data, textStatus) {
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg: textStatus + "\n" + errorThrown,
error_detail: {}
});
}
});
};
///////////////////////////////////////////////////////////
//CreateRavLicense
//Route app.post('/api/license/create', function (req, res) {
//
createRavLicense = function (objData, callback) {
$.ajax({
method: "post",
dataType: "text",
url: app.shell.stateMap.apiUrl + "rvl",
headers: getAuthHeaderObject(),
contentType: "application/json; charset=utf-8",
data: JSON.stringify(objData),
success: function (data, textStatus) {
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg: textStatus + "\n" + errorThrown,
error_detail: {}
});
}
});
};
///////////////////////////////////////////////////////////
//GetLicenseRequests
//Fetch license requests
//route: app.get('/api/license/requests', function (req, res) {
//
getLicenseRequests = function (callback) {
$.ajax({
method: "GET",
dataType: "json",
url: app.shell.stateMap.apiUrl + "license/requests",
headers: getAuthHeaderObject(),
success: function (data, textStatus) {
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg: textStatus + "\n" + errorThrown,
error_detail: {}
});
}
});
};
///////////////////////////////////////////////////////////
//GenerateFromRequest
//Fetch generated response to license request
//route: app.get('/api/license/generateFromRequest/:uid', function (req, res) {
//
generateFromRequest = function (uid, callback) {
$.ajax({
method: "GET",
dataType: "json",
url: app.shell.stateMap.apiUrl + "license/generateFromRequest/" + uid,
headers: getAuthHeaderObject(),
success: function (data, textStatus) {
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg: textStatus + "\n" + errorThrown,
error_detail: {}
});
}
});
};
///////////////////////////////////////////////////////////
//Email license request response
//app.post('/api/license/email_response', function (req, res) {
//
licenseEmailResponse = function (objData, callback) {
$.ajax({
method: "post",
dataType: "text",
url: app.shell.stateMap.apiUrl + "license/email_response",
headers: getAuthHeaderObject(),
contentType: "application/json; charset=utf-8",
data: JSON.stringify(objData),
success: function (data, textStatus) {
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg: textStatus + "\n" + errorThrown,
error_detail: {}
});
}
});
};
initModule = function () {};
return {
initModule: initModule,
getAuthHeaderObject: getAuthHeaderObject,
RockFishVersion: RockFishVersion,
get: get,
remove: remove,
create: create,
update: update,
uploadFile: uploadFile,
putAction: putAction,
postAction: postAction,
createLicense: createLicense,
createRavLicense: createRavLicense,
getLicenseRequests: getLicenseRequests,
generateFromRequest: generateFromRequest,
licenseEmailResponse: licenseEmailResponse
};
})();