simplify hook firing

only need network and member IDs
This commit is contained in:
Grant Limberg 2023-08-30 14:51:39 -07:00
parent 60fb8c941a
commit d322f332e8
No known key found for this signature in database
GPG Key ID: 8F2F97D3BE8D7735
3 changed files with 6 additions and 70 deletions

View File

@ -1690,48 +1690,10 @@ void PostgreSQL::commitThread()
}
void PostgreSQL::notifyNewMember(const std::string &networkID, const std::string &memberID) {
std::shared_ptr<PostgresConnection> c;
try {
c = _pool->borrow();
} catch (std::exception &e) {
fprintf(stderr, "ERROR: %s\n", e.what());
return;
}
try {
pqxx::work w(*c->c);
// TODO: Add check for active subscription
auto res = w.exec_params("SELECT h.hook_id "
"FROM ztc_hook h "
"INNER JOIN ztc_hook_hook_types ht "
"ON ht.hook_id = h.hook_id "
"INNER JOIN ztc_org o "
"ON o.org_id = h.org_id "
"INNER JOIN ztc_user u "
"ON u.id = o.owner_id "
"INNER JOIN ztc_network n "
"ON n.owner_id = u.id "
"WHERE n.id = $1 "
"AND ht.hook_type = 'NETWORK_JOIN'", networkID);
for (auto const &row: res) {
std::string hookURL = row[0].as<std::string>();
smeeclient::smee_client_notify_network_joined(
_smee,
networkID.c_str(),
memberID.c_str(),
hookURL.c_str(),
NULL
);
}
_pool->unborrow(c);
} catch (std::exception &e) {
fprintf(stderr, "ERROR: %s\n", e.what());
return;
}
memberID.c_str());
}
void PostgreSQL::onlineNotificationThread()

View File

@ -64,8 +64,6 @@ pub extern "C" fn smee_client_notify_network_joined(
smee_instance: *mut SmeeClient,
network_id: *const c_char,
member_id: *const c_char,
hook_id: *const c_char,
src_ip: *const c_char,
) -> bool {
let nwid = unsafe {
assert!(!network_id.is_null());
@ -77,25 +75,12 @@ pub extern "C" fn smee_client_notify_network_joined(
CStr::from_ptr(member_id).to_str().unwrap()
};
let hid = unsafe {
assert!(!hook_id.is_null());
CStr::from_ptr(hook_id).to_str().unwrap()
};
let src = unsafe {
if src_ip.is_null() {
None
} else {
Some(CStr::from_ptr(src_ip).to_str().unwrap())
}
};
let smee = unsafe {
assert!(!smee_instance.is_null());
&mut *smee_instance
};
let params = NetworkJoinedParams::new(nwid, mem_id, hid, src);
let params = NetworkJoinedParams::new(nwid, mem_id);
match smee.notify_network_joined(params) {
Ok(()) => true,

View File

@ -31,24 +31,13 @@ pub struct NetworkJoinedParams {
#[serde(rename = "MemberID")]
pub member_id: String,
#[serde(rename = "HookID")]
pub hook_id: String,
#[serde(rename = "SrcIP")]
pub src_ip: Option<String>,
}
impl NetworkJoinedParams {
fn new(network_id: &str, member_id: &str, hook_id: &str, src_ip: Option<&str>) -> Self {
fn new(network_id: &str, member_id: &str) -> Self {
Self {
network_id: network_id.to_string(),
member_id: member_id.to_string(),
hook_id: hook_id.to_string(),
src_ip: match src_ip {
Some(x) => Some(x.to_string()),
None => None,
},
}
}
}