g8-js-sdk
v1.16.0
Published
Ambulance G8 Javascript SDK
Downloads
37
Readme
g8-js-sdk
Description
This module provides an Ambulance G8 API implementation.
Install
$ npm install g8-js-sdk --save
Features
- Logins
- Passwords
- Users
- UsersDevicesPositions
Documentation
- logins.create()
- logins.update()
- logins.remove()
- passwords.create()
- users.create()
- usersDevicesPositions.create()
- searchesAmbulance.create()
Examples
Create your g8-js-sdk sdk by requiring it, making it's initial configuration and instantiating it.
From import
import sdk from 'g8-js-sdk';
From require
const sdk = require('g8-js-sdk');
Instantiate it
import SDK from 'g8-js-sdk';
// Create your instance and export it
const sdk = SDK.create();
Refresh token
Bellow, it's an example of a react-native custom refresh token implementation. Obviously, you have to adapt it with your own logic.
import DeviceInfo from 'react-native-device-info';
import {User, Authentication} from './storage';
import SDK from 'g8-js-sdk';
const sdk = SDK.create();
sdk.common.refreshToken((error) => {
if (!error.response && !error.response.data && !error.response.data.name) {
console.log('[lib/sdk] - unexpected error.', error);
return Promise.reject({error: {name: 'Oups...', message: `The request could not succeed.`}});
}
if (error.response.data.name === 'NotAuthenticated' && error.response.data.message === 'TOKEN_EXPIRED') {
console.info('[lib/sdk] - token expired received, start refresh token process.');
return Promise.all([
User.get(),
Authentication.get(),
])
.then(([user, authentication]) => {
sdk.common.deleteCommonHeaders(['authorization']);
return sdk.logins.update({id: user.id}, {name: 'test'}, {
'x-refresh-token': authentication.refresh_token,
'x-device-uid': DeviceInfo.getUniqueID(),
})
.then((response) => {
sdk.common.addCommonHeaders({authorization: `Bearer ${response.token}`});
console.info('[lib/sdk] - new refresh token retrieved.');
return Authentication.save({token: `Bearer ${response.token}`, refresh_token: response.refresh_token})
.then(() => {
console.info('[lib/sdk] - retry same request with new access token.');
error.config.headers.authorization = `Bearer ${response.token}`;
console.log('[lib/sdk] - retry conf', error.config);
return sdk.common.retry(error.config);
});
});
})
.catch((e) => {
console.log('[lib/sdk] - error during refresh token process.', e);
if (!e.status) {
console.log('[lib/sdk] - unexpected error.', e);
return Promise.reject({error: {name: 'Oups...', message: `The request could not succeed.`}});
}
return Promise.reject(e);
});
}
console.log('[lib/sdk] - dispatch error to the next catch.', error);
return Promise.reject(error);
});
export default sdk;
Scripts
Run using npm run command.
clean - remove coverage data, Jest cache and transpiled files,
lint - lint source files and tests,
typecheck - check type annotations,
test - lint, typecheck and run tests with coverage,
test-only - run tests with coverage,
test:watch - interactive watch mode to automatically re-run tests,
build - compile source files,
build:watch - interactive watch mode, compile sources on change.
License
MIT © Dimitri DO BAIRRO