@mgrcto/angular-odata-v401
Version:
Odata Library for Angular made with Angular CLI
47 lines • 6.39 kB
JavaScript
export class ODataUtils {
static convertObjectToString(obj) {
const properties = [];
for (const prop in obj) {
if (obj.hasOwnProperty(prop) && obj[prop] !== undefined) {
const value = ODataUtils.quoteValue(obj[prop]);
properties.push(`${prop}=${value}`);
}
}
return properties.join(', ');
}
static quoteValue(value) {
// check if GUID (UUID) type
if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value)) {
return value;
}
// check if string
if (typeof value === 'string') {
const escaped = value.replace(/'/g, '\'\'');
return `'${escaped}'`;
}
// check if boolean or number
if (typeof value === 'boolean' || typeof value === 'number') {
return `${value}`;
}
const parts = [];
Object.getOwnPropertyNames(value).forEach((propertyName) => {
const propertyValue = value[propertyName];
parts.push(`${propertyName}=${ODataUtils.quoteValue(propertyValue)}`);
});
return parts.length > 0 ? parts.join(', ') : `${value}`;
}
static tryParseInt(input) {
if (input !== null && !isNaN(input)) {
const parsed = parseInt(input, 10);
return {
valid: !isNaN(parsed),
value: parsed
};
}
return {
valid: false,
value: NaN
};
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhck9EYXRhVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhLXY0MDEvc3JjL2xpYi9vZGF0YS9hbmd1bGFyT0RhdGFVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUNaLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxHQUFRO1FBQ3hDLE1BQU0sVUFBVSxHQUFhLEVBQUUsQ0FBQztRQUVoQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRTtZQUNwQixJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDckQsTUFBTSxLQUFLLEdBQVEsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFFcEQsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZDO1NBQ0o7UUFDRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBc0M7UUFDM0QsNEJBQTRCO1FBQzVCLElBQUksaUVBQWlFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQy9FLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsa0JBQWtCO1FBQ2xCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzNCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVDLE9BQU8sSUFBSSxPQUFPLEdBQUcsQ0FBQztTQUN6QjtRQUVELDZCQUE2QjtRQUM3QixJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDekQsT0FBTyxHQUFHLEtBQUssRUFBRSxDQUFDO1NBQ3JCO1FBRUQsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFvQixFQUFFLEVBQUU7WUFDL0QsTUFBTSxhQUFhLEdBQVEsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9DLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQVc7UUFDakMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pDLE1BQU0sTUFBTSxHQUFXLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0MsT0FBTztnQkFDSCxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUNyQixLQUFLLEVBQUUsTUFBTTthQUNoQixDQUFDO1NBQ0w7UUFFRCxPQUFPO1lBQ0gsS0FBSyxFQUFFLEtBQUs7WUFDWixLQUFLLEVBQUUsR0FBRztTQUNiLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgT0RhdGFVdGlscyB7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNvbnZlcnRPYmplY3RUb1N0cmluZyhvYmo6IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgcHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIGluIG9iaikge1xyXG4gICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHByb3ApICYmIG9ialtwcm9wXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZTogYW55ID0gT0RhdGFVdGlscy5xdW90ZVZhbHVlKG9ialtwcm9wXSk7XHJcblxyXG4gICAgICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKGAke3Byb3B9PSR7dmFsdWV9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHByb3BlcnRpZXMuam9pbignLCAnKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHF1b3RlVmFsdWUodmFsdWU6IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4gfCBhbnkpOiBzdHJpbmcge1xyXG4gICAgICAgIC8vIGNoZWNrIGlmIEdVSUQgKFVVSUQpIHR5cGVcclxuICAgICAgICBpZiAoL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kL2kudGVzdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gY2hlY2sgaWYgc3RyaW5nXHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgY29uc3QgZXNjYXBlZCA9IHZhbHVlLnJlcGxhY2UoLycvZywgJ1xcJ1xcJycpO1xyXG4gICAgICAgICAgICByZXR1cm4gYCcke2VzY2FwZWR9J2A7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBjaGVjayBpZiBib29sZWFuIG9yIG51bWJlclxyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModmFsdWUpLmZvckVhY2goKHByb3BlcnR5TmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5VmFsdWU6IGFueSA9IHZhbHVlW3Byb3BlcnR5TmFtZV07XHJcbiAgICAgICAgICAgIHBhcnRzLnB1c2goYCR7cHJvcGVydHlOYW1lfT0ke09EYXRhVXRpbHMucXVvdGVWYWx1ZShwcm9wZXJ0eVZhbHVlKX1gKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDAgPyBwYXJ0cy5qb2luKCcsICcpIDogYCR7dmFsdWV9YDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHRyeVBhcnNlSW50KGlucHV0PzogYW55KTogeyB2YWxpZDogYm9vbGVhbiwgdmFsdWU6IG51bWJlciB9IHtcclxuICAgICAgICBpZiAoaW5wdXQgIT09IG51bGwgJiYgIWlzTmFOKGlucHV0KSkge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJzZWQ6IG51bWJlciA9IHBhcnNlSW50KGlucHV0LCAxMCk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZDogIWlzTmFOKHBhcnNlZCksXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogcGFyc2VkXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB2YWxpZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHZhbHVlOiBOYU5cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==