open-index/open-npm huggingface dataset:
npm package: @lieberweiss/http-service
Description: [![tested with mocha](https://img.shields.io/badge/tested_with-mocha-99424f.svg?style=flat-square)](https://github.com/mochajs/mocha)
Latest version: 0.0.2

# lieberweiss_module_service

[![tested with mocha](https://img.shields.io/badge/tested_with-mocha-99424f.svg?style=flat-square)](https://github.com/mochajs/mocha)

# Summary
- [**I. Release a new version**](https://github.com/lieberweiss/lieberweiss_module_service/blob/master/README.md#i-release-a-new-version)
- [**II. Installation**](https://github.com/lieberweiss/lieberweiss_module_service/blob/master/README.md#ii-installation)
- [**III. Usage**](https://github.com/lieberweiss/lieberweiss_module_service#iii-usage)
- [**IV. Command props**](https://github.com/lieberweiss/lieberweiss_module_service#iv-command-props)

## I. Release a new version
- Run `yarn build`
- Run `yarn new-version`
- Run `yarn publish`
- Commit and push changes

## II. Installation
Run `npm install @lieberweiss/service`

To import the lib, use `const service = require('@lieberweiss/service`.

## III. Usage
The service function takes 3 mandatory parameters :
- `serviceName` (type: String)
- `url` (type: String)
- `commands` (type: Object)

It returns a function which can be used to call an API, taking 3 parameters :
- `command` (type: String)
- `args` (type: Object)
- `auth` (type: Function, optional)
- `files` (type:Array, optional)

`files` is used when one want to post files. `files` object array contains the following object : `{name, originalFilename, rs}`:
- `name` is the fieldname of the file (default to `file`)
- `originalFilename` orginal filename of the file 
- `rs` is a of type `<fs.ReadStream>`
  
For a full implementation, see [mock-service.js](https://github.com/lieberweiss/lieberweiss_module_service/blob/master/test/mock-service.js)

## IV. Command props
Each command has 2 mandatory props: 
- `route` (type: String | Function)
- `method` (type: String, enum: ['GET', 'POST', 'DELETE', 'PUT'])

When `route` is a function, service will call the function and pass three arguments : `args`, `auth`, `files`.

You can also provide optional parameters:
- `query` (type: Array[String | Array[String]]) : every String queryParam then becomes required, unless you provide an Array instead of a String (e.g: ['queryParam', 'o']
- `body`: (type: Array[String | Array[String]]) : every String bodyParam then becomes required, unless you provide an Array instead of a String (e.g: ['bodyParam', 'o']
- `stream` (type: Boolean, default: false): if true, the response is returned without being processed, otherwise you will receive a json processed response
- `withStatus` (type: Boolean, default: false): if true, the response will be an Object `{ status, payload }`, with payload containing the returned response data
- `errorField` (type: String, default: 'message'): The field to use in the response in case of error.