92 lines
2.4 KiB
Markdown
92 lines
2.4 KiB
Markdown
# mirror-server
|
|
|
|
A simple server for mirroring HTTP requests for testing. It is optimized for
|
|
working with REST API JSON calls, and catching headers.
|
|
|
|
[![Build Status](https://ci.birch-tree.net/api/badges/dorian/mirror-server/status.svg)](https://ci.birch-tree.net/dorian/mirror-server)
|
|
|
|
## Getting Started
|
|
|
|
* Use the latest stable version of Rust using rustup.
|
|
* Build: `cargo build`
|
|
* Test: `cargo test`
|
|
* Run the server: `cargo run -- --port=8080`
|
|
* Create a DEB package:
|
|
* Install cargo-deb: `cargo install cargo-deb`
|
|
* Create the DEB package: `cargo deb`
|
|
* Faster builds using [`cargo-watch`](https://watchexec.github.io/#cargo-watch): `cargo watch -x run`
|
|
* Installing the binary locally from source: `cargo install --path .`
|
|
|
|
## Install
|
|
|
|
`mirror-server` is installable either by a local Cargo install or a Debian
|
|
package. Additionally `mirror-server` can be run as a Docker container using
|
|
the latest (or tagged) release.
|
|
|
|
### Docker Image
|
|
|
|
Run via Docker using:
|
|
|
|
```console
|
|
$ docker run -p 8080:8080 code.birch-tree.net/dorian/mirror-server:latest
|
|
```
|
|
|
|
### Debian Package
|
|
|
|
Download the DEB file, and install it:
|
|
|
|
```bash
|
|
VERSION=0.3.1
|
|
REPO_URL=https://code.birch-tree.net/api/packages/dorian/generic/mirror-server/
|
|
curl "${REPO_URL}/${VERSION}/mirror-server_${VERSION}_amd64.deb"
|
|
sudo dpkg -i "mirror-server-${VERSION}_amd64.deb"
|
|
```
|
|
|
|
Afterward you can run using `mirror-server`
|
|
|
|
## Usage
|
|
|
|
You can get all the options that `mirror-server` supports by running it with
|
|
the help option `--help` or `-h`:
|
|
|
|
```console
|
|
$ mirror-server --help
|
|
A simple server for mirror HTTP requests for testing.
|
|
|
|
Usage: mirror-server [OPTIONS]
|
|
|
|
Options:
|
|
-p, --port <PORT> Port to run on [default: 8080]
|
|
-i, --ips <IPS> Listen to IP mask [default: 0.0.0.0]
|
|
-h, --help Print help
|
|
-V, --version Print version
|
|
```
|
|
|
|
After starting the server, you can send requests to it. Using `curl` you
|
|
can send `mirror-server` JSON requests:
|
|
|
|
```console
|
|
$ curl -s -X PUT -D '{"hello": "world"}' -H 'Content-Type: application/json' \
|
|
http://localhost:8080/api/testing | jq .
|
|
```
|
|
|
|
And `mirror-server` responds to requests with JSON responses:
|
|
|
|
```json
|
|
{
|
|
"method": "PUT",
|
|
"path": "/api/testing",
|
|
"host": "localhost:8180",
|
|
"headers": {
|
|
"accept": "*/*",
|
|
"content-length": "18",
|
|
"content-type": "application/json",
|
|
"host": "localhost:8080",
|
|
"user-agent": "curl/7.68.0"
|
|
},
|
|
"body": {
|
|
"hello": "world"
|
|
}
|
|
}
|
|
```
|