mirror of https://github.com/MedzikUser/imgurs
fix: delete broken 0x0
This commit is contained in:
parent
f5c70e4f4f
commit
8ddfeb3c19
|
@ -99,9 +99,3 @@ mod imgur;
|
|||
|
||||
#[cfg(feature = "imgur")]
|
||||
pub use imgur::*;
|
||||
|
||||
#[cfg(feature = "null_pointer")]
|
||||
mod null_pointer;
|
||||
|
||||
#[cfg(feature = "null_pointer")]
|
||||
pub use null_pointer::*;
|
||||
|
|
|
@ -1,89 +0,0 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use reqwest::{Client, Method};
|
||||
|
||||
use crate::{Error, Result};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
/// The Null Pointer instance for https://0x0.st
|
||||
pub struct NullPointer {
|
||||
client: Client,
|
||||
url: String,
|
||||
}
|
||||
|
||||
impl NullPointer {
|
||||
/// Create a new [NullPointer] instance.
|
||||
/// ```rs
|
||||
/// use imgurs::NullPointer;
|
||||
///
|
||||
/// let client = NullPointer::new("https://0x0.st");
|
||||
/// ```
|
||||
pub fn new(url: &str) -> Self {
|
||||
let client = reqwest::Client::new();
|
||||
Self {
|
||||
client,
|
||||
url: url.to_string(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Upload image to Imgur
|
||||
/// ```no_run
|
||||
/// use imgurs::NullPointer;
|
||||
///
|
||||
/// #[tokio::main]
|
||||
/// async fn main() {
|
||||
/// let client = NullPointer::new("https://0x0.st");
|
||||
///
|
||||
/// client.upload("path/to/file.png").await.expect("failed to upload image");
|
||||
/// }
|
||||
/// ```
|
||||
pub async fn upload(&self, path: &str) -> Result<String> {
|
||||
let mut bytes = Vec::new();
|
||||
|
||||
// check if the specified file exists if not then check if it is a url
|
||||
if std::path::Path::new(path).exists() {
|
||||
bytes = std::fs::read(path)?;
|
||||
}
|
||||
// validate url adress
|
||||
else {
|
||||
Err(Error::InvalidUrlOrFile(path.to_string()))?;
|
||||
}
|
||||
|
||||
// send request to imgur api
|
||||
// get http client
|
||||
let client = &self.client;
|
||||
|
||||
// create Request buidler
|
||||
let mut req = client.request(Method::POST, &self.url);
|
||||
|
||||
// add `Authorization` and `User-Agent` to Request
|
||||
req = req.header(
|
||||
"User-Agent",
|
||||
format!("Imgur/{:?}", env!("CARGO_PKG_VERSION")),
|
||||
);
|
||||
|
||||
let part = reqwest::multipart::Part::bytes(bytes);
|
||||
|
||||
let form = reqwest::multipart::Form::new().part("file", part);
|
||||
|
||||
req = req.multipart(form);
|
||||
|
||||
// build Request
|
||||
let req = req.build()?;
|
||||
|
||||
// send Request
|
||||
let res = client.execute(req).await?;
|
||||
|
||||
// get response http code
|
||||
let status = res.status();
|
||||
|
||||
// check if an error has occurred
|
||||
if status.is_client_error() || status.is_server_error() {
|
||||
let body = res.text().await?;
|
||||
|
||||
return Err(Error::ApiError(status.as_u16(), body));
|
||||
}
|
||||
|
||||
Ok(res.json().await?)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue