getItem method
Implementation
Future<Result<PubSubError, PubSubItem>> getItem(
JID jid,
String node,
String id,
) async {
final result = (await getAttributes().sendStanza(
StanzaDetails(
Stanza.iq(
type: 'get',
to: jid.toString(),
children: [
XMLNode.xmlns(
tag: 'pubsub',
xmlns: pubsubXmlns,
children: [
XMLNode(
tag: 'items',
attributes: <String, String>{'node': node},
children: [
XMLNode(
tag: 'item',
attributes: <String, String>{'id': id},
),
],
),
],
),
],
),
shouldEncrypt: false,
),
))!;
if (result.attributes['type'] != 'result') {
return Result(getPubSubError(result));
}
final pubsub = result.firstTag('pubsub', xmlns: pubsubXmlns);
if (pubsub == null) return Result(getPubSubError(result));
final itemElement = pubsub.firstTag('items')?.firstTag('item');
if (itemElement == null) return Result(NoItemReturnedError());
final item = PubSubItem(
id: itemElement.attributes['id']! as String,
payload: itemElement.children[0],
node: node,
);
return Result(item);
}