README.md

elli-swagger
=====

A [swagger](https://swagger.io/)(😎) middleware for [elli](https://github.com/elli-lib/elli).

How To use?
---
This library was thought to be simple and easy to use.

**1.** Configure your application, which can be accomplisehd by adding

```erl
    [
        ...
        {elli_swagger, [{
            swagger_metadata, #{openapi => <<"3.0.0">>,
                                info => #{title => <<"Doc Tile">>}}
        }]}
        ...
    ].
```
to your configuration file.
**2.** Add `elli_swagger` to your `rebar.config` so it can be loaded. If you want it to be loaded on a release:
```erl
    {relx, [{release, {elli_swagger_example, vsn}},[your_application,
                                                    elli,
                                                    {elli_swagger, load}]]}
     ...
```
**3.** You must specify that you want to copy the `swagger` folder inside `_build/default/lib/elli_swagger` in your `rebar.config`. To do that you just need to


**4.** Everything is ready now and you just need to call `elli_swagger:start/2`.
```erl
    elli_swagger:start([{callback, {{your_module}} }, {port, {{your_port}} }])
```

**5.** Finally, in the module you have set in the previous step, just define a function named `elli_swagger_config`. This function should return a list containing your application path's, the module that handles that path, any arguments you want to send to that module and finally that path's documentation.

Notes
---
Please be aware that on release _0.3.0_  `callback_args` is not still being used. If you need arguments to be sent to your module, feel free to open a Pull Request.

Contributions
---
Feel free to contribute to this project with opening an issue or a pull request!

License
---
Apache 2.0