aboutsummaryrefslogtreecommitdiffstats
path: root/apidoc/utils
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-01-08 21:05:34 -0800
committerAdam Soltys <[email protected]>2023-01-08 21:05:34 -0800
commitdce07aa93b3c2f47aca0c24cea6adde9ec37f1a7 (patch)
tree6c6b8930ebe9c2cc5b8d1f759e61260f509fdd7a /apidoc/utils
parentf7b844883506a8072213245b9b8a2b988694e4f5 (diff)
downloadcoinos-server-dce07aa93b3c2f47aca0c24cea6adde9ec37f1a7.tar.gz
coinos-server-dce07aa93b3c2f47aca0c24cea6adde9ec37f1a7.zip
tech debt jubilee
Diffstat (limited to 'apidoc/utils')
-rw-r--r--apidoc/utils/handlebars_helper.js416
-rw-r--r--apidoc/utils/send_sample_request.js272
-rw-r--r--apidoc/utils/send_sample_request_utils.js97
3 files changed, 0 insertions, 785 deletions
diff --git a/apidoc/utils/handlebars_helper.js b/apidoc/utils/handlebars_helper.js
deleted file mode 100644
index ed1dc1da..00000000
--- a/apidoc/utils/handlebars_helper.js
+++ /dev/null
@@ -1,416 +0,0 @@
-define([
- 'locales',
- 'handlebars',
- 'diffMatchPatch'
-], function(locale, Handlebars, DiffMatchPatch) {
-
- /**
- * Return a text as markdown.
- * Currently only a little helper to replace apidoc-inline Links (#Group:Name).
- * Should be replaced with a full markdown lib.
- * @param string text
- */
- Handlebars.registerHelper('markdown', function(text) {
- if ( ! text ) {
- return text;
- }
- text = text.replace(/((\[(.*?)\])?\(#)((.+?):(.+?))(\))/mg, function(match, p1, p2, p3, p4, p5, p6) {
- var link = p3 || p5 + '/' + p6;
- return '<a href="#api-' + p5 + '-' + p6 + '">' + link + '</a>';
- });
- return text;
- });
-
- /**
- * set paramater type.
- */
- Handlebars.registerHelper("setInputType", function(text) {
- if (text === "File") {
- return "file";
- }
- return "text";
- });
-
- /**
- * start/stop timer for simple performance check.
- */
- var timer;
- Handlebars.registerHelper('startTimer', function(text) {
- timer = new Date();
- return '';
- });
-
- Handlebars.registerHelper('stopTimer', function(text) {
- console.log(new Date() - timer);
- return '';
- });
-
- /**
- * Return localized Text.
- * @param string text
- */
- Handlebars.registerHelper('__', function(text) {
- return locale.__(text);
- });
-
- /**
- * Console log.
- * @param mixed obj
- */
- Handlebars.registerHelper('cl', function(obj) {
- console.log(obj);
- return '';
- });
-
- /**
- * Replace underscore with space.
- * @param string text
- */
- Handlebars.registerHelper('underscoreToSpace', function(text) {
- return text.replace(/(_+)/g, ' ');
- });
-
- /**
- *
- */
- Handlebars.registerHelper('assign', function(name) {
- if(arguments.length > 0) {
- var type = typeof(arguments[1]);
- var arg = null;
- if(type === 'string' || type === 'number' || type === 'boolean') arg = arguments[1];
- Handlebars.registerHelper(name, function() { return arg; });
- }
- return '';
- });
-
- /**
- *
- */
- Handlebars.registerHelper('nl2br', function(text) {
- return _handlebarsNewlineToBreak(text);
- });
-
- /**
- *
- */
- Handlebars.registerHelper('if_eq', function(context, options) {
- var compare = context;
- // Get length if context is an object
- if (context instanceof Object && ! (options.hash.compare instanceof Object))
- compare = Object.keys(context).length;
-
- if (compare === options.hash.compare)
- return options.fn(this);
-
- return options.inverse(this);
- });
-
- /**
- *
- */
- Handlebars.registerHelper('if_gt', function(context, options) {
- var compare = context;
- // Get length if context is an object
- if (context instanceof Object && ! (options.hash.compare instanceof Object))
- compare = Object.keys(context).length;
-
- if(compare > options.hash.compare)
- return options.fn(this);
-
- return options.inverse(this);
- });
-
- /**
- *
- */
- var templateCache = {};
- Handlebars.registerHelper('subTemplate', function(name, sourceContext) {
- if ( ! templateCache[name])
- templateCache[name] = Handlebars.compile($('#template-' + name).html());
-
- var template = templateCache[name];
- var templateContext = $.extend({}, this, sourceContext.hash);
- return new Handlebars.SafeString( template(templateContext) );
- });
-
- /**
- *
- */
- Handlebars.registerHelper('toLowerCase', function(value) {
- return (value && typeof value === 'string') ? value.toLowerCase() : '';
- });
-
- /**
- *
- */
- Handlebars.registerHelper('splitFill', function(value, splitChar, fillChar) {
- var splits = value.split(splitChar);
- return new Array(splits.length).join(fillChar) + splits[splits.length - 1];
- });
-
- /**
- * Convert Newline to HTML-Break (nl2br).
- *
- * @param {String} text
- * @returns {String}
- */
- function _handlebarsNewlineToBreak(text) {
- return ('' + text).replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + '<br>' + '$2');
- }
-
- /**
- *
- */
- Handlebars.registerHelper('each_compare_list_field', function(source, compare, options) {
- var fieldName = options.hash.field;
- var newSource = [];
- if (source) {
- source.forEach(function(entry) {
- var values = entry;
- values['key'] = entry[fieldName];
- newSource.push(values);
- });
- }
-
- var newCompare = [];
- if (compare) {
- compare.forEach(function(entry) {
- var values = entry;
- values['key'] = entry[fieldName];
- newCompare.push(values);
- });
- }
- return _handlebarsEachCompared('key', newSource, newCompare, options);
- });
-
- /**
- *
- */
- Handlebars.registerHelper('each_compare_keys', function(source, compare, options) {
- var newSource = [];
- if (source) {
- var sourceFields = Object.keys(source);
- sourceFields.forEach(function(name) {
- var values = {};
- values['value'] = source[name];
- values['key'] = name;
- newSource.push(values);
- });
- }
-
- var newCompare = [];
- if (compare) {
- var compareFields = Object.keys(compare);
- compareFields.forEach(function(name) {
- var values = {};
- values['value'] = compare[name];
- values['key'] = name;
- newCompare.push(values);
- });
- }
- return _handlebarsEachCompared('key', newSource, newCompare, options);
- });
-
- /**
- *
- */
- Handlebars.registerHelper('gen_body', function(context, options) {
- let strBody = {};
- context.forEach(element => {
- element.field = element.field.replace("]", "");
- switch (element.type.toLowerCase()) {
- case "string":
- if (element.field.includes('[')) {
- if (strBody[element.field.split("[")[0]] === undefined) {
- strBody[element.field.split("[")[0]] = {};
- }
- strBody[element.field.split("[")[0]][element.field.split("[")[1]] = (element.defaultValue || "");
- break;
- }
- strBody[element.field] = (element.defaultValue || "");
- break;
- case "number":
- if (element.field.includes('[')) {
- if (strBody[element.field.split("[")[0]] === undefined) {
- strBody[element.field.split("[")[0]] = {};
- }
- strBody[element.field.split("[")[0]][element.field.split("[")[1]] = (element.defaultValue || 0);
- break;
- }
- strBody[element.field] = (element.defaultValue || 0);
- break;
- case "object":
- if (strBody[element.field] === undefined) {
- strBody[element.field] = {};
- }
- break;
- default:
- strBody[element.field] = null;
- }
- });
- return JSON.stringify(strBody, null, 4);
- });
-
- /**
- *
- */
- Handlebars.registerHelper('each_compare_field', function(source, compare, options) {
- return _handlebarsEachCompared('field', source, compare, options);
- });
-
- /**
- *
- */
- Handlebars.registerHelper('each_compare_title', function(source, compare, options) {
- return _handlebarsEachCompared('title', source, compare, options);
- });
-
- /**
- *
- */
- Handlebars.registerHelper('reformat', function(source, type){
- if (type == 'json')
- try {
- return JSON.stringify(JSON.parse(source.trim()),null, " ");
- } catch(e) {
-
- }
- return source
- });
-
- /**
- *
- */
- Handlebars.registerHelper('showDiff', function(source, compare, options) {
- var ds = '';
- if(source === compare) {
- ds = source;
- } else {
- if( ! source)
- return compare;
-
- if( ! compare)
- return source;
-
- var d = diffMatchPatch.diff_main(stripHtml(compare), stripHtml(source));
- diffMatchPatch.diff_cleanupSemantic(d);
- ds = diffMatchPatch.diff_prettyHtml(d);
- ds = ds.replace(/&para;/gm, '');
- }
- if(options === 'nl2br')
- ds = _handlebarsNewlineToBreak(ds);
-
- return ds;
- });
-
- /**
- *
- */
- function _handlebarsEachCompared(fieldname, source, compare, options)
- {
- var dataList = [];
- var index = 0;
- if(source) {
- source.forEach(function(sourceEntry) {
- var found = false;
- if (compare) {
- compare.forEach(function(compareEntry) {
- if(sourceEntry[fieldname] === compareEntry[fieldname]) {
- var data = {
- typeSame: true,
- source: sourceEntry,
- compare: compareEntry,
- index: index
- };
- dataList.push(data);
- found = true;
- index++;
- }
- });
- }
- if ( ! found) {
- var data = {
- typeIns: true,
- source: sourceEntry,
- index: index
- };
- dataList.push(data);
- index++;
- }
- });
- }
-
- if (compare) {
- compare.forEach(function(compareEntry) {
- var found = false;
- if (source) {
- source.forEach(function(sourceEntry) {
- if(sourceEntry[fieldname] === compareEntry[fieldname])
- found = true;
- });
- }
- if ( ! found) {
- var data = {
- typeDel: true,
- compare: compareEntry,
- index: index
- };
- dataList.push(data);
- index++;
- }
- });
- }
-
- var ret = '';
- var length = dataList.length;
- for (var index in dataList) {
- if(index == (length - 1))
- dataList[index]['_last'] = true;
- ret = ret + options.fn(dataList[index]);
- }
- return ret;
- }
-
- var diffMatchPatch = new DiffMatchPatch();
-
- /**
- * Overwrite Colors
- */
- DiffMatchPatch.prototype.diff_prettyHtml = function(diffs) {
- var html = [];
- var pattern_amp = /&/g;
- var pattern_lt = /</g;
- var pattern_gt = />/g;
- var pattern_para = /\n/g;
- for (var x = 0; x < diffs.length; x++) {
- var op = diffs[x][0]; // Operation (insert, delete, equal)
- var data = diffs[x][1]; // Text of change.
- var text = data.replace(pattern_amp, '&amp;').replace(pattern_lt, '&lt;')
- .replace(pattern_gt, '&gt;').replace(pattern_para, '&para;<br>');
- switch (op) {
- case DIFF_INSERT:
- html[x] = '<ins>' + text + '</ins>';
- break;
- case DIFF_DELETE:
- html[x] = '<del>' + text + '</del>';
- break;
- case DIFF_EQUAL:
- html[x] = '<span>' + text + '</span>';
- break;
- }
- }
- return html.join('');
- };
-
- /**
- * Fixes html after comparison (#506, #538, #616, #825)
- */
- function stripHtml(html){
- var div = document.createElement("div");
- div.innerHTML = html;
- return div.textContent || div.innerText || "";
- }
-
- // Exports
- return Handlebars;
-});
diff --git a/apidoc/utils/send_sample_request.js b/apidoc/utils/send_sample_request.js
deleted file mode 100644
index 4d695d14..00000000
--- a/apidoc/utils/send_sample_request.js
+++ /dev/null
@@ -1,272 +0,0 @@
-define([
- 'jquery',
- 'lodash',
- './utils/send_sample_request_utils'
-], function($, _, utils) {
-
- var initDynamic = function() {
- // Button send
- $(".sample-request-send").off("click");
- $(".sample-request-send").on("click", function(e) {
- e.preventDefault();
- var $root = $(this).parents("article");
- var group = $root.data("group");
- var name = $root.data("name");
- var version = $root.data("version");
- sendSampleRequest(group, name, version, $(this).data("sample-request-type"));
- });
-
- // Button clear
- $(".sample-request-clear").off("click");
- $(".sample-request-clear").on("click", function(e) {
- e.preventDefault();
- var $root = $(this).parents("article");
- var group = $root.data("group");
- var name = $root.data("name");
- var version = $root.data("version");
- clearSampleRequest(group, name, version);
- });
- }; // initDynamic
-
- function sendSampleRequest(group, name, version, type)
- {
- var $root = $('article[data-group="' + group + '"][data-name="' + name + '"][data-version="' + version + '"]');
-
- // Optional header
- var header = {};
- $root.find(".sample-request-header:checked").each(function(i, element) {
- var group = $(element).data("sample-request-header-group-id");
- $root.find("[data-sample-request-header-group=\"" + group + "\"]").each(function(i, element) {
- var key = $(element).data("sample-request-header-name");
- var value = element.value;
- if (typeof element.optional === 'undefined') {
- element.optional = true;
- }
- if ( ! element.optional && element.defaultValue !== '') {
- value = element.defaultValue;
- }
- header[key] = value;
- });
- });
-
-
- // create JSON dictionary of parameters
- var param = {};
- var paramType = {};
- var bodyFormData = new FormData();
- var bodyJson = '';
- $root.find(".sample-request-param:checked").each(function(i, element) {
- var group = $(element).data("sample-request-param-group-id");
- var contentType = $(element).nextAll('.sample-header-content-type-switch').first().val();
- if (contentType == "body-json"){
- $root.find("[data-sample-request-body-group=\"" + group + "\"]").not(function(){
- return $(this).val() == "" && $(this).is("[data-sample-request-param-optional='true']");
- }).each(function(i, element) {
- if (isJson(element.value)){
- header['Content-Type'] = 'application/json';
- bodyJson = element.value;
- }
- });
- }else {
- $root.find("[data-sample-request-param-group=\"" + group + "\"]").not(function(){
- return $(this).val() == "" && $(this).is("[data-sample-request-param-optional='true']");
- }).each(function(i, element) {
- var key = $(element).data("sample-request-param-name");
- var value = element.value;
- if ( ! element.optional && element.defaultValue !== '') {
- value = element.defaultValue;
- }
- if (contentType == "body-form-data"){
- header['Content-Type'] = 'multipart/form-data'
- if (element.type == "file") {
- value = element.files[0];
- }
- bodyFormData.append(key,value);
- }else {
- param[key] = value;
- paramType[key] = $(element).next().text();
- }
- });
- }
- });
-
- // grab user-inputted URL
- var url = $root.find(".sample-request-url").val();
-
- //Convert {param} form to :param
- url = utils.convertPathParams(url);
-
- // Insert url parameter
- var pattern = pathToRegexp(url, null);
- var matches = pattern.exec(url);
- for (var i = 1; i < matches.length; i++) {
- var key = matches[i].substr(1);
- var optional = false
- if (key[key.length - 1] === '?') {
- optional = true;
- key = key.substr(0, key.length - 1);
- }
- if (param[key] !== undefined) {
- url = url.replace(matches[i], encodeURIComponent(param[key]));
-
- // remove URL parameters from list
- delete param[key];
- } else if (optional) {
- // if parameter is optional denoted by ending '?' in param (:param?)
- // and no parameter is given, replace parameter with empty string instead
- url = url.replace(matches[i], '');
- delete param[key];
- }
- } // for
-
- //handle nested objects and parsing fields
- param = utils.handleNestedAndParsingFields(param, paramType);
-
- //add url search parameter
- if (header['Content-Type'] == 'application/json') {
- if (bodyJson) {
- // bodyJson is set to value if request body: 'body/json' was selected and manual json was input
- // in this case, use the given bodyJson and add other params in query string
- url = url + encodeSearchParams(param);
- param = bodyJson;
- } else {
- // bodyJson not set, but Content-Type: application/json header was set. In this case, send parameters
- // as JSON body. First, try parsing fields of object with given paramType definition so that the json
- // is valid against the parameter spec (e.g. Boolean params are boolean instead of strings in final json)
- param = utils.tryParsingWithTypes(param, paramType);
- param = JSON.stringify(param);
- }
- }else if (header['Content-Type'] == 'multipart/form-data'){
- url = url + encodeSearchParams(param);
- param = bodyFormData;
- }
-
- $root.find(".sample-request-response").fadeTo(250, 1);
- $root.find(".sample-request-response-json").html("Loading...");
- refreshScrollSpy();
-
- // send AJAX request, catch success or error callback
- var ajaxRequest = {
- url : url,
- headers : header,
- data : param,
- type : type.toUpperCase(),
- success : displaySuccess,
- error : displayError
- };
-
- if(header['Content-Type'] == 'multipart/form-data'){
- delete ajaxRequest.headers['Content-Type'];
- ajaxRequest.contentType=false;
- ajaxRequest.processData=false;
- }
- $.ajax(ajaxRequest);
-
-
- function displaySuccess(data, status, jqXHR) {
- var jsonResponse;
- try {
- jsonResponse = JSON.parse(jqXHR.responseText);
- jsonResponse = JSON.stringify(jsonResponse, null, 4);
- } catch (e) {
- jsonResponse = jqXHR.responseText;
- }
- $root.find(".sample-request-response-json").text(jsonResponse);
- refreshScrollSpy();
- };
-
- function displayError(jqXHR, textStatus, error) {
- var message = "Error " + jqXHR.status + ": " + error;
- var jsonResponse;
- try {
- jsonResponse = JSON.parse(jqXHR.responseText);
- jsonResponse = JSON.stringify(jsonResponse, null, 4);
- } catch (e) {
- jsonResponse = jqXHR.responseText;
- }
-
- if (jsonResponse)
- message += "\n" + jsonResponse;
-
- // flicker on previous error to make clear that there is a new response
- if($root.find(".sample-request-response").is(":visible"))
- $root.find(".sample-request-response").fadeTo(1, 0.1);
-
- $root.find(".sample-request-response").fadeTo(250, 1);
- $root.find(".sample-request-response-json").text(message);
- refreshScrollSpy();
- };
- }
-
- function clearSampleRequest(group, name, version)
- {
- var $root = $('article[data-group="' + group + '"][data-name="' + name + '"][data-version="' + version + '"]');
-
- // hide sample response
- $root.find(".sample-request-response-json").html("");
- $root.find(".sample-request-response").hide();
-
- // reset value of parameters
- $root.find(".sample-request-param").each(function(i, element) {
- element.value = "";
- });
-
- // restore default URL
- var $urlElement = $root.find(".sample-request-url");
- $urlElement.val($urlElement.prop("defaultValue"));
-
- refreshScrollSpy();
- }
-
- function refreshScrollSpy()
- {
- $('[data-spy="scroll"]').each(function () {
- $(this).scrollspy("refresh");
- });
- }
-
- function escapeHtml(str) {
- var div = document.createElement("div");
- div.appendChild(document.createTextNode(str));
- return div.innerHTML;
- }
-
-
- /**
- * is Json
- */
- function isJson(str) {
- if (typeof str == 'string') {
- try {
- var obj=JSON.parse(str);
- if(typeof obj == 'object' && obj ){
- return true;
- }else{
- return false;
- }
- } catch(e) {
- return false;
- }
- }
- }
-
- /**
- * encode Search Params
- */
- function encodeSearchParams(obj) {
- const params = [];
- Object.keys(obj).forEach((key) => {
- let value = obj[key];
- params.push([key, encodeURIComponent(value)].join('='));
- })
- return params.length === 0 ? '' : '?' + params.join('&');
- }
-
- /**
- * Exports.
- */
- return {
- initDynamic: initDynamic
- };
-
-});
diff --git a/apidoc/utils/send_sample_request_utils.js b/apidoc/utils/send_sample_request_utils.js
deleted file mode 100644
index fbda1ffd..00000000
--- a/apidoc/utils/send_sample_request_utils.js
+++ /dev/null
@@ -1,97 +0,0 @@
-//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
- };
-});