#import "XMPPTransports.h"
#import "XMPP.h"
#if ! __has_feature(objc_arc)
#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
#endif
@implementation XMPPTransports
@synthesize xmppStream;
- (id)initWithStream:(XMPPStream *)stream
{
if ((self = [super init]))
{
xmppStream = stream;
}
return self;
}
/**
* Registration process
* @see: http://www.xmpp.org/extensions/xep-0100.html#usecases-jabber-register-pri
**/
- (void)queryGatewayDiscoveryIdentityForLegacyService:(NSString *)service
{
XMPPJID *myJID = xmppStream.myJID;
NSString *toValue = [NSString stringWithFormat:@"%@.%@", service, [myJID domain]];
//
//
//
NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"http://jabber.org/protocol/disco#info"];
NSXMLElement *iq = [NSXMLElement elementWithName:@"iq"];
[iq addAttributeWithName:@"type" stringValue:@"get"];
[iq addAttributeWithName:@"from" stringValue:[myJID full]];
[iq addAttributeWithName:@"to" stringValue:toValue];
[iq addAttributeWithName:@"id" stringValue:@"disco1"];
[iq addChild:query];
[xmppStream sendElement:iq];
}
- (void)queryGatewayAgentInfo
{
XMPPJID *myJID = xmppStream.myJID;
//
//
//
NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"jabber:iq:agents"];
NSXMLElement *iq = [NSXMLElement elementWithName:@"iq"];
[iq addAttributeWithName:@"type" stringValue:@"get"];
[iq addAttributeWithName:@"from" stringValue:[myJID full]];
[iq addAttributeWithName:@"to" stringValue:[myJID domain]];
[iq addAttributeWithName:@"id" stringValue:@"agent1"];
[iq addChild:query];
[xmppStream sendElement:iq];
}
- (void)queryRegistrationRequirementsForLegacyService:(NSString *)service
{
XMPPJID *myJID = xmppStream.myJID;
NSString *toValue = [NSString stringWithFormat:@"%@.%@", service, [myJID domain]];
//
//
//
NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"jabber:iq:register"];
NSXMLElement *iq = [NSXMLElement elementWithName:@"iq"];
[iq addAttributeWithName:@"type" stringValue:@"get"];
[iq addAttributeWithName:@"from" stringValue:[myJID full]];
[iq addAttributeWithName:@"to" stringValue:toValue];
[iq addAttributeWithName:@"id" stringValue:@"reg1"];
[iq addChild:query];
[xmppStream sendElement:iq];
}
- (void)registerLegacyService:(NSString *)service username:(NSString *)username password:(NSString *)password
{
XMPPJID *myJID = xmppStream.myJID;
NSString *toValue = [NSString stringWithFormat:@"%@.%@", service, [myJID domain]];
//
//
// username
// password
//
//
NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"jabber:iq:register"];
[query addChild:[NSXMLElement elementWithName:@"username" stringValue:username]];
[query addChild:[NSXMLElement elementWithName:@"password" stringValue:password]];
NSXMLElement *iq = [NSXMLElement elementWithName:@"iq"];
[iq addAttributeWithName:@"type" stringValue:@"set"];
[iq addAttributeWithName:@"from" stringValue:[myJID full]];
[iq addAttributeWithName:@"to" stringValue:toValue];
[iq addAttributeWithName:@"id" stringValue:@"reg2"];
[iq addChild:query];
[xmppStream sendElement:iq];
}
/**
* Unregistration process
* @see: http://www.xmpp.org/extensions/xep-0100.html#usecases-jabber-unregister-pri
**/
- (void)unregisterLegacyService:(NSString *)service
{
XMPPJID *myJID = xmppStream.myJID;
NSString *toValue = [NSString stringWithFormat:@"%@.%@", service, [myJID domain]];
//
//
//
//
//
NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"jabber:iq:register"];
[query addChild:[NSXMLElement elementWithName:@"remove"]];
NSXMLElement *iq = [NSXMLElement elementWithName:@"iq"];
[iq addAttributeWithName:@"type" stringValue:@"set"];
[iq addAttributeWithName:@"from" stringValue:[myJID full]];
[iq addAttributeWithName:@"to" stringValue:toValue];
[iq addAttributeWithName:@"id" stringValue:@"unreg1"];
[iq addChild:query];
[xmppStream sendElement:iq];
}
@end