* feat: create base of push daemon Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com> * Add outbound senders * Make web_push send to rabbit instead (temp stuff) * feat: stability and friend requests * make vapid fr stuff not suck * swap naming of queue * move pushd into daemons folder * fix cargo file for move into daemons folder * feat: probably working fcm push notifs * comment out fcm webpush stuff since the config keys dont exist * fix fcm, name queues according to their prod status and configure routing keys * add pushd to docker * mix: Remove old code, add stuff to pushd * fix: lockfile * feat: update rocket to 5.0.1 * fix: fix queues and ack bugs * Move rabbit messsage processing into ack queue * chore: update readme * chore: optimizations for ack database hits * pushd flowchart * misc: update flowchart * exit dependancy hell * add rocket_impl flag to authifier * make the tests file of delta actually compile * fix: don't silence every push message * fix: don't silence all messages * add debug logging for sending data to rabbit from message events * validate mentions at a server membership level * put back that import that was actually important * minor fix to lockfile * update delta authifier * feat: proper permissions for push notifications * add unit test for mention sanitization * remove local file dependancy on authifier * update ports to proper defaults * fixTM the node bindings * Theoretically configure docker releases for pushd Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com> * declare exchange in pushd and delta * fix createbuckets script Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com> * fix: reference db implementation Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com> * fix: remove finally redundant code Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com> * fix: changes Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com> * fix: other changes Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com> * fix: make channel name return result Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com> --------- Signed-off-by: IAmTomahawkx <iamtomahawkx@gmail.com>
54 lines
1.6 KiB
Rust
54 lines
1.6 KiB
Rust
use amqprs::{
|
|
channel::{BasicPublishArguments, Channel},
|
|
connection::{Connection, OpenConnectionArguments},
|
|
BasicProperties,
|
|
};
|
|
use log::{debug, warn};
|
|
|
|
pub(crate) trait Channeled {
|
|
#[allow(unused)]
|
|
fn get_connection(&self) -> Option<&Connection>;
|
|
fn get_channel(&self) -> Option<&Channel>;
|
|
fn set_connection(&mut self, conn: Connection);
|
|
fn set_channel(&mut self, channel: Channel);
|
|
}
|
|
|
|
pub(crate) async fn make_channel<T: Channeled>(consumer: &mut T) {
|
|
let config = revolt_config::config().await;
|
|
|
|
let args = OpenConnectionArguments::new(
|
|
&config.rabbit.host,
|
|
config.rabbit.port,
|
|
&config.rabbit.username,
|
|
&config.rabbit.password,
|
|
);
|
|
let conn = amqprs::connection::Connection::open(&args).await.unwrap();
|
|
|
|
let channel = conn.open_channel(None).await.unwrap();
|
|
|
|
consumer.set_connection(conn);
|
|
consumer.set_channel(channel);
|
|
}
|
|
|
|
pub(crate) async fn publish_message<T: Channeled>(
|
|
consumer: &mut T,
|
|
payload: Vec<u8>,
|
|
args: BasicPublishArguments,
|
|
) {
|
|
let routing_key = &args.routing_key.clone();
|
|
let mut channel = consumer.get_channel();
|
|
if channel.is_none() {
|
|
make_channel(consumer).await;
|
|
channel = consumer.get_channel();
|
|
}
|
|
|
|
if let Some(chnl) = channel {
|
|
chnl.basic_publish(BasicProperties::default(), payload.clone(), args.clone())
|
|
.await
|
|
.unwrap();
|
|
debug!("Sent message to queue for target {}", routing_key);
|
|
} else {
|
|
warn!("Failed to unwrap channel (including attempt to make a channel)!")
|
|
}
|
|
}
|