angular-odata
Version:
Client side OData typescript library for Angular
66 lines • 7.83 kB
JavaScript
import { DEFAULT_VERSION, MAX_AGE, VERSION_2_0, VERSION_3_0, VERSION_4_0, } from '../constants';
import { ODataHelper } from '../helper';
export class ODataResponseOptions {
version;
streaming;
// OData
metadata;
ieee754Compatible;
// Location
location;
// Cache
cacheability;
maxAge;
constructor(config) {
this.version = config.version || DEFAULT_VERSION;
}
get helper() {
return ODataHelper[this.version];
}
clone() {
return new ODataResponseOptions(this);
}
setFeatures(features) {
features.split(';').forEach((o) => {
let [k, v] = o.split('=');
switch (k.trim()) {
case 'odata.metadata':
this.metadata = v;
break;
case 'odata.streaming':
this.streaming = v == 'true';
break;
case 'IEEE754Compatible':
this.ieee754Compatible = v == 'true';
break;
}
});
}
setVersion(version) {
const value = version.replace(/\;/g, '').trim();
if ([VERSION_2_0, VERSION_3_0, VERSION_4_0].indexOf(value) !== -1)
this.version = value;
}
setLocation(location) {
// TODO: resolve location?
this.location = location;
}
setPreferenceApplied(preference) {
preference.split(',').forEach((prefer) => {
// TODO: resolve preference
});
}
setCache(cacheControl) {
cacheControl.split(',').forEach((directive) => {
if (directive.startsWith(MAX_AGE)) {
let maxAge = Number(directive.split('=')[1]);
if (!Number.isNaN(maxAge))
this.maxAge = maxAge;
}
if (['public', 'private', 'no-cache', 'no-store'].indexOf(directive) !== -1) {
this.cacheability = directive;
}
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLE9BQU8sRUFDUCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFdBQVcsR0FDWixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsT0FBTyxDQUFlO0lBQ3RCLFNBQVMsQ0FBVztJQUNwQixRQUFRO0lBQ1IsUUFBUSxDQUFxQjtJQUM3QixpQkFBaUIsQ0FBVztJQUM1QixXQUFXO0lBQ1gsUUFBUSxDQUFVO0lBQ2xCLFFBQVE7SUFDUixZQUFZLENBQWtEO0lBQzlELE1BQU0sQ0FBVTtJQUVoQixZQUFZLE1BQXFCO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWdCO1FBQzFCLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssZ0JBQWdCO29CQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQXNCLENBQUM7b0JBQ3ZDLE1BQU07Z0JBQ1IsS0FBSyxpQkFBaUI7b0JBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQztvQkFDN0IsTUFBTTtnQkFDUixLQUFLLG1CQUFtQjtvQkFDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxNQUFNLENBQUM7b0JBQ3JDLE1BQU07WUFDVixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWU7UUFDeEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQXFCLENBQUM7SUFDekMsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQjtRQUMxQiwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVELG9CQUFvQixDQUFDLFVBQWtCO1FBQ3JDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdkMsMkJBQTJCO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxZQUFvQjtRQUMzQixZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQzVDLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7b0JBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDbEQsQ0FBQztZQUNELElBQ0UsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ3ZFLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUE4QixDQUFDO1lBQ3JELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhY2hlQ2FjaGVhYmlsaXR5LFxuICBPRGF0YU1ldGFkYXRhVHlwZSxcbiAgT0RhdGFWZXJzaW9uLFxuICBQYXJzZXJPcHRpb25zLFxuICBSZXNwb25zZU9wdGlvbnMsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIERFRkFVTFRfVkVSU0lPTixcbiAgTUFYX0FHRSxcbiAgVkVSU0lPTl8yXzAsXG4gIFZFUlNJT05fM18wLFxuICBWRVJTSU9OXzRfMCxcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuaW1wb3J0IHsgT0RhdGFIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXInO1xuXG5leHBvcnQgY2xhc3MgT0RhdGFSZXNwb25zZU9wdGlvbnMgaW1wbGVtZW50cyBSZXNwb25zZU9wdGlvbnMge1xuICB2ZXJzaW9uOiBPRGF0YVZlcnNpb247XG4gIHN0cmVhbWluZz86IGJvb2xlYW47XG4gIC8vIE9EYXRhXG4gIG1ldGFkYXRhPzogT0RhdGFNZXRhZGF0YVR5cGU7XG4gIGllZWU3NTRDb21wYXRpYmxlPzogYm9vbGVhbjtcbiAgLy8gTG9jYXRpb25cbiAgbG9jYXRpb24/OiBzdHJpbmc7XG4gIC8vIENhY2hlXG4gIGNhY2hlYWJpbGl0eT86ICdwdWJsaWMnIHwgJ3ByaXZhdGUnIHwgJ25vLWNhY2hlJyB8ICduby1zdG9yZSc7XG4gIG1heEFnZT86IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFBhcnNlck9wdGlvbnMpIHtcbiAgICB0aGlzLnZlcnNpb24gPSBjb25maWcudmVyc2lvbiB8fCBERUZBVUxUX1ZFUlNJT047XG4gIH1cblxuICBnZXQgaGVscGVyKCkge1xuICAgIHJldHVybiBPRGF0YUhlbHBlclt0aGlzLnZlcnNpb25dO1xuICB9XG5cbiAgY2xvbmUoKSB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVJlc3BvbnNlT3B0aW9ucyh0aGlzKTtcbiAgfVxuXG4gIHNldEZlYXR1cmVzKGZlYXR1cmVzOiBzdHJpbmcpIHtcbiAgICBmZWF0dXJlcy5zcGxpdCgnOycpLmZvckVhY2goKG8pID0+IHtcbiAgICAgIGxldCBbaywgdl0gPSBvLnNwbGl0KCc9Jyk7XG4gICAgICBzd2l0Y2ggKGsudHJpbSgpKSB7XG4gICAgICAgIGNhc2UgJ29kYXRhLm1ldGFkYXRhJzpcbiAgICAgICAgICB0aGlzLm1ldGFkYXRhID0gdiBhcyBPRGF0YU1ldGFkYXRhVHlwZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2RhdGEuc3RyZWFtaW5nJzpcbiAgICAgICAgICB0aGlzLnN0cmVhbWluZyA9IHYgPT0gJ3RydWUnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdJRUVFNzU0Q29tcGF0aWJsZSc6XG4gICAgICAgICAgdGhpcy5pZWVlNzU0Q29tcGF0aWJsZSA9IHYgPT0gJ3RydWUnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0VmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHZlcnNpb24ucmVwbGFjZSgvXFw7L2csICcnKS50cmltKCk7XG4gICAgaWYgKFtWRVJTSU9OXzJfMCwgVkVSU0lPTl8zXzAsIFZFUlNJT05fNF8wXS5pbmRleE9mKHZhbHVlKSAhPT0gLTEpXG4gICAgICB0aGlzLnZlcnNpb24gPSB2YWx1ZSBhcyBPRGF0YVZlcnNpb247XG4gIH1cblxuICBzZXRMb2NhdGlvbihsb2NhdGlvbjogc3RyaW5nKSB7XG4gICAgLy8gVE9ETzogcmVzb2x2ZSBsb2NhdGlvbj9cbiAgICB0aGlzLmxvY2F0aW9uID0gbG9jYXRpb247XG4gIH1cblxuICBzZXRQcmVmZXJlbmNlQXBwbGllZChwcmVmZXJlbmNlOiBzdHJpbmcpIHtcbiAgICBwcmVmZXJlbmNlLnNwbGl0KCcsJykuZm9yRWFjaCgocHJlZmVyKSA9PiB7XG4gICAgICAvLyBUT0RPOiByZXNvbHZlIHByZWZlcmVuY2VcbiAgICB9KTtcbiAgfVxuXG4gIHNldENhY2hlKGNhY2hlQ29udHJvbDogc3RyaW5nKSB7XG4gICAgY2FjaGVDb250cm9sLnNwbGl0KCcsJykuZm9yRWFjaCgoZGlyZWN0aXZlKSA9PiB7XG4gICAgICBpZiAoZGlyZWN0aXZlLnN0YXJ0c1dpdGgoTUFYX0FHRSkpIHtcbiAgICAgICAgbGV0IG1heEFnZSA9IE51bWJlcihkaXJlY3RpdmUuc3BsaXQoJz0nKVsxXSk7XG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG1heEFnZSkpIHRoaXMubWF4QWdlID0gbWF4QWdlO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBbJ3B1YmxpYycsICdwcml2YXRlJywgJ25vLWNhY2hlJywgJ25vLXN0b3JlJ10uaW5kZXhPZihkaXJlY3RpdmUpICE9PSAtMVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY2FjaGVhYmlsaXR5ID0gZGlyZWN0aXZlIGFzIENhY2hlQ2FjaGVhYmlsaXR5O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=