1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//! # Helvetia Client
//!
//! This library contains an HTTP client for the [Helvetia] API. It follows the
//! [v0 API spec].
//!
//! ## Example
//!
//! There are three main operations that this client supports: create a secret,
//! get its data/metadata, delete a secret. Here's an example of all three:
//!
//! ```no_run
//! # use helvetia_client::Res;
//! # use tokio;
//! # #[tokio::main]
//! # async fn main() -> Res<()> {
//! use url;
//! use helvetia_client::{Data,Meta,HelvetiaClient};
//!
//! let owner_token = "owner_token";
//! let meta_token = "meta_token";
//! let secret_name = "secret";
//! let data = "The cake is a lie";
//! let meta = "Aperture";
//!
//! // Create a client.
//! let server_url = url::Url::parse("https://helvetia.example.com")?;
//! let client = HelvetiaClient::from_url(server_url)?;
//!
//! // Create a secret.
//! let data_req = Data::new(owner_token, data);
//! let meta_req = Meta::new(meta_token, meta);
//! let res = client.create_secret(secret_name, data_req, Some(meta_req)).await?;
//! assert_eq!(res, ());
//!
//! // Get the data of a secret.
//! let res = client.get_secret_data(secret_name, owner_token).await?;
//! assert_eq!(&res, data);
//!
//! // Get the metadata of a secret.
//! let res = client.get_secret_meta(secret_name, meta_token).await?;
//! assert_eq!(&res, meta);
//!
//! // Delete a secret.
//! let res = client.delete_secret(secret_name, owner_token).await?;
//! assert_eq!(res, ());
//!
//! # Ok(())
//! # }
//! ```
//!
//! [Helvetia]: https://docs.rs/helvetia
//! [v0 API spec]: https://docs.rs/helvetia/latest/helvetia/api/index.html

#![deny(
    warnings,
    missing_copy_implementations,
    missing_debug_implementations,
    missing_docs,
    trivial_casts,
    trivial_numeric_casts,
    unsafe_code,
    unstable_features,
    unused_import_braces,
    unused_qualifications,
    unused_extern_crates,
    unused_must_use,
    unused_results,
    variant_size_differences
)]

mod client;
mod errors;

pub use crate::client::{Data, HelvetiaClient, Meta};
pub use crate::errors::{Error, Res};