feat: assume client create is safe + error rename
This commit is contained in:
parent
7da26e8959
commit
595e62509b
60
src/lib.rs
60
src/lib.rs
|
@ -18,35 +18,35 @@ pub type Result<T> = std::result::Result<T, Error>;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
HttpError(reqwest::Error),
|
Http(reqwest::Error),
|
||||||
DeserializationError(serde_json::Error, Option<Value>),
|
Deserialization(serde_json::Error, Option<Value>),
|
||||||
HeaderError(reqwest::header::InvalidHeaderValue),
|
Header(reqwest::header::InvalidHeaderValue),
|
||||||
ChronoParseError(chrono::ParseError),
|
ChronoParse(chrono::ParseError),
|
||||||
NoSuchProperty(String),
|
NoSuchProperty(String),
|
||||||
Unknown
|
Unknown
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<reqwest::Error> for Error {
|
impl From<reqwest::Error> for Error {
|
||||||
fn from(error: reqwest::Error) -> Self {
|
fn from(error: reqwest::Error) -> Self {
|
||||||
Error::HttpError(error)
|
Error::Http(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<reqwest::header::InvalidHeaderValue> for Error {
|
impl From<reqwest::header::InvalidHeaderValue> for Error {
|
||||||
fn from(error: reqwest::header::InvalidHeaderValue) -> Self {
|
fn from(error: reqwest::header::InvalidHeaderValue) -> Self {
|
||||||
Error::HeaderError(error)
|
Error::Header(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<serde_json::Error> for Error {
|
impl From<serde_json::Error> for Error {
|
||||||
fn from(error: serde_json::Error) -> Self {
|
fn from(error: serde_json::Error) -> Self {
|
||||||
Error::DeserializationError(error, None)
|
Error::Deserialization(error, None)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<chrono::ParseError> for Error {
|
impl From<chrono::ParseError> for Error {
|
||||||
fn from(error: chrono::ParseError) -> Self {
|
fn from(error: chrono::ParseError) -> Self {
|
||||||
Error::ChronoParseError(error)
|
Error::ChronoParse(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,17 +62,16 @@ fn parse<T: for<'de> Deserialize<'de>>(key: &str, data: &Value) -> Result<T> {
|
||||||
|
|
||||||
const NOTION_VERSION: &str = "2022-06-28";
|
const NOTION_VERSION: &str = "2022-06-28";
|
||||||
|
|
||||||
fn get_http_client(notion_api_key: &str) -> Result<reqwest::Client> {
|
fn get_http_client(notion_api_key: &str) -> reqwest::Client {
|
||||||
let mut headers = HeaderMap::new();
|
let mut headers = HeaderMap::new();
|
||||||
headers.insert("Authorization", HeaderValue::from_str(&format!("Bearer {notion_api_key}"))?);
|
headers.insert("Authorization", HeaderValue::from_str(&format!("Bearer {notion_api_key}")).expect("bearer token to be parsed into a header"));
|
||||||
headers.insert("Notion-Version", HeaderValue::from_str(NOTION_VERSION)?);
|
headers.insert("Notion-Version", HeaderValue::from_str(NOTION_VERSION).expect("notion version to be parsed into a header"));
|
||||||
headers.insert("Content-Type", HeaderValue::from_static("application/json"));
|
headers.insert("Content-Type", HeaderValue::from_static("application/json"));
|
||||||
|
|
||||||
Ok(
|
reqwest::ClientBuilder::new()
|
||||||
reqwest::ClientBuilder::new()
|
.default_headers(headers)
|
||||||
.default_headers(headers)
|
.build()
|
||||||
.build()?
|
.expect("to build a valid client out of notion_api_key")
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(unused)]
|
#[allow(unused)]
|
||||||
|
@ -85,21 +84,18 @@ pub struct Client {
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
|
||||||
impl<'a> Client {
|
impl<'a> Client {
|
||||||
pub fn new(notion_api_key: &'a str) -> Result<Self> {
|
pub fn new(notion_api_key: &'a str) -> Self {
|
||||||
let http_client = Rc::from(get_http_client(notion_api_key)?);
|
let http_client = Rc::from(get_http_client(notion_api_key));
|
||||||
|
|
||||||
|
|
||||||
Ok(
|
Client {
|
||||||
Client {
|
http_client: http_client.clone(),
|
||||||
http_client: http_client.clone(),
|
pages: Pages {
|
||||||
pages: Pages {
|
http_client: http_client.clone()
|
||||||
http_client: http_client.clone()
|
},
|
||||||
},
|
blocks: Blocks {
|
||||||
blocks: Blocks {
|
http_client: http_client.clone()
|
||||||
http_client: http_client.clone()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
)
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,7 +121,7 @@ impl Pages {
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
println!("Error: {error:#?}");
|
println!("Error: {error:#?}");
|
||||||
println!("Body: {:#?}", request.json::<Value>().await?);
|
println!("Body: {:#?}", request.json::<Value>().await?);
|
||||||
Err(Error::HttpError(error))
|
Err(Error::Http(error))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -167,7 +163,7 @@ impl BlockChildren {
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
println!("Error: {error:#?}");
|
println!("Error: {error:#?}");
|
||||||
println!("Body: {:#?}", request.json::<Value>().await?);
|
println!("Body: {:#?}", request.json::<Value>().await?);
|
||||||
Err(Error::HttpError(error))
|
Err(Error::Http(error))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -192,7 +188,7 @@ impl Databases {
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
println!("Error: {error:#?}");
|
println!("Error: {error:#?}");
|
||||||
println!("Body: {:#?}", request.json::<Value>().await?);
|
println!("Body: {:#?}", request.json::<Value>().await?);
|
||||||
Err(Error::HttpError(error))
|
Err(Error::Http(error))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue