From 61fcb7a5a32accae6d3c8a2af5fb7c39c827c2ac Mon Sep 17 00:00:00 2001 From: aaravm Date: Mon, 10 Jun 2024 03:44:22 +0530 Subject: [PATCH] made service.rs class --- lib/src/service.rs | 105 +++++++++++++++++++++++++++++++-------------- lib/src/tes/tes.rs | 6 +-- 2 files changed, 76 insertions(+), 35 deletions(-) diff --git a/lib/src/service.rs b/lib/src/service.rs index 056755f..28d9871 100644 --- a/lib/src/service.rs +++ b/lib/src/service.rs @@ -3,6 +3,13 @@ use serde::Serialize; use serde_json::Value; use std::error::Error; + +use crate::{tes::ResponseContent, tes::models}; + +pub enum CreateTaskError { + UnknownValue(serde_json::Value), +} + #[derive(Debug)] pub struct Service { base_url: String, @@ -30,48 +37,82 @@ impl Service { data: Option, params: Option, ) -> Result> { - let url = format!("{}/{}", self.base_url, endpoint); - let mut headers = reqwest::header::HeaderMap::new(); - headers.insert("Content-Type", "application/json".parse()?); - - if let Some(token) = &self.token { - headers.insert( - "Authorization", - format!("Bearer {}", token).parse()?, - ); - } + // What client are we using? + let mut local_var_req_builder = self.client.request(reqwest::Method::POST, endpoint); - let mut req_builder = self.client.request(method, &url).headers(headers); - - if let Some(data) = data { - req_builder = req_builder.json(&data); + if let Some(ref local_var_user_agent) = self.username { + local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone()); } + + // Check what are data and params + local_var_req_builder = local_var_req_builder.json(&data); - if let Some(params) = params { - req_builder = req_builder.query(¶ms); - } + let local_var_req = local_var_req_builder.build()?; + let local_var_resp = self.client.execute(local_var_req).await?; + + let local_var_status = local_var_resp.status(); + let local_var_content = local_var_resp.text().await?; - let response = req_builder.send().await?; - if !response.status().is_success() { - let error_message = format!("Error: HTTP {} - {}", response.status(), response.status().canonical_reason().unwrap_or("Unknown error")); + // Check what to return, whether Result> or not + if !local_var_status.is_client_error() && !local_var_status.is_server_error() { + serde_json::from_str(&local_var_content).map_err(|e| Box::new(e) as Box) + // serde_json::from_str(&local_var_content).map_err(Error::from) + } else { + // let local_var_entity: Option = serde_json::from_str(&local_var_content).ok(); + // let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity }; + // Err(Error::ResponseError(local_var_error)) + let error_message = format!("Error: HTTP {} - {}", local_var_status, local_var_status.canonical_reason().unwrap_or("Unknown error")); eprintln!("{}", error_message); - return Err(error_message.into()); + Err(error_message.into()) } - let content_type = response - .headers() - .get(reqwest::header::CONTENT_TYPE) - .and_then(|value| value.to_str().ok()) - .unwrap_or(""); + //GA4GH-CLI PYTHON CODE CONVERTED TO RUST (OLD CODE) - let response_data = if content_type.contains("application/json") { - response.json::().await? - } else { - Value::String(response.text().await?) - }; + + // let url = format!("{}/{}", self.base_url, endpoint); + // let mut headers = reqwest::header::HeaderMap::new(); + // headers.insert("Content-Type", "application/json".parse()?); - Ok(response_data) + // if let Some(token) = &self.token { + // headers.insert( + // "Authorization", + // format!("Bearer {}", token).parse()?, + // ); + // } + + // let mut req_builder = self.client.request(method, &url).headers(headers); + + // if let Some(data) = data { + // req_builder = req_builder.json(&data); + // } + + // if let Some(params) = params { + // req_builder = req_builder.query(¶ms); + // } + + // let response = req_builder.send().await?; + + // if !response.status().is_success() { + // let error_message = format!("Error: HTTP {} - {}", response.status(), response.status().canonical_reason().unwrap_or("Unknown error")); + // eprintln!("{}", error_message); + // return Err(error_message.into()); + // } + + // let content_type = response + // .headers() + // .get(reqwest::header::CONTENT_TYPE) + // .and_then(|value| value.to_str().ok()) + // .unwrap_or(""); + + // let response_data = if content_type.contains("application/json") { + // response.json::().await? + // } else { + // Value::String(response.text().await?) + // }; + + // Ok(response_data) } } + diff --git a/lib/src/tes/tes.rs b/lib/src/tes/tes.rs index d87ff1e..aa0dd88 100644 --- a/lib/src/tes/tes.rs +++ b/lib/src/tes/tes.rs @@ -22,12 +22,12 @@ pub async fn create_task(configuration: &configuration::Configuration, params: C // unbox the parameters let body = params.body; - - + let local_var_client = &local_var_configuration.client; let local_var_uri_str = format!("{}/tasks", local_var_configuration.base_path); - let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str()); + let endpoint = local_var_uri_str.as_str(); + let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, endpoint); if let Some(ref local_var_user_agent) = local_var_configuration.user_agent { local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());