This commit is contained in:
2022-08-28 23:10:17 +00:00
parent 4e5095d46c
commit c2cf61c4ce
3 changed files with 542 additions and 436 deletions

View File

@@ -12,383 +12,445 @@
/*global $, io, app */
app.api = (function () {
"use strict";
var initModule,
getAuthHeaderObject,
RockFishVersion,
get,
remove,
create,
update,
uploadFile,
putAction,
postAction,
createLicense,
createRavLicense,
getLicenseRequests,
generateFromRequest,
licenseEmailResponse;
"use strict";
var initModule,
getAuthHeaderObject,
RockFishVersion,
get,
remove,
create,
update,
uploadFile,
putAction,
postAction,
createLicense,
createRavLicense,
getLicenseRequests,
generateFromRequest,
licenseEmailResponse,
test;
RockFishVersion = "6.20";
RockFishVersion = "6.20";
//////////////////////////////////////////////////////////////////////////////////////
// NOT AUTHORIZED ERROR HANDLER
//////////////////////////////////////////////////////////////////////////////////////
// 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");
}
});
$(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
//////////////////////////////////////////////////////////////////////////////////////
// UTILITY
///////////////////////////////////////////////////////////
// Return the auth token header
//
//
getAuthHeaderObject = function () {
return {
Authorization: "Bearer " + app.shell.stateMap.user.token
///////////////////////////////////////////////////////////
// Return the auth token header
//
//
getAuthHeaderObject = function () {
return {
Authorization: "Bearer " + app.shell.stateMap.user.token
};
};
};
//////////////////////////////////////////////////////////////////////////////////////
// ROCKFISH CORE ROUTES
//////////////////////////////////////////////////////////////////////////////////////
// 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: {}
///////////////////////////////////////////////////////////
//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(),
/////////////////
//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: {}
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 };
///////////////////////////////////////////////////////////
//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: {}
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: {}
///////////////////////////////////////////////////////////
//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: {}
///////////////////////////////////////////////////////////
// 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 };
}
//////////////////////////////////////////////////////////////
//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: {}
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 };
}
//////////////////////////////////////////////////////////////
//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: {}
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg:
textStatus +
"\n" +
jqXHR.responseText +
"\n" +
errorThrown,
error_detail: {}
});
}
});
}
});
};
};
//////////////////////////////////////////////////////////////////////////////////////
// LICENSE KEY RELATED API METHODS
//////////////////////////////////////////////////////////////////////////////////////
// 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: {}
///////////////////////////////////////////////////////////
//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: {}
///////////////////////////////////////////////////////////
//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: {}
///////////////////////////////////////////////////////////
//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: {}
///////////////////////////////////////////////////////////
//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: {}
///////////////////////////////////////////////////////////
//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 () {};
///////////////////////////////////////////////////////////
//test functin for rockfish endpoint testing
//
//
test = function (objData, callback) {
//Test fake shareit webhook
$.ajax({
method: "post",
dataType: "json",
url: app.shell.stateMap.apiUrl + "order/shareit",
username: 'Y24PYYDQSA1L12905N5MKU',
password: 'MA8GMQK2PC3FDNT1RTR68R',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(objData),
success: function (data) {
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
callback({
error: 1,
msg: textStatus + "\n" + errorThrown,
error_detail: {}
});
}
});
};
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
};
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,
test: test
};
})();

View File

@@ -7,108 +7,152 @@
/*global $, app */
app.rfsettings = (function() {
"use strict";
//---------------- BEGIN MODULE SCOPE VARIABLES --------------
var stateMap = {},
configModule,
onChangePassword,
initModule,
onTest;
//----------------- END MODULE SCOPE VARIABLES ---------------
app.rfsettings = (function () {
"use strict";
//---------------- BEGIN MODULE SCOPE VARIABLES --------------
var stateMap = {},
configModule,
onChangePassword,
initModule,
onTest;
//----------------- END MODULE SCOPE VARIABLES ---------------
//------------------- BEGIN UTILITY METHODS ------------------
//-------------------- END UTILITY METHODS -------------------
//------------------- BEGIN EVENT HANDLERS -------------------
///////////////////////////////
//ONUPDATE
//
onChangePassword = function(event) {
event.preventDefault();
$.gevent.publish("app-clear-error");
//get form data
var formData = $("form").serializeArray({
checkboxesAsBools: true
});
var submitData = app.utilB.objectifyFormDataArray(formData);
app.api.create(
"user/" + app.shell.stateMap.user.id + "/changepassword",
submitData,
function(res) {
if (res.error) {
$.gevent.publish("app-show-error", res.msg);
} else {
page("#!/logout");
}
}
);
return false; //prevent default?
};
//------------------- BEGIN UTILITY METHODS ------------------
//-------------------- END UTILITY METHODS -------------------
//------------------- BEGIN EVENT HANDLERS -------------------
///////////////////////////////
//ONTEST
//
onTest = function(event) {
event.preventDefault();
//ONUPDATE
//
onChangePassword = function (event) {
event.preventDefault();
$.gevent.publish("app-clear-error");
//get form data
var formData = $("form").serializeArray({
checkboxesAsBools: true
});
return false; //prevent default?
};
//-------------------- END EVENT HANDLERS --------------------
var submitData = app.utilB.objectifyFormDataArray(formData);
//------------------- BEGIN PUBLIC METHODS -------------------
//CONFIGMODULE
//
configModule = function(context) {
stateMap.context = context.context;
if (stateMap.context.params.id) {
stateMap.id = stateMap.context.params.id;
}
};
//INITMODULE
//
initModule = function($container) {
if (typeof $container === "undefined") {
$container = $("#app-shell-main-content");
}
$container.html(Handlebars.templates["app.rfsettings"]({}));
// bind actions
$("#btn-change-password").bind("click", onChangePassword);
$("#btn-test").bind("click", onTest);
//Context menu
app.nav.contextClear();
app.api.get("meta/server_version/", function(res) {
if (res.error) {
$.gevent.publish("app-show-error", res.msg);
} else {
$("#about").append(
"<p>Rockfish client version: " +
app.api.RockFishVersion +
"</p><p>Rockfish server version: " +
res.server_version +
"</p>"
app.api.create(
"user/" + app.shell.stateMap.user.id + "/changepassword",
submitData,
function (res) {
if (res.error) {
$.gevent.publish("app-show-error", res.msg);
} else {
page("#!/logout");
}
}
);
}
});
////app.nav.setContextTitle("Search");
};
return false; //prevent default?
};
//PUBLIC METHODS
//
return {
configModule: configModule,
initModule: initModule
};
//------------------- END PUBLIC METHODS ---------------------
///////////////////////////////
//ONTEST
//
onTest = function (event) {
event.preventDefault();
var submitData = {
creation_date: "2018-06-19T11:08:09.0000000Z", // <-- NEW
id: 283832781, // <-- NEW
order_notification: {
// <-- NEW - Type of the message (same as in XML with out the "e5"-prefix)
purchase: {
customer_data: {
billing_contact: {},
customer_payment_data: {},
delivery_contact: {},
language: "English",
language_iso: "en", // <-- NEW
reg_name: "Test",
shopper_id: "5678", // <-- NEW, also known as Customer ID
subscribe_newsletter: false,
user_id: "abc@test.com-100"
},
payment_status: "complete",
payment_status_id: "PCA", // <-- NEW, our status ID
purchase_id: 1234567890,
purchase_date: "2018-03-29T10:25:12.0000000Z",
purchase_item: [
// <-- NEW, this is now an array
{
running_no: 1,
your_product_id:
"this is the same as product_code in the API"
},
{
running_no: 2
}
],
purchase_origin: "online"
}
}
};
app.api.test(submitData, function (res) {
if (res.error) {
$.gevent.publish("app-show-error", res.msg);
} else {
//do nothing, success!
//$('#key').val(res);
return false;
}
});
return false; //prevent default?
};
//-------------------- END EVENT HANDLERS --------------------
//------------------- BEGIN PUBLIC METHODS -------------------
//CONFIGMODULE
//
configModule = function (context) {
stateMap.context = context.context;
if (stateMap.context.params.id) {
stateMap.id = stateMap.context.params.id;
}
};
//INITMODULE
//
initModule = function ($container) {
if (typeof $container === "undefined") {
$container = $("#app-shell-main-content");
}
$container.html(Handlebars.templates["app.rfsettings"]({}));
// bind actions
$("#btn-change-password").bind("click", onChangePassword);
$("#btn-test").bind("click", onTest);
//Context menu
app.nav.contextClear();
app.api.get("meta/server_version/", function (res) {
if (res.error) {
$.gevent.publish("app-show-error", res.msg);
} else {
$("#about").append(
"<p>Rockfish client version: " +
app.api.RockFishVersion +
"</p><p>Rockfish server version: " +
res.server_version +
"</p>"
);
}
});
////app.nav.setContextTitle("Search");
};
//PUBLIC METHODS
//
return {
configModule: configModule,
initModule: initModule
};
//------------------- END PUBLIC METHODS ---------------------
})();