add memory cache for gemini identities search

This commit is contained in:
yggverse 2024-11-16 17:27:44 +02:00
parent d9bf85884b
commit f347c28f6f
4 changed files with 75 additions and 13 deletions

View file

@ -37,21 +37,18 @@ impl Identity {
}
}
/// Get `pem` record match `request`
///
/// https://geminiprotocol.net/docs/protocol-specification.gmi#client-certificates
/// Get `pem` record match `request` according to
/// [Gemini protocol specification](https://geminiprotocol.net/docs/protocol-specification.gmi#client-certificates)
/// * this function work with memory cache not database
pub fn gemini(&self, request: &str) -> Option<String> {
// @TODO apply protocol rules to certificate selection
for profile_identity_gemini_id in self.gemini.auth.memory.starts_with(request) {
if let Ok(gemini_records) = self.gemini.database.records() {
for gemini_record in gemini_records {
if gemini_record.id == profile_identity_gemini_id {
return Some(gemini_record.pem);
}
}
if let Ok(pem) = self.gemini.memory.get(profile_identity_gemini_id) {
return Some(pem);
}
}
None
} // @TODO apply protocol rules to selection
}
}
// Tools