@granito/ngx-hal-client
Version:
A HAL client to be used in Angular projects
31 lines • 4.01 kB
JavaScript
import { catchError, map } from 'rxjs';
import { Collection, HalBase } from './internal';
/**
* This class provides a way to execute operations on HAL resources
* without reading them first. Accessors are obtained either by following
* resource links or by getting the root entry point for the API.
*/
export class Accessor extends HalBase {
/**
* Read the resource identified by `self` link.
*
* @param type the resource type
* @returns an observable of the resource instance
*/
read(type) {
return this._client.get(this.self).pipe(map(obj => this.instanceOf(type, obj)), catchError(this.handleError));
}
/**
* Read the resource collection identified by `self` link.
*
* @param type the collection element type
* @returns an observable of the collection instance
*/
readCollection(type) {
return this._client.get(this.self).pipe(map(obj => new Collection(type, {
...obj,
_client: this._client
})), catchError(this.handleError));
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2FjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFZLE1BQU0sWUFBWSxDQUFDO0FBRTNEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sUUFBUyxTQUFRLE9BQU87SUFDakM7Ozs7O09BS0c7SUFDSCxJQUFJLENBQXFCLElBQWE7UUFDbEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNuQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUN0QyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUMvQixDQUFDO0lBQ04sQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFxQixJQUFhO1FBRTVDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDbkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQzVCLEdBQUcsR0FBRztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN6QixDQUFDLENBQUMsRUFDSCxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUMvQixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uLCBIYWxCYXNlLCBSZXNvdXJjZSB9IGZyb20gJy4vaW50ZXJuYWwnO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSB3YXkgdG8gZXhlY3V0ZSBvcGVyYXRpb25zIG9uIEhBTCByZXNvdXJjZXNcbiAqIHdpdGhvdXQgcmVhZGluZyB0aGVtIGZpcnN0LiBBY2Nlc3NvcnMgYXJlIG9idGFpbmVkIGVpdGhlciBieSBmb2xsb3dpbmdcbiAqIHJlc291cmNlIGxpbmtzIG9yIGJ5IGdldHRpbmcgdGhlIHJvb3QgZW50cnkgcG9pbnQgZm9yIHRoZSBBUEkuXG4gKi9cbmV4cG9ydCBjbGFzcyBBY2Nlc3NvciBleHRlbmRzIEhhbEJhc2Uge1xuICAgIC8qKlxuICAgICAqIFJlYWQgdGhlIHJlc291cmNlIGlkZW50aWZpZWQgYnkgYHNlbGZgIGxpbmsuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSB0aGUgcmVzb3VyY2UgdHlwZVxuICAgICAqIEByZXR1cm5zIGFuIG9ic2VydmFibGUgb2YgdGhlIHJlc291cmNlIGluc3RhbmNlXG4gICAgICovXG4gICAgcmVhZDxUIGV4dGVuZHMgUmVzb3VyY2U+KHR5cGU6IFR5cGU8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsaWVudC5nZXQodGhpcy5zZWxmKS5waXBlKFxuICAgICAgICAgICAgbWFwKG9iaiA9PiB0aGlzLmluc3RhbmNlT2YodHlwZSwgb2JqKSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhZCB0aGUgcmVzb3VyY2UgY29sbGVjdGlvbiBpZGVudGlmaWVkIGJ5IGBzZWxmYCBsaW5rLlxuICAgICAqXG4gICAgICogQHBhcmFtIHR5cGUgdGhlIGNvbGxlY3Rpb24gZWxlbWVudCB0eXBlXG4gICAgICogQHJldHVybnMgYW4gb2JzZXJ2YWJsZSBvZiB0aGUgY29sbGVjdGlvbiBpbnN0YW5jZVxuICAgICAqL1xuICAgIHJlYWRDb2xsZWN0aW9uPFQgZXh0ZW5kcyBSZXNvdXJjZT4odHlwZTogVHlwZTxUPik6XG4gICAgICAgIE9ic2VydmFibGU8Q29sbGVjdGlvbjxUPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2xpZW50LmdldCh0aGlzLnNlbGYpLnBpcGUoXG4gICAgICAgICAgICBtYXAob2JqID0+IG5ldyBDb2xsZWN0aW9uKHR5cGUsIHtcbiAgICAgICAgICAgICAgICAuLi5vYmosXG4gICAgICAgICAgICAgICAgIF9jbGllbnQ6IHRoaXMuX2NsaWVudFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==