aboutsummaryrefslogtreecommitdiffstats
path: root/apidoc/utils/send_sample_request_utils.js
diff options
context:
space:
mode:
authorAdrien Hopkins <[email protected]>2021-08-18 13:45:18 -0500
committerAdrien Hopkins <[email protected]>2021-08-18 13:45:18 -0500
commite4669eaf9700ecc503bee3305315256968bd05e5 (patch)
treefd5955fc3450351f80eb64221faca0854412612b /apidoc/utils/send_sample_request_utils.js
parent01b96b95507d6ffd6c551c834bea5478b190d308 (diff)
downloadcoinos-server-e4669eaf9700ecc503bee3305315256968bd05e5.tar.gz
coinos-server-e4669eaf9700ecc503bee3305315256968bd05e5.zip
Compiled existing api docs to ./apidoc/
Diffstat (limited to 'apidoc/utils/send_sample_request_utils.js')
-rw-r--r--apidoc/utils/send_sample_request_utils.js97
1 files changed, 97 insertions, 0 deletions
diff --git a/apidoc/utils/send_sample_request_utils.js b/apidoc/utils/send_sample_request_utils.js
new file mode 100644
index 00000000..fbda1ffd
--- /dev/null
+++ b/apidoc/utils/send_sample_request_utils.js
@@ -0,0 +1,97 @@
+//this block is used to make this module works with Node (CommonJS module format)
+if (typeof define !== 'function') {
+ var define = require('amdefine')(module)
+}
+
+define(['lodash'], function (_) {
+
+ var log = console;
+
+ function handleNestedFields(object, key, params, paramType) {
+ var attributes = key.split('.');
+ var field = attributes[0];
+ params.push(field);
+ if (attributes.length > 1 && paramType[params.join('.')] == 'Object') {
+ var nestedField = attributes.slice(1).join('.');
+ if (!object[field])
+ object[field] = {};
+ if (typeof object[field] == 'object') {
+ object[field][nestedField] = object[key];
+ delete object[key];
+ handleNestedFields(object[field], nestedField, params, paramType);
+ }
+ }
+ }
+
+ function handleNestedFieldsForAllParams(param, paramType) {
+ var result = Object.assign({}, param);
+ Object.keys(result).forEach(function (key) {
+ handleNestedFields(result, key, [], paramType);
+ });
+ return result
+ }
+
+ function handleArraysAndObjectFields(param, paramType) {
+ var result = Object.assign({}, param);
+ Object.keys(paramType).forEach(function (key) {
+ if (result[key] && (paramType[key].endsWith('[]') || paramType[key] === 'Object')) {
+ try {
+ result[key] = JSON.parse(result[key]);
+ } catch (e) {;}
+ }
+ });
+ return result
+ }
+
+ function tryParsingAsType(object, path, type) {
+ var val = _.get(object, path);
+ if (val !== undefined) {
+ if (type === 'Boolean') {
+ if (val === 'true') {
+ _.set(object, path, true);
+ } else if (val === 'false') {
+ _.set(object, path, false);
+ } else {
+ log.warn('Failed to parse object value at path [' + path + ']. Value: (' + val + '). Type: (' + type + ')');
+ }
+ } else if (type === 'Number') {
+ var parsedInt = parseInt(val, 10);
+ if (!_.isNaN(parsedInt)) {
+ _.set(object, path, parsedInt);
+ } else {
+ log.warn('Failed to parse object value at path [' + path + ']. Value: (' + val + '). Type: (' + type + ')');
+ }
+ }
+ }
+ }
+
+ function handleNestedAndParsingFields(param, paramType) {
+ var result = handleArraysAndObjectFields(param, paramType);
+ result = handleNestedFieldsForAllParams(result, paramType);
+ return result;
+ }
+
+ function tryParsingWithTypes(param, paramType) {
+ var result = Object.assign({}, param);
+ Object.keys(paramType).forEach(function (key) {
+ tryParsingAsType(result, key, paramType[key]);
+ });
+ return result;
+ }
+
+ // Converts path params in the {param} format to the accepted :param format, used before inserting the URL params.
+ function convertPathParams(url) {
+ return url.replace(/{(.+?)}/g, ':$1');
+ }
+
+ function setLogger(logger) {
+ log = logger;
+ }
+
+ return {
+ handleNestedAndParsingFields,
+ convertPathParams,
+ tryParsingWithTypes,
+ setLogger
+ };
+});