diff --git a/README.md b/README.md index 2c07ff3..1857bb2 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ ### Как это работает -При каждом обращении к `/connect` создаётся отдельная на Redus PubSub каналы +При каждом обращении к `/connect` создаётся отдельная асинхронная задача с подписками на Redus PubSub каналы - `new_reaction` - `new_shout` - `followers:` diff --git a/src/data.rs b/src/data.rs index 35fdc07..de64548 100644 --- a/src/data.rs +++ b/src/data.rs @@ -1,6 +1,6 @@ use reqwest::header::{HeaderMap, HeaderValue, AUTHORIZATION, CONTENT_TYPE}; use reqwest::Client as HTTPClient; -use serde_json::json; +use serde_json::{json, Value}; use std::collections::HashMap; use std::env; use std::error::Error; @@ -106,12 +106,12 @@ async fn get_shout_followers(shout_id: &str) -> Result, Box> pub async fn is_fitting( listener_id: i32, kind: String, - payload: HashMap, + payload: HashMap, ) -> Result { match &kind[0..9] { "new_react" => { // payload is Reaction, kind is new_reaction - let shout_id = payload.get("shout").unwrap(); + let shout_id = payload.get("shout").unwrap().as_str().unwrap(); let recipients = get_shout_followers(shout_id).await.unwrap(); Ok(recipients.contains(&listener_id)) diff --git a/src/main.rs b/src/main.rs index 170de43..cfe9a3c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,6 +4,7 @@ use actix_web::{web, web::Bytes, App, HttpRequest, HttpResponse, HttpServer}; use futures::StreamExt; use redis::{AsyncCommands, Client}; use serde::{Deserialize, Serialize}; +use serde_json::Value; use std::collections::HashMap; use std::env; use std::sync::{Arc, Mutex}; @@ -19,7 +20,7 @@ struct AppState { #[derive(Serialize, Deserialize)] struct RedisMessageData { - payload: HashMap, + payload: HashMap, kind: String, }