jid_prep: Add constructor, documentation, and switch from Option<String> to String.
This commit is contained in:
parent
9941e9c34f
commit
a9a68cb1d7
2 changed files with 29 additions and 7 deletions
|
@ -5,25 +5,34 @@
|
||||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
use crate::iq::{IqGetPayload, IqResultPayload};
|
use crate::iq::{IqGetPayload, IqResultPayload};
|
||||||
use crate::util::helpers::{PlainText, JidCodec};
|
use crate::util::helpers::{Text, JidCodec};
|
||||||
use jid::Jid;
|
use jid::Jid;
|
||||||
|
|
||||||
generate_element!(
|
generate_element!(
|
||||||
/// TODO
|
/// Request from a client to stringprep/PRECIS a string into a JID.
|
||||||
JidPrepQuery, "jid", JID_PREP,
|
JidPrepQuery, "jid", JID_PREP,
|
||||||
text: (
|
text: (
|
||||||
/// TODO
|
/// The potential JID.
|
||||||
data: PlainText<Option<String>>
|
data: Text<String>
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
impl IqGetPayload for JidPrepQuery {}
|
impl IqGetPayload for JidPrepQuery {}
|
||||||
|
|
||||||
|
impl JidPrepQuery {
|
||||||
|
/// Create a new JID Prep query.
|
||||||
|
pub fn new<J: Into<String>>(jid: J) -> JidPrepQuery {
|
||||||
|
JidPrepQuery {
|
||||||
|
data: jid.into(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
generate_element!(
|
generate_element!(
|
||||||
/// TODO
|
/// Response from the server with the stringprep’d/PRECIS’d JID.
|
||||||
JidPrepResponse, "jid", JID_PREP,
|
JidPrepResponse, "jid", JID_PREP,
|
||||||
text: (
|
text: (
|
||||||
/// TODO
|
/// The JID.
|
||||||
jid: JidCodec<Jid>
|
jid: JidCodec<Jid>
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -47,7 +56,7 @@ mod tests {
|
||||||
fn simple() {
|
fn simple() {
|
||||||
let elem: Element = "<jid xmlns='urn:xmpp:jidprep:0'>ROMeo@montague.lit/orchard</jid>".parse().unwrap();
|
let elem: Element = "<jid xmlns='urn:xmpp:jidprep:0'>ROMeo@montague.lit/orchard</jid>".parse().unwrap();
|
||||||
let query = JidPrepQuery::try_from(elem).unwrap();
|
let query = JidPrepQuery::try_from(elem).unwrap();
|
||||||
assert_eq!(query.data.unwrap(), "ROMeo@montague.lit/orchard");
|
assert_eq!(query.data, "ROMeo@montague.lit/orchard");
|
||||||
|
|
||||||
let elem: Element = "<jid xmlns='urn:xmpp:jidprep:0'>romeo@montague.lit/orchard</jid>".parse().unwrap();
|
let elem: Element = "<jid xmlns='urn:xmpp:jidprep:0'>romeo@montague.lit/orchard</jid>".parse().unwrap();
|
||||||
let response = JidPrepResponse::try_from(elem).unwrap();
|
let response = JidPrepResponse::try_from(elem).unwrap();
|
||||||
|
|
|
@ -8,6 +8,19 @@ use crate::util::error::Error;
|
||||||
use jid::Jid;
|
use jid::Jid;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
/// Codec for text content.
|
||||||
|
pub struct Text;
|
||||||
|
|
||||||
|
impl Text {
|
||||||
|
pub fn decode(s: &str) -> Result<String, Error> {
|
||||||
|
Ok(s.to_owned())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn encode(string: &str) -> Option<String> {
|
||||||
|
Some(string.to_owned())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Codec for plain text content.
|
/// Codec for plain text content.
|
||||||
pub struct PlainText;
|
pub struct PlainText;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue