in django_airavata/apps/api/static/django_airavata_api/js/services/ServiceFactory.js [28:145]
const parseServiceMapping = function (serviceConfiguration) {
const mappedFunctions = {};
let viewSetFunctions = [];
if (serviceConfiguration.viewSet === true) {
viewSetFunctions = ["list", "create", "update", "delete", "retrieve"];
} else if (serviceConfiguration.viewSet instanceof Array) {
viewSetFunctions = serviceConfiguration.viewSet;
}
let url = serviceConfiguration.url;
if (!url.endsWith("/")) {
url = url + "/";
}
let modelClass = serviceConfiguration.modelClass;
let queryParams = serviceConfiguration.queryParams;
let defaultPagination = serviceConfiguration.pagination ? true : false;
let encodePathParams =
"encodePathParams" in serviceConfiguration
? serviceConfiguration.encodePathParams
: true;
for (let viewSetFunction of viewSetFunctions) {
let viewSetFunctionName = viewSetFunction;
let pagination = defaultPagination;
if (typeof viewSetFunctionName !== "string") {
viewSetFunctionName = viewSetFunction.name;
if ("pagination" in viewSetFunction) {
pagination = viewSetFunction.pagination;
}
}
switch (viewSetFunctionName) {
case "list":
mappedFunctions["list"] = {
url: url,
requestType: getKey,
modelClass: modelClass,
queryParams: queryParams,
initialDataParam: viewSetFunction.initialDataParam,
encodePathParams: encodePathParams,
};
break;
case "create":
mappedFunctions["create"] = {
url: url,
requestType: postKey,
bodyParams: {
name: "data",
},
modelClass: modelClass,
queryParams: queryParams,
encodePathParams: encodePathParams,
};
break;
case "update":
mappedFunctions["update"] = {
url: url + "<lookup>/",
requestType: putKey,
bodyParams: {
name: "data",
},
modelClass: modelClass,
queryParams: queryParams,
encodePathParams: encodePathParams,
};
break;
case "retrieve":
mappedFunctions["retrieve"] = {
url: url + "<lookup>/",
requestType: getKey,
modelClass: modelClass,
queryParams: queryParams,
initialDataParam: viewSetFunction.initialDataParam,
encodePathParams: encodePathParams,
};
break;
case "delete":
mappedFunctions["delete"] = {
url: url + "<lookup>/",
requestType: delKey,
modelClass: modelClass,
queryParams: queryParams,
encodePathParams: encodePathParams,
};
break;
default:
// Assume all fields have been provided
mappedFunctions[viewSetFunctionName] = viewSetFunction;
break;
}
mappedFunctions[viewSetFunctionName].pagination = pagination;
}
if ("methods" in serviceConfiguration) {
for (let methodName of Object.keys(serviceConfiguration["methods"])) {
let methodConfig = serviceConfiguration["methods"][methodName];
mappedFunctions[methodName] = {
url: methodConfig.url || url,
requestType: methodConfig.requestType || getKey,
queryParams: methodConfig.queryParams || queryParams,
pagination:
"pagination" in methodConfig
? methodConfig.pagination
: defaultPagination,
encodePathParams:
"encodePathParams" in methodConfig
? methodConfig.encodePathParams
: true,
};
if ("modelClass" in methodConfig) {
mappedFunctions[methodName]["modelClass"] = methodConfig.modelClass;
}
if ("bodyParams" in methodConfig) {
mappedFunctions[methodName]["bodyParams"] = methodConfig.bodyParams;
}
if ("pathParams" in methodConfig) {
mappedFunctions[methodName]["pathParams"] = methodConfig.pathParams;
}
}
}
return mappedFunctions;
};