# CurlReq

<!-- MDOC !-->

Req is awesome, but the world speaks curl.

Next time you're debugging a 3rd party API and need to ask for support, you can just toss in this line:

|> CurlReq.inspect()

And you'll have the full curl command.

[Read the announcement here](

## Usage

### Req to Curl
# Turn a Req request into a `curl` command.

iex> "/fact", base_url: "")
...> |> CurlReq.to_curl()
"curl -H \"accept-encoding: gzip\" -H \"user-agent: req/0.4.14\" -X GET" 

# Or use `CurlReq.inspect/2` to inspect inline.

iex> "/fact", base_url: "https://catfact.nijna/")
...> |> CurlReq.inspect(label: "MY REQ")
...> # |> Req.request!()


### Curl to Req

`CurlReq` also implements the `~CURL` sigil, which converts a curl command to its corresponding Req request.

iex> import CurlReq
...> ~CURL(curl
...> # |> Req.request!()


### Req Plugin

One final feature to note the Req plugin, `CurlReq.Plugin`. Use `CurlReq.Plugin.attach/2` to set up curl logging (inspired by `TeslaCurl`).

iex> "/fact", base_url: "")
...> |> CurlReq.Plugin.attach()
...> # |> Req.request!()


<!-- MDOC !-->

## Installation

The package can be installed
by adding `curl_req` to your list of dependencies in `mix.exs`:

def deps do
    {:curl_req, "~> 0.98.0"}

The docs can be found at <>.

## Contributions

Contributions are welcome! There are gaps in the library, and this is open source, so let's work together to fill them!

- [ ] ~CURL sigil handles newlines
- [x] curl [url]
- [x] curl -H
- [x] curl -X
- [x] curl -d
- [x] curl -b
- [x] curl long form options (--header, --data, etc)
- [x] Req Plugin to log curl command (like `TeslaCurl`)

## How to contribute

- Clone the repository to your computer.
- Add to your mix.exs file in your project: `{:curl_req, path: "~/path/to/curl_req"}`.
- Tinker until it does what you want.
- Add a test covering your case.
- Add a changelog entry if applicable.
- Submit a PR!