PNXMPPFramework/Extensions/XEP-0297/NSXMLElement+XEP_0297.m
2016-02-24 16:56:39 +01:00

139 lines
2.5 KiB
Objective-C

#import "NSXMLElement+XEP_0297.h"
#import "NSXMLElement+XMPP.h"
#import "NSXMLElement+XEP_0203.h"
#import "XMPPIQ.h"
#import "XMPPMessage.h"
#import "XMPPPresence.h"
#if ! __has_feature(objc_arc)
#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
#endif
#define NAME_XMPP_STANZA_FORWARDING @"forwarded"
#define XMLNS_XMPP_STANZA_FORWARDING @"urn:xmpp:forward:0"
@implementation NSXMLElement (XEP_0297)
#pragma mark Forwarded Stanza
- (NSXMLElement *)forwardedStanza
{
return [self elementForName:NAME_XMPP_STANZA_FORWARDING xmlns:XMLNS_XMPP_STANZA_FORWARDING];
}
- (BOOL)hasForwardedStanza
{
if([self forwardedStanza])
{
return YES;
}
else
{
return NO;
}
}
- (BOOL)isForwardedStanza
{
if([[self name] isEqualToString:NAME_XMPP_STANZA_FORWARDING] && [[self xmlns] isEqualToString:XMLNS_XMPP_STANZA_FORWARDING])
{
return YES;
}
else
{
return NO;
}
}
#pragma mark Delayed Delivery Date
- (NSDate *)forwardedStanzaDelayedDeliveryDate
{
if([self isForwardedStanza])
{
return [self delayedDeliveryDate];
}
else
{
return [[self forwardedStanza] delayedDeliveryDate];
}
}
#pragma mark XMPPElement
- (XMPPIQ *)forwardedIQ
{
if([self isForwardedStanza])
{
return [XMPPIQ iqFromElement:[self elementForName:@"iq"]];
}
else
{
return [XMPPIQ iqFromElement:[[self forwardedStanza] elementForName:@"iq"]];
}
}
- (BOOL)hasForwardedIQ
{
if([self forwardedIQ])
{
return YES;
}
else
{
return NO;
}
}
- (XMPPMessage *)forwardedMessage
{
if([self isForwardedStanza])
{
return [XMPPMessage messageFromElement:[self elementForName:@"message"]];
}
else
{
return [XMPPMessage messageFromElement:[[self forwardedStanza] elementForName:@"message"]];
}
}
- (BOOL)hasForwardedMessage
{
if([self forwardedMessage])
{
return YES;
}
else
{
return NO;
}
}
- (XMPPPresence *)forwardedPresence
{
if([self isForwardedStanza])
{
return [XMPPPresence presenceFromElement:[self elementForName:@"presence"]];
}
else
{
return [XMPPPresence presenceFromElement:[[self forwardedStanza] elementForName:@"presence"]];
}
}
- (BOOL)hasForwardedPresence
{
if([self forwardedPresence])
{
return YES;
}
else
{
return NO;
}
}
@end