Skip to main content

jup_ag_sdk/
error.rs

1use reqwest::{Response, StatusCode};
2
3#[derive(Debug, thiserror::Error)]
4pub enum JupiterClientError {
5    #[error("Request failed: {0}")]
6    RequestError(#[from] reqwest::Error),
7
8    #[error("Invalid header value: {0}")]
9    HeaderError(#[from] reqwest::header::InvalidHeaderValue),
10
11    #[error("API returned error: {0}, Status Code: {1}")]
12    ApiError(String, StatusCode),
13
14    #[error("Failed to deserialize response: {0}")]
15    DeserializationError(String),
16}
17
18pub async fn handle_response(response: Response) -> Result<Response, JupiterClientError> {
19    if !response.status().is_success() {
20        let status = response.status();
21        let error_text = response
22            .text()
23            .await
24            .unwrap_or_else(|_| "Unable to get error details".to_string());
25        return Err(JupiterClientError::ApiError(error_text, status));
26    }
27    Ok(response)
28}