update jwp storage for prove payment api

This commit is contained in:
creating2morrow 2023-05-07 01:06:08 -04:00
parent 27993e5a64
commit 6f97ce12b2
4 changed files with 24 additions and 5 deletions
nevmes-contact/src
nevmes-core/src

View file

@ -3,7 +3,7 @@ use rocket::response::status::Custom;
use rocket::serde::json::Json;
use rocket::{get, post};
use nevmes_core::{auth, contact, models::*, utils};
use nevmes_core::{auth, contact, models::*, proof, utils, reqres};
/// Add contact
#[post("/", data="<req_contact>")]
@ -31,3 +31,12 @@ pub async fn trust_contact
contact::trust_gpg(key);
Status::Ok
}
/// prove payment
#[get("/<contact>", data="<proof_req>")]
pub async fn prove_payment
(contact: String, proof_req: Json<proof::TxProof>, _token: auth::BearerToken
) -> Custom<Json<reqres::Jwp>> {
let r_jwp = proof::prove_payment(contact, &proof_req).await;
Custom(Status::Ok, Json(r_jwp.unwrap()))
}

View file

@ -16,6 +16,7 @@ async fn rocket() -> _ {
log::info!("nevmes-contact is online");
rocket::custom(&config)
.mount("/trust", routes![controller::trust_contact])
.mount("/prove", routes![controller::prove_payment])
.mount("/contact", routes![controller::add_contact])
.mount("/contacts", routes![controller::get_contacts])
}

View file

@ -257,11 +257,15 @@ pub async fn retry_fts() {
for m in v {
let message: Message = find(&m);
if message.mid != utils::empty_string() {
// fetch the jwp which just so happens to be cached by the client
let s = db::Interface::open();
let k = format!("{}-{}", "gui-jwp", message.to);
// get jwp from db
let k = format!("{}-{}", "fts-jwp", &message.to);
let jwp = db::Interface::read(&s.env, &s.handle, &k);
send_message(&message, &jwp).await.unwrap();
if jwp != utils::empty_string() {
send_message(&message, &jwp).await.unwrap();
} else {
error!("not jwp found for fts id: {}", &message.mid);
}
}
}
}

View file

@ -1,4 +1,4 @@
use crate::{monero, reqres, utils};
use crate::{db, monero, reqres, utils};
use log::{error, info};
use std::error::Error;
use rocket::http::Status;
@ -100,6 +100,11 @@ pub async fn prove_payment(contact: String, txp: &TxProof) -> Result<reqres::Jwp
log::debug!("prove payment response: {:?}", res);
match res {
Ok(r) => {
// cache the jwp for for fts
let s = db::Interface::open();
let k = format!("{}-{}", "fts-jwp", &contact);
db::Interface::delete(&s.env, &s.handle, &k);
db::Interface::write(&s.env, &s.handle, &k, &r.jwp);
Ok(r)
},
_ => Ok(Default::default()),