diff --git a/Extensions/XEP-0060/XMPPPubSub.h b/Extensions/XEP-0060/XMPPPubSub.h index b836c7fd3e..7b5e252ab5 100644 --- a/Extensions/XEP-0060/XMPPPubSub.h +++ b/Extensions/XEP-0060/XMPPPubSub.h @@ -2,15 +2,21 @@ // XMPPPubSub.h // // Created by Duncan Robertson [duncan@whomwah.com] +// Updated by Nadim for Novedia Group - Hubiquitus project[hubiquitus.com] // #import #import "XMPPModule.h" +#if TARGET_OS_IPHONE +#import "DDXML.h" +#endif + @class XMPPStream; @class XMPPJID; @class XMPPIQ; @class XMPPMessage; +@class XMPPItem; @interface XMPPPubSub : XMPPModule { @@ -28,6 +34,8 @@ - (NSString *)deleteNode:(NSString *)node; - (NSString *)configureNode:(NSString *)node; - (NSString *)allItemsForNode:(NSString *)node; +- (NSString *)publishToNode:(NSString*)node entry:(NSXMLElement*)entry; + @end @@ -39,5 +47,6 @@ - (void)xmppPubSub:(XMPPPubSub *)sender didReceiveMessage:(XMPPMessage *)message; - (void)xmppPubSub:(XMPPPubSub *)sender didReceiveError:(XMPPIQ *)iq; - (void)xmppPubSub:(XMPPPubSub *)sender didReceiveResult:(XMPPIQ *)iq; +- (void)xmppPubSub:(XMPPPubSub *)sender didPublish:(XMPPIQ *)iq; @end diff --git a/Extensions/XEP-0060/XMPPPubSub.m b/Extensions/XEP-0060/XMPPPubSub.m index 9dfff0bbf9..b1c430a4e3 100644 --- a/Extensions/XEP-0060/XMPPPubSub.m +++ b/Extensions/XEP-0060/XMPPPubSub.m @@ -102,7 +102,17 @@ - (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq return YES; } } - } + } else { + //Check if it was a publish + NSString *elementID = [iq attributeStringValueForName:@"id"]; + if (elementID) { + NSArray * elementIDComp = [elementID componentsSeparatedByString:@":"]; + if (elementIDComp > 0 && [[elementIDComp objectAtIndex:1] isEqualToString:@"publish_node"]) { + [multicastDelegate xmppPubSub:self didPublish:iq]; + return YES; + } + } + } [multicastDelegate xmppPubSub:self didReceiveResult:iq]; return YES; @@ -365,4 +375,43 @@ - (NSString*)configureNode:(NSString*)node return sid; } +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - publication methods +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +- (NSString *)publishToNode:(NSString *)node entry:(NSXMLElement *)entry { + // + // + // + // + // Some content + // + // + // + // + + NSString *sid = [NSString stringWithFormat:@"%@:publish_node", xmppStream.generateUUID]; + + //create iq message + XMPPIQ *iq = [XMPPIQ iqWithType:@"set" to:serviceJID elementID:sid]; + + //create child nodes + NSXMLElement * pubsub = [NSXMLElement elementWithName:@"pubsub" xmlns:NS_PUBSUB]; + + NSXMLElement * publish = [NSXMLElement elementWithName:@"publish"]; + [publish addAttributeWithName:@"node" stringValue:node]; + + NSXMLElement * item = [NSXMLElement elementWithName:@"item"]; + + //create node hierarchy + [item addChild:entry]; + [publish addChild:item]; + [pubsub addChild:publish]; + [iq addChild:pubsub]; + + [xmppStream sendElement:iq]; + + return sid; +} + @end