[![Crates.io][crates-badge]][crates-url]
[![Docs.rs][docs-badge]][docs-url]
[![MIT licensed][mit-badge]][mit-url]
# coder.rs
An asynchronous, pure Rust wrapper around the [Coder](https://coder.com) Enterprise API.
This is currently experimental. Not all routes have been implemented and the API is expected to
change.
## Installation
Coder.rs has been tested to work on Rust 1.40+
Add this to your `Cargo.toml`'s `[dependencies]` section:
```toml
coder = { version = "0.3", features = ["rustls"] }
```
## Usage
Coder provides the [`coder::Coder`](https://docs.rs/coder/latest/coder/client/struct.Coder.html)
struct for creating requests.
```rust
use std::env;
use std::error::Error;
use coder::{Coder, Executor};
#[tokio::main]
async fn main() -> Result<(), Box> {
let url = env::var("MANAGER_URL")?;
let api_key = env::var("API_KEY")?;
let c = Coder::new(url, api_key)?;
let res = c.users().me().execute().await?;
dbg!(res);
Ok(())
}
// [src/bin/main.rs:19] res = ApiResponse {
// headers: Headers(
// {
// "server": "openresty/1.15.8.2",
// "date": "Wed, 05 Aug 2020 05:05:11 GMT",
// "content-type": "application/json",
// "content-length": "653",
// "vary": "Accept-Encoding",
// "vary": "Origin",
// "strict-transport-security": "max-age=15724800; includeSubDomains",
// "coder-version": "1.9.0-rc1-220-gd2a04f83a",
// "x-envoy-upstream-service-time": "20",
// },
// ),
// status_code: 200,
// response: Ok(
// User {
// id: "5e876cf4-10abe9b2e54eb609c5ec1870",
// name: "Colin Adler",
// username: "colin",
// email: "colin@coder.com",
// dotfiles_git_uri: "",
// roles: [
// "site-manager",
// "site-auditor",
// ],
// avatar_hash: "28707dc83fdcba2cacaa3ad5e381b34b7cb37b74",
// key_regenerated_at: 2020-04-03T17:05:56.964782Z,
// created_at: 2020-04-03T17:05:56.964782Z,
// updated_at: 2020-05-29T18:10:33.532351Z,
// },
// ),
// }
```
## Features
* `rustls` - Uses the [`rustls`](https://docs.rs/rustls/) pure Rust TLS implementation. (default)
* `rust-native-tls` - Uses [`native-tls`](https://docs.rs/native-tls/) for TLS which links against the OS default.
[crates-badge]: https://img.shields.io/crates/v/coder.svg
[crates-url]: https://crates.io/crates/coder
[docs-badge]: https://docs.rs/coder/badge.svg
[docs-url]: https://docs.rs/coder
[mit-badge]: https://img.shields.io/badge/license-MIT-blue.svg
[mit-url]: https://github.com/coadler/coder.rs/blob/master/LICENSE
[logo-url]: https://raw.githubusercontent.com/cdr/coder.rs/master/logo.png