diff --git a/src/sbot.rs b/src/sbot.rs index fd065ca..decc427 100644 --- a/src/sbot.rs +++ b/src/sbot.rs @@ -304,23 +304,39 @@ impl Sbot { } /// Get HashMap of profile info for given user + pub async fn get_profile_info(&mut self, ssb_id: &str) -> Result, GolgiError> { + let mut keys_to_search_for = vec!["name", "description", "image"]; + self.get_about_info(ssb_id, keys_to_search_for).await + } + + /// Get HashMap of name and image for given user + /// (this is can be used to display profile images of a list of users) + pub async fn get_name_and_image(&mut self, ssb_id: &str) -> Result, GolgiError> { + let mut keys_to_search_for = vec!["name", "image"]; + self.get_about_info(ssb_id, keys_to_search_for).await + } + + /// Get HashMap of about keys to values for given user /// by iteratively searching through a stream of about messages, /// in order of recency, /// until we find all about messages for all needed info /// or reach the end of the stream. - pub async fn get_profile_info( + /// + /// # Arguments + /// + /// * `ssb_id` - A reference to a string slice which represents the id of the user to get info about. + /// * `keys_to_search_for` - A mutable vector of string slice, which represent the about keys + /// that will be searched for. As they are found, keys are removed from the vector. + pub async fn get_about_info( &mut self, - ssb_id: &str + ssb_id: &str, + mut keys_to_search_for: Vec<&str> ) -> Result, GolgiError> { // get about_message_stream let about_message_stream = self.get_about_message_stream(ssb_id).await?; // now we have a stream of about messages with most recent at the front of the vector pin_mut!(about_message_stream); // needed for iteration let mut profile_info: HashMap = HashMap::new(); - // these are the about message keys we are looking for - // as we find values for each of these keys, - // we will remove them from this vector (as we are no longer searching for them) - let mut keys_to_search_for = vec!["name", "description", "image"]; // iterate through the stream while it still has more values and // we still have keys we are looking for while let Some(res) = about_message_stream.next().await {