diff --git a/src/data.rs b/src/data.rs index 655f430..092d70d 100644 --- a/src/data.rs +++ b/src/data.rs @@ -9,45 +9,35 @@ use crate::SSEMessageData; pub async fn get_auth_id(token: &str) -> Result> { let auth_api_base = env::var("AUTH_URL")?; + let query_name = "validate_jwt_token"; + let operation = "ValidateToken"; let mut headers = HeaderMap::new(); + // headers.insert(AUTHORIZATION, HeaderValue::from_str(token)?); headers.insert(CONTENT_TYPE, HeaderValue::from_static("application/json")); + let mut variables = HashMap::::new(); + variables.insert("token".to_string(), token.to_string()); + variables.insert("token_type".to_string(), "access_token".to_string()); + let gql = json!({ - "query": r#"query { - validate_jwt_token(params: ValidateJWTTokenInput) { - is_valid - claims - } - }"#, - "variables": { - "params": { - "token_type": "access_token", - "token": token, - } - } + "query": format!("query {}($params: ValidateJWTTokenInput) {{ {}(params: $params) {{ is_valid claims }} }}", operation, query_name), + "operationName": operation, + "variables": variables }); - println!("GraphQL Request: {:?}", gql); + let client = HTTPClient::new(); let response = client .post(&auth_api_base) .headers(headers) .json(&gql) .send() - .await; - - let response = match response { - Ok(res) => res, - Err(err) => { - println!("Error sending request: {:?}", err); - return Err(Box::new(err)); - } - }; + .await?; if response.status().is_success() { let r: HashMap = response.json().await?; let user_id = r .get("data") - .and_then(|data| data.get("validate_jwt_token")) + .and_then(|data| data.get(query_name)) .and_then(|query| query.get("claims")) .and_then(|claims| claims.get("sub")) .and_then(|id| id.as_i64());