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")]
|
#[cfg(feature = "imgur")]
|
||||||
pub use 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