88 lines
2.1 KiB
Objective-C
88 lines
2.1 KiB
Objective-C
#import "NSXMLElement+XEP_0335.h"
|
|
#import "NSXMLElement+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
|
|
|
|
#define XEP_0335_NAME @"json"
|
|
#define XEP_0335_XMLNS @"urn:xmpp:json:0"
|
|
|
|
@implementation NSXMLElement (XEP_0335)
|
|
|
|
- (NSXMLElement *)JSONContainer
|
|
{
|
|
if([self isJSONContainer])
|
|
{
|
|
return self;
|
|
}
|
|
else
|
|
{
|
|
return [self elementForName:XEP_0335_NAME xmlns:XEP_0335_XMLNS];
|
|
}
|
|
}
|
|
|
|
- (BOOL)isJSONContainer
|
|
{
|
|
if([[self name] isEqualToString:XEP_0335_NAME] && [[self xmlns] isEqualToString:XEP_0335_XMLNS])
|
|
{
|
|
return YES;
|
|
}
|
|
else
|
|
{
|
|
return NO;
|
|
}
|
|
}
|
|
|
|
- (BOOL)hasJSONContainer
|
|
{
|
|
return [self elementForName:XEP_0335_NAME xmlns:XEP_0335_XMLNS] != nil;
|
|
}
|
|
|
|
- (NSString *)JSONContainerString
|
|
{
|
|
return [[self JSONContainer] stringValue];
|
|
}
|
|
|
|
- (NSData *)JSONContainerData
|
|
{
|
|
NSString *JSONContainerString = [self JSONContainerString];
|
|
return [JSONContainerString dataUsingEncoding:NSUTF8StringEncoding];
|
|
}
|
|
|
|
- (id)JSONContainerObject
|
|
{
|
|
NSData *JSONData = [self JSONContainerData];
|
|
return [NSJSONSerialization JSONObjectWithData:JSONData options:0 error:nil];
|
|
}
|
|
|
|
- (void)addJSONContainerWithString:(NSString *)JSONContainerString
|
|
{
|
|
if([JSONContainerString length])
|
|
{
|
|
NSXMLElement *container = [NSXMLElement elementWithName:XEP_0335_NAME xmlns:XEP_0335_XMLNS];
|
|
[container setStringValue:JSONContainerString];
|
|
[self addChild:container];
|
|
}
|
|
}
|
|
|
|
- (void)addJSONContainerWithData:(NSData *)JSONContainerData
|
|
{
|
|
if([JSONContainerData length])
|
|
{
|
|
NSString *JSONContainerString = [[NSString alloc] initWithData:JSONContainerData encoding:NSUTF8StringEncoding];
|
|
[self addJSONContainerWithString:JSONContainerString];
|
|
}
|
|
}
|
|
|
|
- (void)addJSONContainerWithObject:(id)JSONContainerObject
|
|
{
|
|
if([NSJSONSerialization isValidJSONObject:JSONContainerObject])
|
|
{
|
|
NSData *JSONContainerData = [NSJSONSerialization dataWithJSONObject:JSONContainerObject options:0 error:nil];
|
|
[self addJSONContainerWithData:JSONContainerData];
|
|
}
|
|
}
|
|
|
|
@end
|