@@ -22,6 +22,7 @@ use status::{ReplayGain, Status};
22
22
use std:: convert:: From ;
23
23
use std:: io:: { BufRead , Lines , Read , Write } ;
24
24
use std:: net:: { TcpStream , ToSocketAddrs } ;
25
+ use std:: collections:: HashMap ;
25
26
use sticker:: Sticker ;
26
27
use version:: Version ;
27
28
@@ -567,6 +568,17 @@ impl<S: Read + Write> Client<S> {
567
568
. map ( |v| v. into_iter ( ) . map ( |b| b. splitn ( 2 , '=' ) . nth ( 1 ) . map ( |s| s. to_owned ( ) ) . unwrap ( ) ) . collect ( ) )
568
569
}
569
570
571
+ /// List all stickers from a given object in a map, identified by type and uri
572
+ pub fn stickers_map ( & mut self , typ : & str , uri : & str ) -> Result < HashMap < String , String > > {
573
+ self . run_command ( "sticker list" , ( typ, uri) )
574
+ . and_then ( |_| self . read_list ( "sticker" ) )
575
+ . map ( |v| v. into_iter ( ) . map ( |b| {
576
+ let mut iter = b. splitn ( 2 , '=' ) ;
577
+
578
+ ( iter. next ( ) . unwrap ( ) . to_owned ( ) , iter. next ( ) . unwrap ( ) . to_owned ( ) )
579
+ } ) . collect ( ) )
580
+ }
581
+
570
582
/// List all (file, sticker) pairs for sticker name and objects of given type
571
583
/// from given directory (identified by uri)
572
584
pub fn find_sticker ( & mut self , typ : & str , uri : & str , name : & str ) -> Result < Vec < ( String , String ) > > {
0 commit comments