https://github.com/vitalygashkov/fmptools
Foresight Mobile Platform utilities for web
https://github.com/vitalygashkov/fmptools
fmp foresight
Last synced: about 1 year ago
JSON representation
Foresight Mobile Platform utilities for web
- Host: GitHub
- URL: https://github.com/vitalygashkov/fmptools
- Owner: vitalygashkov
- License: gpl-3.0
- Created: 2023-09-12T11:31:19.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-03-01T05:00:47.000Z (over 1 year ago)
- Last Synced: 2025-04-22T22:09:20.732Z (about 1 year ago)
- Topics: fmp, foresight
- Language: JavaScript
- Homepage:
- Size: 204 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
fmptools is a set of FMP utilities for transforming RPC requests
### Install
```sh
npm i fmptools
```
### Usage
Use Axios interceptors to convert response and/or request data automatically for all FMP requests:
```javascript
import axios from 'axios';
import { createRequestInterceptor, createResponseInterceptor } from 'fmptools';
const http = axios.create();
const init = async () => {
const { data: schema } = await http.get('https://example.com/api/v1/schema');
const requestInterceptor = createRequestInterceptor(schema);
http.interceptors.request.use(requestInterceptor);
const responseInterceptor = createResponseInterceptor(schema);
http.interceptors.response.use(responseInterceptor);
};
const makeRequest = async () => {
const url = 'https://example.com/api/v1/rpc/ZFM_USERDATA/';
const { data: responseData } = await http.post(url);
return responseData;
};
```
Or convert response/request data manually:
```javascript
import axios from 'axios';
import { convertRequestData, convertResponseData } from 'fmptools';
const makeRequest = async () => {
const { data: schema } = await axios.get('https://example.com/api/v1/schema');
const resource = 'ZFM_CREATE_TASK';
const requestData = {
IT_DATA: [
{
TITLE: 'Task #1',
USERID: 1,
DATE: '2023-09-26',
TIME: '06:48:17',
EMAIL: 'example1@mail.com',
},
],
};
/* Table entities will be converted to rows as arrays
* IT_DATA: [['Task #1', 1, '2023-09-26', '06:48:17', 'example1@mail.com']]
*/
const requestDataConverted = convertRequestData(requestData, schema, resource);
const url = `https://example.com/api/v1/rpc/${resource}/`;
const options = { data: requestDataConverted };
const { data } = await axios.post(url, options);
const responseData = convertResponseData(data, schema, resource);
return responseData;
};
```