MCPcopy Index your code
hub / github.com/scality/cloudserver / xmlContainsElem

Function xmlContainsElem

lib/api/apiUtils/bucket/bucketWebsite.js:58–100  ·  view source on GitHub ↗

Check if parsed xml element contains a specified child element * @param {array} parent - represents xml element to check for child element * @param {(string|string[])} requiredElem - name of child element(s) * @param {object} [options] - specify additional options * @param {boolean} [isList] - indic

(parent, requiredElem, options)

Source from the content-addressed store, hash-verified

56* @return {boolean} true / false - if parsed xml element contains child
57*/
58function xmlContainsElem(parent, requiredElem, options) {
59 // Non-top level xml is parsed into object in the following manner.
60
61 // Example: <Parent><requiredElem>value</requiredElem>
62 // <anotherElem>value2</anotherElem></Parent>
63 // Result: { Parent: [{ requiredElem: ["value"],
64 // anotherElem: ["value2"] }] }
65
66 // Example for xml list:
67 // <ParentList>
68 // <requiredElem>value</requiredElem>
69 // <requiredElem>value</requiredElem>
70 // <requiredElem>value</requiredElem>
71 // </ParentList>
72 // Result: { ParentList: [{ requiredElem: ['value', 'value', 'value'] }] }
73
74 const isList = options ? options.isList : false;
75 const checkForAll = options ? options.checkForAll : false;
76 // true by default, validateParent only designated as false when
77 // parent was validated in previous check
78 const validateParent = (options && options.validateParent !== undefined) ?
79 options.validateParent : true;
80
81 if (validateParent && !_isValidElem(parent)) {
82 return false;
83 }
84 if (Array.isArray(requiredElem)) {
85 if (checkForAll) {
86 return requiredElem.every(elem => _isValidElem(parent[0][elem]));
87 }
88 return requiredElem.some(elem => _isValidElem(parent[0][elem]));
89 }
90 if (isList) {
91 if (!Array.isArray(parent[0][requiredElem]) ||
92 parent[0][requiredElem].length === 0) {
93 return false;
94 }
95 } else {
96 return _isValidElem(parent[0][requiredElem]);
97 }
98
99 return true;
100}
101
102
103/** Validate XML, returning an error if any part is not valid

Callers 2

Calls 1

_isValidElemFunction · 0.85

Tested by

no test coverage detected