Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/webeetle/core-sdk
bee sdk
https://github.com/webeetle/core-sdk
Last synced: about 2 months ago
JSON representation
bee sdk
- Host: GitHub
- URL: https://github.com/webeetle/core-sdk
- Owner: webeetle
- Created: 2019-11-23T08:24:02.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-03T01:29:51.000Z (about 2 years ago)
- Last Synced: 2023-03-02T20:56:26.116Z (almost 2 years ago)
- Language: JavaScript
- Size: 1020 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Core SDK
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](http://standardjs.com/) [![Build Status](https://travis-ci.com/webeetle/core-sdk.svg?branch=master)](https://travis-ci.com/webeetle/core-sdk) [![Greenkeeper badge](https://badges.greenkeeper.io/webeetle/core-sdk.svg)](https://greenkeeper.io/)
Core SDK is a small library that help you to build your own SDK in your Javascript Application.
## Create your own SDK
Start to create your SDK is really simple.
```
import SDK from '@webeetle/core-sdk'const sdk = new SDK()
```Now you have an instance of your sdk. Basicly you now have a `sdk.req`. This property defined is an instance of `axios` library. Check out how to use it [here](https://github.com/axios/axios).
In addition to having the property, you will have a set of functionality such as:
- `decorate`: you can decorate your sdk instance with your functionalities.
- `log`: you have a predefined logger.
- `addClient`: allow you to add `axios` based client configuration.
- `addService`: allow you to add plugin to your instance.
### Options
You can pass to the `core-sdk` constructor a set of options:
- `name`: the name of your sdk.
- `clients`: a key value object where the key represent the name and the value is an object that represent an `axios` client configuration.
- `logLevel`: one of `info`, `warn`, `error` (predefined), `trace`.
### Example
```
import SDK from '@webeetle/core-sdk'const mySdk = new SDK({
name: 'WeBeetle SDK',
clients: {
v1: {
baseUrl: 'http://api.webeetle.com/v1',
headers: {'Authorization': 'Bearer 12333321122222'}
},
v2: {
baseUrl: 'http://api.webeetle.com/v2',
headers: {'Authorization': 'Bearer 44443322222222'}
}
},
logLevel: 'info'
})
```Perfect now yoou have your configured sdk instance. If you have the necessity to invoke an endpoint on the `v1` api version you can simply:
```
mySdk.v1.post('/your/endpoint')
.then(response => {
// Do something useful here
})
.catch(e => {
// Manage the error
})
```or if you want to use `v2` api in an `async` function:
```
async function myUtilityFunction () {
try {
const response = await mySdk.v2.post('/your/endpoint')
// Do something userful here
} catch (e) {
// Manage your error here
}
}
```## Decorate
The API of your sdk instance allows you to add new properties that you can use everywhere in your application. Here an example:
```
import SDK from '@webeetle/core-sdk'const mySdk = new SDK()
mySdk.decorate('sum', (a, b) => a + b)
```and somewhere else in your application you can use it as follow:
```
const total = mySdk.sum(5, 30)
```With the decorate API you can store everything you want. For example a configuration object.
## Add service
The `core-sdk` api expose another method that allow you to expose a service. For example, if you need to expose a set of functionality to manage users (create, update, delete) you can create a service, and decorate the main sdk instance. Below an example:
```
// file users.jsimport { plugin } from '@webeetle/core-sdk'
export default plugin((instance, name) => {
instance.decorate(name, {
create: async userData => {
// create you user
},
getUserByUsername: async username => {
// get user by username
},
update: async userData => {
// update your user
},
delete: async username => {
// delete your user
}
})
})
``````
// file mySdk.jsimport SDK from '@webeetle/core-sdk'
import users from '/path/to/users'const mySdk = new SDK()
mySdk,addService('users', users)// now we can use it
mySdk.users.create({
name: 'Davide',
username: 'davide'
})
.then(response => {
// do something
})
.catch(e => {
// do something
})
```## Contributing
If you feel you can help in any way, be it with examples, extra testing, or new features please open a pull request or open an issue.
The code follows the Standard code style.
[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)
## Running Tests
Simply run `npm run test` from command line.
## Acknowledgements
This project is kindly sponsored by [Webeetle s.r.l.](https://www.webeetle.com)
## License
Licensed under [MIT](./LICENSE).