diff --git a/README.md b/README.md index b4ae25c..7ad4eeb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ ### ENV - API_BASE - - IM_BASE - REDIS_URL diff --git a/src/main.rs b/src/main.rs index 6e20326..3a30277 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,22 +5,39 @@ use serde::{Serialize, Deserialize}; use serde_json::Value; use std::collections::HashMap; use std::env; +use std::error::Error; use futures::FutureExt; use tokio::sync::broadcast::{self, Receiver}; +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +enum PayloadKind { + NewMessage, + NewFollower, + NewShout, + NewApproval, + NewComment, + NewRate +} + #[derive(Debug, Serialize, Deserialize)] struct Payload { chat_id: Option, shout_id: Option, - + author_id: Option, + topic_id: Option, + reaction_id: Option, + community_id: Option, + kind: PayloadKind, + body: String, } // Получаем id автора из токена -async fn get_auth_id(token: &str) -> Result> { +async fn get_auth_id(token: &str) -> Result> { let api_base = env::var("API_BASE")?; - let gql = match api_base.contains("auth") { - true => r#"query { sessiom { user { id } } }"#, - _ => r#"mutation { getSession { user { id } } }"# + let gql = match api_base.contains("v2") { + true => r#"mutation { getSession { user { id } } }"#, // v2 + _ => r#"query { sessiom { user { id } } }"# // authorizer }; let client = HTTPClient::new(); let response = client @@ -42,7 +59,7 @@ async fn sse_handler( rx: web::Data>, redis: web::Data, ) -> impl Responder { - let author_id = match get_author_id(&token).await { + let author_id = match get_auth_id(&token).await { Ok(id) => id, Err(e) => { eprintln!("Не удалось проверить токен: {}", e);