Compare commits
3 commits
914db27a98
...
57e76753f5
Author | SHA1 | Date | |
---|---|---|---|
57e76753f5 | |||
8412489373 | |||
ce50afa635 |
5 changed files with 41 additions and 44 deletions
|
@ -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
|
||||||
|
|
|
@ -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?;
|
||||||
///
|
///
|
||||||
|
|
|
@ -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)]
|
||||||
|
|
|
@ -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);
|
||||||
///
|
///
|
||||||
|
|
|
@ -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(())
|
||||||
//! }
|
//! }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue