preroll 0.7.0

Easy boilerplate utilities for Rust http services which use async-std, Tide, Surf, and friends.
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

# [0.7.0] - 2021-05-19

### Changes
- The default backend for the included [Surf][] http client has changed from libcurl (via [Isahc][]) to [http-client's async-h1 client][].
- `honeycomb`: Environemtn variables now start with `HONEYCOMB_` rather than `HONEYCOMBIO_`.
    - Consistency with other honeycomb SDK's.
- `honeycomb`: `HONEYCOMBIO_WRITE_KEY` is now `HONEYCOMB_WRITEKEY` (required).
    - Consistency with other honeycomb SDK's.

### Additions
- `honeycomb`: Added `HONEYCOMB_SAMPLE_RATE` environment var usage.

[http-client's async-h1 client]: https://github.com/http-rs/http-client/tree/main/src/h1
[Isahc]: https://github.com/sagebind/isahc
[Surf]: https://github.com/http-rs/surf

## [0.6.0] - 2021-04-15

### Additions
- `postgres`: Added a `PGMAXLIFETIME` environemnt variable, set in minutes.

### Dependencies
- `honeycomb`: Switched back to `tracing-honeycomb` and upgraded to `0.3`. 
   - This allows patch upgrades to be picked up via `cargo update`, and is otherwise identical to `0.2.1-eaze.7`.

## [0.5.7] - 2021-04-05

- `honeycomb`: Added events for generic Request/Response http properties.
- Changed the ordering of json log fields to be better for plaintext viewers.
- Fixed hostname resolution in `/monitor/status`.

## [0.5.6] - 2021-03-29

- Dependency upgrade to eaze-tracing-honeycomb 0.2.1-eaze.7
    - `honeycomb`: This fixes a deadlock. See [this commit] for details.

[this commit]: https://github.com/eaze/tracing-honeycomb/commit/9dd18b55ea96b95ce76d0051dbcbd085b7e7f2f1

## [0.5.5] - 2021-03-24

- `honeycomb`: Fixed timestamps to correctly be from spans/events.
- Dependency upgrade to eaze-tracing-honeycomb 0.2.1-eaze.6

## [0.5.4] - 2021-03-24

- `honeycomb`: Sub-millisecond "duration_ms" using f64.
- Dependency upgrade to eaze-tracing-honeycomb 0.2.1-eaze.5

## [0.5.3] - 2021-03-22

- Enables Postgres trace events.
- Dependency upgrade to tide-sqlx 0.6.0

## [0.5.2] - 2021-03-19

- Dependency upgrade to eaze-tracing-honeycomb 0.2.1-eaze.4

## [0.5.1] - 2021-03-09

- Reduce dependency footprint from async-std.
    - Avoids wasm-related features.

## [0.5.0] - 2021-03-09

- Dependency upgrade to sqlx 0.5 & tide-sqlx 0.5 for the `postgres` feature.

## [0.4.3] - 2021-02-22

- Fixes `X-Honeycomb-Trace` header parsing.
    - Under the hood, this meant a switch to [the Eaze fork of tracing-honeycomb]https://github.com/eaze/tracing-honeycomb.

## [0.4.2] - 2021-02-16

- Avoid causing http errors on invalid `X-Honeycomb-Id` and `X-Request-Id`.
    - Instead, these get logged.

## [0.4.1] - 2021-02-02

- Updated the `"honeycomb"` feature to respect the `"HONEYCOMBIO_DATASET"` environment variable when possible.

## [0.4.0] - 2021-02-01

The same as 0.3 but with a forgotten update to Tide 0.16.

- Dependency upgrade to Tide 0.14 & tide-sqlx 0.4.

## [0.3.0] - 2021-02-01

- Removed the `"custom_middleware"` feature, is now automatically part of the optional arguments for `preroll::main!`.
- Changed `preroll::main!` to accept `VariadicRoutes` instead of variable macro arguments.
- Changed `preroll::test_utils::create_client` to accept `VariadicRoutes`, enabled api versioned testing.
- Changed assertions to always unwrap and panic immediately rather than return a `Result`.
- Changed assertions to accept `AsMut<http_types::Response>` rather than `surf::Response`.
- Added more test assertion helpers to `preroll::test_utils`.
- Added `/monitor/status` built-in endpoint to expose useful status information.
- Updated all documentation with major additions, overhauls, and examples.
- Improved the standalone example / test subproject.
- Improved internal CI.

## [0.2.0] - 2021-01-12

- Changed the api mounting point to be versioned - e.g. `/api/v1`.
    - This is based on argument position of the route handlers provided to `preroll::main!`.
- Changed routes setup function to instead receive `Route<'_, Arc<AppState>>`.
- Added `"test"` feature (makes UUIDs such as `correlation_id` be constant an nil).
- Added `"custom_middleware"` feature to add an extra hook into `preroll::main!`.
- Added an always-enabled `GET /monitor/ping` which responds only with `service_name`.
    - This is excluded from middleware.
- Added a debug-mode-only `GET /internal-error` for easy testing.
- Exposed and documented `JsonError`.
- Improved http error output for `assert_json_error`.

## [0.1.2] - 2021-01-06

- Fixed `honeycomb` feature. _(Incorrect `cfg` statements.)_

## [0.1.1] - 2020-12-21

- Fixed missing/empty `Cargo.toml` fields.

## [0.1.0] - 2020-12-21

- Initial exports:
  - `prelude`
  - `test_utils`
  - `utils`
  - `main`
  - `SetupResult`

- Initial feature set:
  - `"honeycomb"`
  - `"postgres"`
  - `"panic-on-error"`

Note: the following override is currently required to make `libhoney-rust` use `async-std` as its runtime:
```toml
[patch.crates-io.libhoney-rust]
git = "https://github.com/eaze/libhoney-rust.git"
branch = "runtime-async-std"
optional = true
default-features = false
features = ["runtime-async-std"]
```