Skip to content

Commit

Permalink
Added publish options for device and boundle nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
mimi89999 committed Feb 10, 2019
1 parent de41aa6 commit 4c060bf
Show file tree
Hide file tree
Showing 2 changed files with 119 additions and 0 deletions.
80 changes: 80 additions & 0 deletions Extensions/OMEMO/XMPPIQ+OMEMO.m
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,19 @@ + (XMPPIQ*) omemo_iqFetchDeviceIdsForJID:(XMPPJID*)jid
</list>
</item>
</publish>
<publish-options>
<x xmlns="jabber:x:data" type="submit">
<field var="FORM_TYPE" type="hidden">
<value>http://jabber.org/protocol/pubsub#publish-options</value>
</field>
<field var="pubsub#persist_items">
<value>1</value>
</field>
<field var="pubsub#access_model">
<value>open</value>
</field>
</x>
</publish-options>
</pubsub>
</iq>
*/
Expand All @@ -71,6 +84,33 @@ + (XMPPIQ*) omemo_iqPublishDeviceIds:(NSArray<NSNumber*>*)deviceIds elementId:(n
NSXMLElement *pubsub = [NSXMLElement elementWithName:@"pubsub" xmlns:XMLNS_PUBSUB];
[pubsub addChild:publish];

NSXMLElement *x = [NSXMLElement elementWithName:@"x" xmlns:@"jabber:x:data"];
[x addAttributeWithName:@"type" stringValue:@"submit"];

NSXMLElement *formTypeField = [NSXMLElement elementWithName:@"field"];
[formTypeField addAttributeWithName:@"var" stringValue:@"FORM_TYPE"];
[formTypeField addAttributeWithName:@"type" stringValue:@"hidden"];
[formTypeField addChild:[NSXMLElement elementWithName:@"value" stringValue:XMLNS_PUBSUB_PUBLISH_OPTIONS]];

[x addChild:formTypeField];

NSXMLElement *persistanceField = [NSXMLElement elementWithName:@"field"];
[persistanceField addAttributeWithName:@"var" stringValue:@"pubsub#persist_items"];
[persistanceField addChild:[NSXMLElement elementWithName:@"value" objectValue:@"1"]];

[x addChild:persistanceField];

NSXMLElement *accessModelField = [NSXMLElement elementWithName:@"field"];
[accessModelField addAttributeWithName:@"var" stringValue:@"pubsub#access_model"];
[accessModelField addChild:[NSXMLElement elementWithName:@"value" objectValue:@"open"]];

[x addChild:accessModelField];

NSXMLElement *publishOptions = [NSXMLElement elementWithName:@"publish-options"];
[publishOptions addChild:x];

[pubsub addChild:publishOptions];

XMPPIQ *iq = [XMPPIQ iqWithType:@"set" elementID:elementId];
[iq addChild:pubsub];

Expand Down Expand Up @@ -108,6 +148,19 @@ + (XMPPIQ*) omemo_iqPublishDeviceIds:(NSArray<NSNumber*>*)deviceIds elementId:(n
</bundle>
</item>
</publish>
<publish-options>
<x xmlns="jabber:x:data" type="submit">
<field var="FORM_TYPE" type="hidden">
<value>http://jabber.org/protocol/pubsub#publish-options</value>
</field>
<field var="pubsub#persist_items">
<value>1</value>
</field>
<field var="pubsub#access_model">
<value>open</value>
</field>
</x>
</publish-options>
</pubsub>
</iq>
Expand Down Expand Up @@ -156,6 +209,33 @@ + (XMPPIQ*) omemo_iqPublishBundle:(OMEMOBundle*)bundle
NSXMLElement *pubsub = [NSXMLElement elementWithName:@"pubsub" xmlns:XMLNS_PUBSUB];
[pubsub addChild:publish];

NSXMLElement *x = [NSXMLElement elementWithName:@"x" xmlns:@"jabber:x:data"];
[x addAttributeWithName:@"type" stringValue:@"submit"];

NSXMLElement *formTypeField = [NSXMLElement elementWithName:@"field"];
[formTypeField addAttributeWithName:@"var" stringValue:@"FORM_TYPE"];
[formTypeField addAttributeWithName:@"type" stringValue:@"hidden"];
[formTypeField addChild:[NSXMLElement elementWithName:@"value" stringValue:XMLNS_PUBSUB_PUBLISH_OPTIONS]];

[x addChild:formTypeField];

NSXMLElement *persistanceField = [NSXMLElement elementWithName:@"field"];
[persistanceField addAttributeWithName:@"var" stringValue:@"pubsub#persist_items"];
[persistanceField addChild:[NSXMLElement elementWithName:@"value" objectValue:@"1"]];

[x addChild:persistanceField];

NSXMLElement *accessModelField = [NSXMLElement elementWithName:@"field"];
[accessModelField addAttributeWithName:@"var" stringValue:@"pubsub#access_model"];
[accessModelField addChild:[NSXMLElement elementWithName:@"value" objectValue:@"open"]];

[x addChild:accessModelField];

NSXMLElement *publishOptions = [NSXMLElement elementWithName:@"publish-options"];
[publishOptions addChild:x];

[pubsub addChild:publishOptions];

XMPPIQ *iq = [XMPPIQ iqWithType:@"set" elementID:elementId];
[iq addChild:pubsub];
return iq;
Expand Down
39 changes: 39 additions & 0 deletions Xcode/Testing-Shared/OMEMOElementTests.m
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,19 @@ - (void)testDeviceIdSerialization {
</list> \
</item> \
</publish> \
<publish-options> \
<x xmlns='jabber:x:data' type='submit'> \
<field var='FORM_TYPE' type='hidden'> \
<value>http://jabber.org/protocol/pubsub#publish-options</value> \
</field> \
<field var='pubsub#persist_items'> \
<value>1</value> \
</field> \
<field var='pubsub#access_model'> \
<value>open</value> \
</field> \
</x> \
</publish-options> \
</pubsub> \
</iq> \
", [OMEMOModule xmlnsOMEMODeviceList:self.ns], [OMEMOModule xmlnsOMEMO:self.ns]];
Expand Down Expand Up @@ -84,6 +97,19 @@ - (void) testPublishDeviceBundle {
</bundle> \
</item> \
</publish> \
<publish-options> \
<x xmlns='jabber:x:data' type='submit'> \
<field var='FORM_TYPE' type='hidden'> \
<value>http://jabber.org/protocol/pubsub#publish-options</value> \
</field> \
<field var='pubsub#persist_items'> \
<value>1</value> \
</field> \
<field var='pubsub#access_model'> \
<value>open</value> \
</field> \
</x> \
</publish-options> \
</pubsub> \
</iq> \
", [OMEMOModule xmlnsOMEMOBundles:self.ns], [OMEMOModule xmlnsOMEMO:self.ns]];
Expand Down Expand Up @@ -251,6 +277,19 @@ - (void) testBundleParsing {
</bundle> \
</item> \
</publish> \
<publish-options> \
<x xmlns='jabber:x:data' type='submit'> \
<field var='FORM_TYPE' type='hidden'> \
<value>http://jabber.org/protocol/pubsub#publish-options</value> \
</field> \
<field var='pubsub#persist_items'> \
<value>1</value> \
</field> \
<field var='pubsub#access_model'> \
<value>open</value> \
</field> \
</x> \
</publish-options> \
</pubsub> \
</iq> \
",[OMEMOModule xmlnsOMEMOBundles:self.ns], [OMEMOModule xmlnsOMEMO:self.ns]];
Expand Down

0 comments on commit 4c060bf

Please sign in to comment.