anyhow impl
This commit is contained in:
		
							
								
								
									
										7
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -137,6 +137,12 @@ dependencies = [ | ||||
|  "alloc-no-stdlib", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "anyhow" | ||||
| version = "1.0.100" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" | ||||
|  | ||||
| [[package]] | ||||
| name = "async-trait" | ||||
| version = "0.1.89" | ||||
| @ -518,6 +524,7 @@ dependencies = [ | ||||
| name = "http_core" | ||||
| version = "0.1.0" | ||||
| dependencies = [ | ||||
|  "anyhow", | ||||
|  "async-trait", | ||||
|  "awc", | ||||
|  "serde", | ||||
|  | ||||
| @ -6,6 +6,7 @@ description = "Core traits and types for building API clients with http_derive" | ||||
| license = "MIT OR Apache-2.0" | ||||
|  | ||||
| [dependencies] | ||||
| anyhow = "1.0.100" | ||||
| async-trait = "0.1" | ||||
| awc = "3"  | ||||
| serde = { version = "1", features = ["derive"] }  | ||||
|  | ||||
							
								
								
									
										15
									
								
								src/lib.rs
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								src/lib.rs
									
									
									
									
									
								
							| @ -1,9 +1,10 @@ | ||||
| use async_trait::async_trait; | ||||
| use anyhow::Result; | ||||
| use serde::{Deserialize, Serialize}; | ||||
| use std::collections::HashMap; | ||||
| use std::path::Path; | ||||
| use std::{ fs, fmt }; | ||||
| use std::sync::Arc; | ||||
| use std::{fmt, fs}; | ||||
|  | ||||
| /// A trait every API request type should implement (via macro). | ||||
| /// Provides info about the HTTP protocol, URLs, and supported methods. | ||||
| @ -23,7 +24,7 @@ pub trait HasHttp { | ||||
| #[async_trait] | ||||
| pub trait Queryable: HasHttp + Send + Sync { | ||||
|     type R; | ||||
|     type E: std::error::Error + 'static; // Keep trait bound | ||||
|     type E: std::error::Error + Send + Sync + 'static; // Keep trait bound | ||||
|  | ||||
|     async fn send( | ||||
|         &self, | ||||
| @ -31,15 +32,14 @@ pub trait Queryable: HasHttp + Send + Sync { | ||||
|         sandbox: bool, | ||||
|         method_override: Option<&str>, | ||||
|         headers: Option<Vec<(&str, &str)>>, | ||||
|     ) -> Result<Self::R, Self::E>; | ||||
|     ) -> Result<Self::R>; | ||||
| } | ||||
|  | ||||
|  | ||||
| /// Trait implemented by your auto-generated API dispatcher enums. | ||||
| /// This allows you to batch or route requests by API type. | ||||
| #[async_trait] | ||||
| pub trait ApiDispatch { | ||||
|     type E: std::error::Error + 'static; | ||||
|     type R; | ||||
|  | ||||
|     async fn send_all( | ||||
|         &self, | ||||
| @ -48,7 +48,7 @@ pub trait ApiDispatch { | ||||
|         override_url: Option<&str>, | ||||
|         sandbox: bool, | ||||
|         method_override: Option<&str>, | ||||
|     ) -> Result<(), Self::E>; | ||||
|     ) -> Result<Vec<Self::R>>; | ||||
| } | ||||
|  | ||||
|  | ||||
| @ -73,7 +73,7 @@ impl Keys { | ||||
| /// Loads API keys from ~/.config/keys or fallback ./keys directory. | ||||
| /// Each `.toml` file should contain a `Key { key, secret }` struct. | ||||
| /// The filename (without `.toml`) becomes the key name in the map. | ||||
| pub fn load_api_keys() -> Result<Keys, Box<dyn std::error::Error>> { | ||||
| pub fn load_api_keys() -> Result<Keys> { | ||||
|     let home_dir = std::env::var("HOME")?; | ||||
|     let config_dir = Path::new(&home_dir).join(".config/keys"); | ||||
|     let fallback_dir = Path::new("keys"); | ||||
| @ -115,4 +115,3 @@ impl fmt::Display for ConversionError { | ||||
| impl std::error::Error for ConversionError {} | ||||
| unsafe impl Send for ConversionError {} | ||||
| unsafe impl Sync for ConversionError {} | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user