https://github.com/remscodes/ngx-renault-api-client
Unofficial Angular http client
https://github.com/remscodes/ngx-renault-api-client
angular http-client renault-api
Last synced: 29 days ago
JSON representation
Unofficial Angular http client
- Host: GitHub
- URL: https://github.com/remscodes/ngx-renault-api-client
- Owner: remscodes
- License: mit
- Created: 2023-11-17T21:21:04.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-09T21:01:38.000Z (almost 2 years ago)
- Last Synced: 2025-09-26T16:24:20.116Z (8 months ago)
- Topics: angular, http-client, renault-api
- Language: TypeScript
- Homepage:
- Size: 1.33 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Angular Renault API Client
Angular http client using Renault API
[](https://github.com/remscodes/ngx-renault-api-client/actions/workflows/npm-ci.yml)
[](https://www.npmjs.org/package/@remscodes/ngx-renault-api-client)
[](https://bundlephobia.com/package/@remscodes/ngx-renault-api-client)
[](LICENSE)
## Installation
```shell
npm install @remscodes/ngx-renault-api-client
```
## Usage
```ts
// app.config.ts
import { ApplicationConfig } from '@angular/core';
import { provideRenaultClient } from '@remscodes/ngx-renault-api-client';
export const appConfig: ApplicationConfig = {
providers: [provideRenaultClient()],
};
```
```ts
// app.component.ts
import { Component, DestroyRef, inject } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { NgxGigyaClient, NgxKamereonClient, NgxRenaultSession } from '@remscodes/ngx-renault-api-client';
import { concatMap } from 'rxjs';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrl: './app.component.css',
standalone: true,
imports: [],
})
export class AppComponent {
private gigya = inject(NgxGigyaClient);
private kamereon = inject(NgxKamereonClient);
private session = inject(NgxRenaultSession);
private destroyRef = inject(DestroyRef);
// (1) Login to gigya service
login(): void {
// will store automatically `gigyaToken` into session.
this.gigya.login('myLogin', 'myPassword')
.pipe(
// will store automatically `personId` into session
concatMap(() => this.gigya.getAccountInfo()),
// will store automatically `token` into session
concatMap(() => this.gigya.getJwt()),
takeUntilDestroyed(this.destroyRef),
)
.subscribe({
next: () => console.info('Logged in.'),
});
}
// (2) Get user's accounts
getAccounts(): void {
this.kamereon.getPerson()
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe({
next: ({ accounts }) => {
// Select the accountId you want
this.session.accountId = accounts[0].accountId;
},
});
}
// (3) Get account's vehicles
getVehicles(): void {
this.kamereon.getAccountVehicles()
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe({
next: ({ vehicleLinks }) => {
// Select the vin you want
this.session.vin = vehicleLinks[0].vin;
},
});
}
// (4) Get current battery status
getBatteryStatus(): void {
this.kamereon.readBatteryStatus()
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe({
next: (batteryStatus) => {
// handle battery status
},
});
}
// (5) Invalidate the gigya token (stored in session)
logout(): void {
this.gigya.logout()
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe({
next: () => console.info('Logged out.'),
});
}
}
```
### Examples
- [With standalone component as root](./projects/ngx-renault-api-client-demo)
- [With module app as root](./projects/ngx-renault-api-client-demo-legacy)
## Disclaimer
This project is not affiliated with, endorsed by, or connected to Renault. I accept no responsibility for any consequences, intentional or accidental, resulting from interaction with the Renault's API using this project.
## Credit
Resources API based on [@remscodes/renault-api](https://github.com/remscodes/renault-api#credit).
## License
[MIT](LICENSE) © Rémy Abitbol.