disco: Split query and result.
This commit is contained in:
parent
945ae350ac
commit
76a46559b8
4 changed files with 78 additions and 44 deletions
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
use std::convert::TryFrom;
|
||||
|
||||
use disco::{Feature, Identity, Disco};
|
||||
use disco::{Feature, Identity, DiscoInfoResult, DiscoInfoQuery};
|
||||
use data_forms::DataForm;
|
||||
use hashes::{Hash, Algo};
|
||||
|
||||
|
|
@ -106,7 +106,7 @@ fn compute_extensions(extensions: &[DataForm]) -> Vec<u8> {
|
|||
})
|
||||
}
|
||||
|
||||
pub fn compute_disco(disco: &Disco) -> Vec<u8> {
|
||||
pub fn compute_disco(disco: &DiscoInfoResult) -> Vec<u8> {
|
||||
let features_string = compute_features(&disco.features);
|
||||
let identities_string = compute_identities(&disco.identities);
|
||||
let extensions_string = compute_extensions(&disco.extensions);
|
||||
|
|
@ -172,12 +172,9 @@ pub fn hash_ecaps2(data: &[u8], algo: Algo) -> Result<Hash, String> {
|
|||
})
|
||||
}
|
||||
|
||||
pub fn query_ecaps2(hash: Hash) -> Disco {
|
||||
Disco {
|
||||
pub fn query_ecaps2(hash: Hash) -> DiscoInfoQuery {
|
||||
DiscoInfoQuery {
|
||||
node: Some(format!("{}#{}.{}", ns::ECAPS2, String::from(hash.algo), base64::encode(&hash.hash))),
|
||||
identities: vec!(),
|
||||
features: vec!(),
|
||||
extensions: vec!(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -211,7 +208,7 @@ mod tests {
|
|||
#[test]
|
||||
fn test_simple() {
|
||||
let elem: Element = "<query xmlns='http://jabber.org/protocol/disco#info'><identity category='client' type='pc'/><feature var='http://jabber.org/protocol/disco#info'/></query>".parse().unwrap();
|
||||
let disco = Disco::try_from(elem).unwrap();
|
||||
let disco = DiscoInfoResult::try_from(elem).unwrap();
|
||||
let ecaps2 = ecaps2::compute_disco(&disco);
|
||||
assert_eq!(ecaps2.len(), 54);
|
||||
}
|
||||
|
|
@ -274,7 +271,7 @@ mod tests {
|
|||
105, 109, 101, 31, 28, 99, 108, 105, 101, 110, 116, 31, 109, 111,
|
||||
98, 105, 108, 101, 31, 31, 66, 111, 109, 98, 117, 115, 77, 111,
|
||||
100, 31, 30, 28, 28];
|
||||
let disco = Disco::try_from(elem).unwrap();
|
||||
let disco = DiscoInfoResult::try_from(elem).unwrap();
|
||||
let ecaps2 = ecaps2::compute_disco(&disco);
|
||||
assert_eq!(ecaps2.len(), 0x1d9);
|
||||
assert_eq!(ecaps2, expected);
|
||||
|
|
@ -446,7 +443,7 @@ mod tests {
|
|||
111, 110, 31, 48, 46, 49, 49, 46, 49, 45, 115, 118, 110, 45, 50,
|
||||
48, 49, 49, 49, 50, 49, 54, 45, 109, 111, 100, 32, 40, 84, 99, 108,
|
||||
47, 84, 107, 32, 56, 46,54, 98, 50, 41, 31, 30, 29, 28];
|
||||
let disco = Disco::try_from(elem).unwrap();
|
||||
let disco = DiscoInfoResult::try_from(elem).unwrap();
|
||||
let ecaps2 = ecaps2::compute_disco(&disco);
|
||||
assert_eq!(ecaps2.len(), 0x543);
|
||||
assert_eq!(ecaps2, expected);
|
||||
|
|
|
|||
Loading…
Reference in a new issue