Compare commits

...

3 commits

Author SHA1 Message Date
57e76753f5 style: cargo fmt 2025-06-25 14:09:18 +02:00
8412489373 make docs.rs build with all features 2025-06-25 14:08:27 +02:00
ce50afa635 docs: update docs to reflect current code 2025-06-25 14:08:15 +02:00
5 changed files with 41 additions and 44 deletions

View file

@ -34,3 +34,6 @@ serde = { version = "1.0.219", features = ["derive"] }
thiserror = "2.0.12" thiserror = "2.0.12"
tokio = "1.45.1" tokio = "1.45.1"
url = { version = "2.5.4", features = ["serde"] } url = { version = "2.5.4", features = ["serde"] }
[package.metadata.docs.rs]
all-features = true

View file

@ -1,4 +1,4 @@
//! Contains structs, enums and implementations for the main bunny.net API //! Contains structs, enums and implementations for the main Bunny.net API
use url::Url; use url::Url;
@ -24,7 +24,7 @@ pub struct BunnyClient {
} }
impl BunnyClient { impl BunnyClient {
/// Creates a new BunnyClient using the supplied `api_key` /// Creates a new Bunny.net API Client using the supplied `api_key`
/// ///
/// ``` /// ```
/// use bunny_api_tokio::{BunnyClient, error::Error}; /// use bunny_api_tokio::{BunnyClient, error::Error};
@ -44,9 +44,7 @@ impl BunnyClient {
let reqwest = RClient::builder().default_headers(headers).build()?; let reqwest = RClient::builder().default_headers(headers).build()?;
Ok(Self { Ok(Self { reqwest })
reqwest,
})
} }
// TODO: Following functions could probably use better naming, the names are currently derived from the titles on the API reference // TODO: Following functions could probably use better naming, the names are currently derived from the titles on the API reference
@ -54,12 +52,12 @@ impl BunnyClient {
/// Returns a list of countries and tax rates /// Returns a list of countries and tax rates
/// ///
/// ``` /// ```
/// use bunny_api_tokio::{Client, error::Error}; /// use bunny_api_tokio::{BunnyClient, error::Error};
/// ///
/// #[tokio::main] /// #[tokio::main]
/// async fn main() -> Result<(), Error> { /// async fn main() -> Result<(), Error> {
/// // Bunny.net api key /// // Bunny.net api key
/// let mut client = Client::new("api_key").await?; /// let mut client = BunnyClient::new("api_key").await?;
/// ///
/// let countries = client.get_country_list().await?; /// let countries = client.get_country_list().await?;
/// ///
@ -87,12 +85,12 @@ impl BunnyClient {
/// Returns a list of API Keys /// Returns a list of API Keys
/// ///
/// ``` /// ```
/// use bunny_api_tokio::{Client, error::Error}; /// use bunny_api_tokio::{BunnyClient, error::Error};
/// ///
/// #[tokio::main] /// #[tokio::main]
/// async fn main() -> Result<(), Error> { /// async fn main() -> Result<(), Error> {
/// // Bunny.net api key /// // Bunny.net api key
/// let mut client = Client::new("api_key").await?; /// let mut client = BunnyClient::new("api_key").await?;
/// ///
/// let api_keys = client.list_api_keys(1, 1000).await?; /// let api_keys = client.list_api_keys(1, 1000).await?;
/// ///
@ -124,12 +122,12 @@ impl BunnyClient {
/// Returns a list of Regions /// Returns a list of Regions
/// ///
/// ``` /// ```
/// use bunny_api_tokio::{Client, error::Error}; /// use bunny_api_tokio::{BunnyClient, error::Error};
/// ///
/// #[tokio::main] /// #[tokio::main]
/// async fn main() -> Result<(), Error> { /// async fn main() -> Result<(), Error> {
/// // Bunny.net api key /// // Bunny.net api key
/// let mut client = Client::new("api_key").await?; /// let mut client = BunnyClient::new("api_key").await?;
/// ///
/// let regions = client.region_list().await?; /// let regions = client.region_list().await?;
/// ///
@ -156,12 +154,12 @@ impl BunnyClient {
/// Purges a URL from the cache /// Purges a URL from the cache
/// ///
/// ``` /// ```
/// use bunny_api_tokio::{Client, error::Error}; /// use bunny_api_tokio::{BunnyClient, error::Error};
/// ///
/// #[tokio::main] /// #[tokio::main]
/// async fn main() -> Result<(), Error> { /// async fn main() -> Result<(), Error> {
/// // Bunny.net api key /// // Bunny.net api key
/// let mut client = Client::new("api_key").await?; /// let mut client = BunnyClient::new("api_key").await?;
/// ///
/// client.purge_url("https://url_to_purge.com".parse()?, false).await?; /// client.purge_url("https://url_to_purge.com".parse()?, false).await?;
/// ///

View file

@ -1,5 +1,5 @@
use url::Url;
use crate::error::Error; use crate::error::Error;
use url::Url;
/// Endpoints for Edge Storage API /// Endpoints for Edge Storage API
#[derive(Debug, Clone, PartialEq, Eq)] #[derive(Debug, Clone, PartialEq, Eq)]

View file

@ -1,10 +1,13 @@
//! Edge Storage API //! Edge Storage API
//! //!
//! Contains enums, structs and functions for the Bunny Edge Storage API //! Contains enums, structs and functions for the Bunny Edge Storage API
use crate::error::Error; use crate::error::Error;
use bytes::Bytes; use bytes::Bytes;
use reqwest::{header::{HeaderMap, HeaderValue}, Client}; use reqwest::{
Client,
header::{HeaderMap, HeaderValue},
};
use url::Url; use url::Url;
mod endpoint; mod endpoint;
@ -20,7 +23,7 @@ pub struct EdgeStorageClient {
} }
impl<'a> EdgeStorageClient { impl<'a> EdgeStorageClient {
/// Creates a new EdgeStorageClient using the supplied `api_key` /// Creates a new EdgeStorageClient
/// ///
/// ``` /// ```
/// use bunny_api_tokio::{EdgeStorageClient, error::Error, edge_storage::Endpoint}; /// use bunny_api_tokio::{EdgeStorageClient, error::Error, edge_storage::Endpoint};
@ -32,7 +35,11 @@ impl<'a> EdgeStorageClient {
/// Ok(()) /// Ok(())
/// } /// }
/// ``` /// ```
pub async fn new<T: AsRef<str>, T1: AsRef<str>>(api_key: T, endpoint: Endpoint, storage_zone: T1) -> Result<Self, Error> { pub async fn new<T: AsRef<str>, T1: AsRef<str>>(
api_key: T,
endpoint: Endpoint,
storage_zone: T1,
) -> Result<Self, Error> {
let mut headers = HeaderMap::new(); let mut headers = HeaderMap::new();
headers.append("AccessKey", HeaderValue::from_str(api_key.as_ref())?); headers.append("AccessKey", HeaderValue::from_str(api_key.as_ref())?);
headers.append("accept", HeaderValue::from_str("application/json")?); headers.append("accept", HeaderValue::from_str("application/json")?);
@ -44,28 +51,23 @@ impl<'a> EdgeStorageClient {
let url = endpoint.join(&storage_zone)?; let url = endpoint.join(&storage_zone)?;
Ok(Self { Ok(Self { url, reqwest })
url,
reqwest,
})
} }
/// Uploads a file to the Storage Zone /// Uploads a file to the Storage Zone
/// ///
/// ``` /// ```
/// use bunny_api_tokio::{Client, error::Error, edge_storage::Endpoint}; /// use bunny_api_tokio::{EdgeStorageClient, error::Error, edge_storage::Endpoint};
/// use tokio::fs; /// use tokio::fs;
/// ///
/// #[tokio::main] /// #[tokio::main]
/// async fn main() -> Result<(), Error> { /// async fn main() -> Result<(), Error> {
/// let mut client = Client::new("api_key").await?; /// let mut client = EdgeStorageClient::new("storage_zone_api_key", Endpoint::Frankfurt, "MyStorageZone").await?;
///
/// client.storage.init("storage_zone_api_key", Endpoint::Frankfurt, "MyStorageZone").await?;
/// ///
/// let file_bytes = fs::read("path/to/file.png").await.unwrap(); /// let file_bytes = fs::read("path/to/file.png").await.unwrap();
/// ///
/// // Will put a file in STORAGE_ZONE/images/file.png /// // Will put a file in STORAGE_ZONE/images/file.png
/// client.storage.upload("/images/file.png", file_bytes.into()).await?; /// client.upload("/images/file.png", file_bytes.into()).await?;
/// ///
/// Ok(()) /// Ok(())
/// } /// }
@ -91,18 +93,16 @@ impl<'a> EdgeStorageClient {
/// Downloads a file from the Storage Zone /// Downloads a file from the Storage Zone
/// ///
/// ``` /// ```
/// use bunny_api_tokio::{Client, error::Error, edge_storage::Endpoint}; /// use bunny_api_tokio::{EdgeStorageClient, error::Error, edge_storage::Endpoint};
/// use tokio::fs; /// use tokio::fs;
/// use tokio::io::AsyncWriteExt; /// use tokio::io::AsyncWriteExt;
/// ///
/// #[tokio::main] /// #[tokio::main]
/// async fn main() -> Result<(), Error> { /// async fn main() -> Result<(), Error> {
/// let mut client = Client::new("api_key").await?; /// let mut client = EdgeStorageClient::new("storage_zone_api_key", Endpoint::Frankfurt, "MyStorageZone").await?;
///
/// client.storage.init("storage_zone_api_key", Endpoint::Frankfurt, "MyStorageZone").await?;
/// ///
/// // Will download the file STORAGE_ZONE/images/file.png /// // Will download the file STORAGE_ZONE/images/file.png
/// let contents = client.storage.download("/images/file.png").await?; /// let contents = client.download("/images/file.png").await?;
/// ///
/// let mut file = fs::File::create("file.png").await.unwrap(); /// let mut file = fs::File::create("file.png").await.unwrap();
/// file.write_all(&contents).await.unwrap(); /// file.write_all(&contents).await.unwrap();
@ -130,16 +130,14 @@ impl<'a> EdgeStorageClient {
/// Deletes a file from the Storage Zone /// Deletes a file from the Storage Zone
/// ///
/// ``` /// ```
/// use bunny_api_tokio::{Client, error::Error, edge_storage::Endpoint}; /// use bunny_api_tokio::{EdgeStorageClient, error::Error, edge_storage::Endpoint};
/// ///
/// #[tokio::main] /// #[tokio::main]
/// async fn main() -> Result<(), Error> { /// async fn main() -> Result<(), Error> {
/// let mut client = Client::new("api_key").await?; /// let mut client = EdgeStorageClient::new("storage_zone_api_key", Endpoint::Frankfurt, "MyStorageZone").await?;
///
/// client.storage.init("storage_zone_api_key", Endpoint::Frankfurt, "MyStorageZone").await?;
/// ///
/// // Will delete the file STORAGE_ZONE/images/file.png /// // Will delete the file STORAGE_ZONE/images/file.png
/// client.storage.delete("/images/file.png").await?; /// client.delete("/images/file.png").await?;
/// ///
/// Ok(()) /// Ok(())
/// } /// }
@ -163,16 +161,14 @@ impl<'a> EdgeStorageClient {
/// Lists files on the Storage Zone /// Lists files on the Storage Zone
/// ///
/// ``` /// ```
/// use bunny_api_tokio::{Client, error::Error, edge_storage::Endpoint}; /// use bunny_api_tokio::{EdgeStorageClient, error::Error, edge_storage::Endpoint};
/// ///
/// #[tokio::main] /// #[tokio::main]
/// async fn main() -> Result<(), Error> { /// async fn main() -> Result<(), Error> {
/// let mut client = Client::new("api_key").await?; /// let mut client = EdgeStorageClient::new("storage_zone_api_key", Endpoint::Frankfurt, "MyStorageZone").await?;
///
/// client.storage.init("storage_zone_api_key", Endpoint::Frankfurt, "MyStorageZone").await?;
/// ///
/// // Will list the files in STORAGE_ZONE/images/ /// // Will list the files in STORAGE_ZONE/images/
/// let files = client.storage.list("/images/").await?; /// let files = client.list("/images/").await?;
/// ///
/// println!("{:#?}", files); /// println!("{:#?}", files);
/// ///

View file

@ -8,11 +8,11 @@
//! 2. Start coding //! 2. Start coding
//! //!
//! ``` //! ```
//! use bunny_api_tokio::{Client, error::Error}; //! use bunny_api_tokio::{BunnyClient, error::Error};
//! //!
//! #[tokio::main] //! #[tokio::main]
//! async fn main() -> Result<(), Error> { //! async fn main() -> Result<(), Error> {
//! let mut client = Client::new("api_key").await?; //! let mut client = BunnyClient::new("api_key").await?;
//! //!
//! Ok(()) //! Ok(())
//! } //! }