fmptools
TypeScript icon, indicating that this package has built-in type declarations

0.1.2 • Public • Published

npm-badge npm-downloads-badge npm-downloads-badge license-badge

fmptools is a set of FMP utilities for use on the web

Install

npm i fmptools

Usage

Use Axios interceptors to convert response and/or request data automatically for all FMP requests:

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:

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;
};

Readme

Keywords

Package Sidebar

Install

npm i fmptools

Weekly Downloads

2

Version

0.1.2

License

GNU GPLv3

Unpacked Size

43.8 kB

Total Files

9

Last publish

Collaborators

  • vitalygashkov