Obelisk Client
A client library written in Typescript to interact with Obelisk. Link back to the full documentation here.
Prerequisites
This library makes use of RxJS (Reactive Extensions for JavaScript).
RxJS comes as a peer dependency.
Overview
The client has a clear purpose:
- Make it easier to do follow up requests on Temporal Pages (see IoT-stack documentation).
- Do the heavy lifting on authentication and authorization
The client help with authorization to the Obelisk keycloak authorization Server. This should handle:
- Logging in to a supported Identity Provider (eg. Google)
- Getting the access token
- Getting the RPT token
- Refreshing tokens when needed
- Login/logout support
With the client you create Endpoints. These endpoints can be acted on with methods like execute()
or get()
. An endpoint takes an API uri as argument. This means that the HTTP REST api is as important to you, as this API.
Installation
npm install obelisk-client rxjs --save
Usage
To start you need to create an IotClient instance with a proper options object.
import { IotClient } from 'obelisk-client';
import { ClientOptions } from 'obelisk-client/lib/interfaces';
const options: ClientOptions = {
host: 'https://obelisk.ilabt.imec.be',
apiVersion: 'v1',
realm: 'idlab-iot',
clientId: 'my-client'
}
let client = new IotClient(options);
Now init the client to connect to the Obelisk back-end and start using it. init() returns an Observable that copmletes once initialization is over.
this.client.init().subscribe({
next: _ => {
}
})
Angular
This client also exposes an angular Module and Service that you can use.
To include it in you main AppModule, do this:
import { ObeliskClientModule, ObeliskService } from 'obelisk/ngx';
const options: ClientOptions = {
host: 'https://obelisk.ilabt.imec.be',
apiVersion: 'v1',
realm: 'idlab-iot',
clientId: 'my-client'
}
@NgModule({
declarations: [...],
imports: [
...,
ObeliskClientModule.forRoot(options)
],
providers: [
ObeliskService,
...
],
bootstrap: [AppComponent]
})
export class AppModule { }
Now you can inject ObeliskService and get an already initialized client from it any time.
If you are logged in it will handle all the tokens in the headers for you.