Index: src/Makefile ================================================================== --- src/Makefile +++ src/Makefile @@ -1,6 +1,6 @@ all: - objfw-compile --lib 0.0 -o objxmpp *.m \ + objfw-compile -Wall --lib 0.0 -o objxmpp *.m \ `pkg-config --cflags --libs libidn` clean: rm -f *.o *.so *.dylib *.dll Index: src/XMPPConnection.m ================================================================== --- src/XMPPConnection.m +++ src/XMPPConnection.m @@ -1,9 +1,12 @@ -#include #include + +#include + #import "XMPPConnection.h" #import "XMPPStanza.h" +#import "XMPPIQ.h" #define NS_BIND @"urn:ietf:params:xml:ns:xmpp-bind" #define NS_CLIENT @"jabber:client" #define NS_SASL @"urn:ietf:params:xml:ns:xmpp-sasl" #define NS_STREAM @"http://etherx.jabber.org/streams" ADDED src/XMPPIQ.h Index: src/XMPPIQ.h ================================================================== --- /dev/null +++ src/XMPPIQ.h @@ -0,0 +1,26 @@ +#import "XMPPStanza.h" + +/** + * \brief A class describing a IQ stanza + */ +@interface XMPPIQ: XMPPStanza +/** + * Creates a new XMPPIQ with a certain type and id + * + * \param type The value for the stanza's type attribute + * \param ID The value for the stanza's id attribute + * \return A new autoreleased XMPPIQ + */ ++ IQWithType: (OFString*)type + ID: (OFString*)ID; + +/** + * Initializes an already allocated XMPPIQ with a certain type and id + * + * \param type The value for the stanza's type attribute + * \param ID The value for the stanza's id attribute + * \return A initialized XMPPIQ + */ +- initWithType: (OFString*)type + ID: (OFString*)ID; +@end ADDED src/XMPPIQ.m Index: src/XMPPIQ.m ================================================================== --- /dev/null +++ src/XMPPIQ.m @@ -0,0 +1,24 @@ +#import "XMPPIQ.h" + +@implementation XMPPIQ ++ IQWithType: (OFString*)type_ + ID: (OFString*)ID_ +{ + return [[[self alloc] initWithType: type_ + ID: ID_] autorelease]; +} + +- initWithType: (OFString*)type_ + ID: (OFString*)ID_ +{ + if (!([type_ isEqual: @"get"] || + [type_ isEqual: @"set"] || + [type_ isEqual: @"result"] || + [type_ isEqual: @"error"])) + of_log(@"Invalid IQ type!"); + + return [super initWithName: @"iq" + type: type_ + ID: ID_]; +} +@end ADDED src/XMPPMessage.h Index: src/XMPPMessage.h ================================================================== --- /dev/null +++ src/XMPPMessage.h @@ -0,0 +1,82 @@ +#import "XMPPStanza.h" + +/** + * \brief A class describing a message stanza + */ +@interface XMPPMessage: XMPPStanza +{ +} + +/** + * Creates a new XMPPMessage + * + * \return A new autoreleased XMPPMessage + */ ++ message; + +/** + * Creates a new XMPPMessage with a certain id + * + * \param ID The value for the stanza's id attribute + * \return A new autoreleased XMPPMessage + */ ++ messageWithID: (OFString*)ID; + +/** + * Creates a new XMPPMessage with a certain type + * + * \param type The value for the stanza's type attribute + * \return A new autoreleased XMPPMessage + */ ++ messageWithType: (OFString*)type; + +/** + * Creates a new XMPPMessage with a certain type and id + * + * \param type The value for the stanza's type attribute + * \param ID The value for the stanza's id attribute + * \return A new autoreleased XMPPMessage + */ ++ messageWithType: (OFString*)type + ID: (OFString*)ID; + +/** + * Initializes an already allocated XMPPMessage + * + * \return A initialized XMPPMessage + */ +- init; + +/** + * Initializes an already allocated XMPPMessage with a certain id + * + * \param ID The value for the stanza's id attribute + * \return A initialized XMPPMessage + */ +- initWithID: (OFString*)ID; + +/** + * Initializes an already allocated XMPPMessage with a certain type + * + * \param type The value for the stanza's type attribute + * \return A initialized XMPPMessage + */ +- initWithType: (OFString*)type; + +/** + * Initializes an already allocated XMPPMessage with a certain type and id + * + * \param type The value for the stanza's type attribute + * \param ID The value for the stanza's id attribute + * \return A initialized XMPPMessage + */ +- initWithType: (OFString*)type + ID: (OFString*)ID; + +/** + * Adds a body element to the XMPPMessage + * + * \param body The text content of the body element + */ +- (void)addBody: (OFString*)body; +@end ADDED src/XMPPMessage.m Index: src/XMPPMessage.m ================================================================== --- /dev/null +++ src/XMPPMessage.m @@ -0,0 +1,57 @@ +#import "XMPPMessage.h" + +@implementation XMPPMessage ++ message +{ + return [[[self alloc] init] autorelease]; +} + ++ messageWithID: (OFString*)ID_ +{ + return [[[self alloc] initWithID: ID_] autorelease]; +} + ++ messageWithType: (OFString*)type_ +{ + return [[[self alloc] initWithType: type_] autorelease]; +} + ++ messageWithType: (OFString*)type_ + ID: (OFString*)ID_ +{ + return [[[self alloc] initWithType: type_ + ID: ID_] autorelease]; +} + +- init +{ + return [self initWithType: nil + ID: nil]; +} + +- initWithID: (OFString*)ID_ +{ + return [self initWithType: nil + ID: ID_]; +} + +- initWithType: (OFString*)type_ +{ + return [self initWithType: type_ + ID: nil]; +} + +- initWithType: (OFString*)type_ + ID: (OFString*)ID_ +{ + return [super initWithName: @"message" + type: type_ + ID: ID_]; +} + +- (void)addBody: (OFString*)body +{ + [self addChild: [OFXMLElement elementWithName: @"body" + stringValue: body]]; +} +@end ADDED src/XMPPPresence.h Index: src/XMPPPresence.h ================================================================== --- /dev/null +++ src/XMPPPresence.h @@ -0,0 +1,96 @@ +#import "XMPPStanza.h" + +/** + * \brief A class describing a presence stanza + */ +@interface XMPPPresence: XMPPStanza +{ +} + +/** + * Creates a new XMPPPresence + * + * \return A new autoreleased XMPPPresence + */ ++ presence; + +/** + * Creates a new XMPPPresence with a certain id + * + * \param ID The value for the stanza's id attribute + * \return A new autoreleased XMPPPresence + */ ++ presenceWithID: (OFString*)ID; + +/** + * Creates a new XMPPPresence with a certain type + * + * \param type The value for the stanza's type attribute + * \return A new autoreleased XMPPPresence + */ ++ presenceWithType: (OFString*)type; + +/** + * Creates a new XMPPPresence with a certain type and id + * + * \param type The value for the stanza's type attribute + * \param ID The value for the stanza's id attribute + * \return A new autoreleased XMPPPresence + */ ++ presenceWithType: (OFString*)type + ID: (OFString*)ID; + +/** + * Initializes an already allocated XMPPPresence + * + * \return A initialized XMPPPresence + */ +- init; + +/** + * Initializes an already allocated XMPPPresence with a certain id + * + * \param ID The value for the stanza's id attribute + * \return A initialized XMPPPresence + */ +- initWithID: (OFString*)ID; + +/** + * Initializes an already allocated XMPPPresence with a certain type + * + * \param type The value for the stanza's type attribute + * \return A initialized XMPPPresence + */ +- initWithType: (OFString*)type; + +/** + * Initializes an already allocated XMPPPresence with a certain type and id + * + * \param type The value for the stanza's type attribute + * \param ID The value for the stanza's id attribute + * \return A initialized XMPPPresence + */ +- initWithType: (OFString*)type + ID: (OFString*)ID; + +/** + * Adds a show element to the presence stanza + * + * \param show The text content of the show element + */ +- (void)addShow: (OFString*)show; + +/** + * Adds a status element to the presence stanza + * + * \param status The text content of the status element + */ +- (void)addStatus: (OFString*)status; + +/** + * Adds a priority element to the presence stanza + * + * \param priority The text content of the priority element + */ +- (void)addPriority: (int8_t)priority; +@end ADDED src/XMPPPresence.m Index: src/XMPPPresence.m ================================================================== --- /dev/null +++ src/XMPPPresence.m @@ -0,0 +1,70 @@ +#import "XMPPPresence.h" + +@implementation XMPPPresence ++ presence +{ + return [[[self alloc] init] autorelease]; +} + ++ presenceWithID: (OFString*)ID_ +{ + return [[[self alloc] initWithID: ID_] autorelease]; +} + ++ presenceWithType: (OFString*)type_ +{ + return [[[self alloc] initWithType: type_] autorelease]; +} + ++ presenceWithType: (OFString*)type_ + ID: (OFString*)ID_ +{ + return [[[self alloc] initWithType: type_ + ID: ID_] autorelease]; +} + +- init +{ + return [self initWithType: nil + ID: nil]; +} + +- initWithID: (OFString*)ID_ +{ + return [self initWithType: nil + ID: ID_]; +} + +- initWithType: (OFString*)type_ +{ + return [self initWithType: type_ + ID: nil]; +} + +- initWithType: (OFString*)type_ + ID: (OFString*)ID_ +{ + return [super initWithName: @"presence" + type: type_ + ID: ID_]; +} + +- (void)addShow: (OFString*)show +{ + [self addChild: [OFXMLElement elementWithName: @"show" + stringValue: show]]; +} + +- (void)addStatus: (OFString*)status +{ + [self addChild: [OFXMLElement elementWithName: @"status" + stringValue: status]]; +} + +- (void)addPriority: (int8_t)priority +{ + OFString* prio = [OFString stringWithFormat: @"%" @PRId8, priority]; + [self addChild: [OFXMLElement elementWithName: @"priority" + stringValue: prio]]; +} +@end Index: src/XMPPStanza.h ================================================================== --- src/XMPPStanza.h +++ src/XMPPStanza.h @@ -125,209 +125,5 @@ * \param elem The element to base the XMPPStanza on * \return A initialized XMPPStanza */ - initWithElement: (OFXMLElement*)elem; @end - -/** - * \brief A class describing a IQ stanza - */ -@interface XMPPIQ: XMPPStanza -{ -} - -/** - * Creates a new XMPPIQ with a certain type and id - * - * \param type The value for the stanza's type attribute - * \param ID The value for the stanza's id attribute - * \return A new autoreleased XMPPIQ - */ -+ IQWithType: (OFString*)type - ID: (OFString*)ID; - -/** - * Initializes an already allocated XMPPIQ with a certain type and id - * - * \param type The value for the stanza's type attribute - * \param ID The value for the stanza's id attribute - * \return A initialized XMPPIQ - */ -- initWithType: (OFString*)type - ID: (OFString*)ID; -@end - -/** - * \brief A class describing a message stanza - */ -@interface XMPPMessage: XMPPStanza -{ -} - -/** - * Creates a new XMPPMessage - * - * \return A new autoreleased XMPPMessage - */ -+ message; - -/** - * Creates a new XMPPMessage with a certain id - * - * \param ID The value for the stanza's id attribute - * \return A new autoreleased XMPPMessage - */ -+ messageWithID: (OFString*)ID; - -/** - * Creates a new XMPPMessage with a certain type - * - * \param type The value for the stanza's type attribute - * \return A new autoreleased XMPPMessage - */ -+ messageWithType: (OFString*)type; - -/** - * Creates a new XMPPMessage with a certain type and id - * - * \param type The value for the stanza's type attribute - * \param ID The value for the stanza's id attribute - * \return A new autoreleased XMPPMessage - */ -+ messageWithType: (OFString*)type - ID: (OFString*)ID; - -/** - * Initializes an already allocated XMPPMessage - * - * \return A initialized XMPPMessage - */ -- init; - -/** - * Initializes an already allocated XMPPMessage with a certain id - * - * \param ID The value for the stanza's id attribute - * \return A initialized XMPPMessage - */ -- initWithID: (OFString*)ID; - -/** - * Initializes an already allocated XMPPMessage with a certain type - * - * \param type The value for the stanza's type attribute - * \return A initialized XMPPMessage - */ -- initWithType: (OFString*)type; - -/** - * Initializes an already allocated XMPPMessage with a certain type and id - * - * \param type The value for the stanza's type attribute - * \param ID The value for the stanza's id attribute - * \return A initialized XMPPMessage - */ -- initWithType: (OFString*)type - ID: (OFString*)ID; - -/** - * Adds a body element to the XMPPMessage - * - * \param body The text content of the body element - */ -- (void)addBody: (OFString*)body; -@end - -/** - * \brief A class describing a presence stanza - */ -@interface XMPPPresence: XMPPStanza -{ -} - -/** - * Creates a new XMPPPresence - * - * \return A new autoreleased XMPPPresence - */ -+ presence; - -/** - * Creates a new XMPPPresence with a certain id - * - * \param ID The value for the stanza's id attribute - * \return A new autoreleased XMPPPresence - */ -+ presenceWithID: (OFString*)ID; - -/** - * Creates a new XMPPPresence with a certain type - * - * \param type The value for the stanza's type attribute - * \return A new autoreleased XMPPPresence - */ -+ presenceWithType: (OFString*)type; - -/** - * Creates a new XMPPPresence with a certain type and id - * - * \param type The value for the stanza's type attribute - * \param ID The value for the stanza's id attribute - * \return A new autoreleased XMPPPresence - */ -+ presenceWithType: (OFString*)type - ID: (OFString*)ID; - -/** - * Initializes an already allocated XMPPPresence - * - * \return A initialized XMPPPresence - */ -- init; - -/** - * Initializes an already allocated XMPPPresence with a certain id - * - * \param ID The value for the stanza's id attribute - * \return A initialized XMPPPresence - */ -- initWithID: (OFString*)ID; - -/** - * Initializes an already allocated XMPPPresence with a certain type - * - * \param type The value for the stanza's type attribute - * \return A initialized XMPPPresence - */ -- initWithType: (OFString*)type; - -/** - * Initializes an already allocated XMPPPresence with a certain type and id - * - * \param type The value for the stanza's type attribute - * \param ID The value for the stanza's id attribute - * \return A initialized XMPPPresence - */ -- initWithType: (OFString*)type - ID: (OFString*)ID; - -/** - * Adds a show element to the presence stanza - * - * \param show The text content of the show element - */ -- (void)addShow: (OFString*)show; - -/** - * Adds a status element to the presence stanza - * - * \param status The text content of the status element - */ -- (void)addStatus: (OFString*)status; - -/** - * Adds a priority element to the presence stanza - * - * \param priority The text content of the priority element - */ -- (void)addPriority: (int8_t)priority; -@end Index: src/XMPPStanza.m ================================================================== --- src/XMPPStanza.m +++ src/XMPPStanza.m @@ -149,154 +149,6 @@ ID = [ID_ copy]; [old release]; [self addAttributeWithName: @"id" stringValue: ID]; } -@end - -@implementation XMPPIQ -+ IQWithType: (OFString*)type_ - ID: (OFString*)ID_ -{ - return [[[self alloc] initWithType: type_ - ID: ID_] autorelease]; -} - -- initWithType: (OFString*)type_ - ID: (OFString*)ID_ -{ - if (!([type_ isEqual: @"get"] || - [type_ isEqual: @"set"] || - [type_ isEqual: @"result"] || - [type_ isEqual: @"error"])) - of_log(@"Invalid IQ type!"); - - return [super initWithName: @"iq" - type: type_ - ID: ID_]; -} -@end - -@implementation XMPPMessage -+ message -{ - return [[[self alloc] init] autorelease]; -} - -+ messageWithID: (OFString*)ID_ -{ - return [[[self alloc] initWithID: ID_] autorelease]; -} - -+ messageWithType: (OFString*)type_ -{ - return [[[self alloc] initWithType: type_] autorelease]; -} - -+ messageWithType: (OFString*)type_ - ID: (OFString*)ID_ -{ - return [[[self alloc] initWithType: type_ - ID: ID_] autorelease]; -} - -- init -{ - return [self initWithType: nil - ID: nil]; -} - -- initWithID: (OFString*)ID_ -{ - return [self initWithType: nil - ID: ID_]; -} - -- initWithType: (OFString*)type_ -{ - return [self initWithType: type_ - ID: nil]; -} - -- initWithType: (OFString*)type_ - ID: (OFString*)ID_ -{ - return [super initWithName: @"message" - type: type_ - ID: ID_]; -} - -- (void)addBody: (OFString*)body -{ - [self addChild: [OFXMLElement elementWithName: @"body" - stringValue: body]]; -} -@end - -@implementation XMPPPresence -+ presence -{ - return [[[self alloc] init] autorelease]; -} - -+ presenceWithID: (OFString*)ID_ -{ - return [[[self alloc] initWithID: ID_] autorelease]; -} - -+ presenceWithType: (OFString*)type_ -{ - return [[[self alloc] initWithType: type_] autorelease]; -} - -+ presenceWithType: (OFString*)type_ - ID: (OFString*)ID_ -{ - return [[[self alloc] initWithType: type_ - ID: ID_] autorelease]; -} - -- init -{ - return [self initWithType: nil - ID: nil]; -} - -- initWithID: (OFString*)ID_ -{ - return [self initWithType: nil - ID: ID_]; -} - -- initWithType: (OFString*)type_ -{ - return [self initWithType: type_ - ID: nil]; -} - -- initWithType: (OFString*)type_ - ID: (OFString*)ID_ -{ - return [super initWithName: @"presence" - type: type_ - ID: ID_]; -} - -- (void)addShow: (OFString*)show -{ - [self addChild: [OFXMLElement elementWithName: @"show" - stringValue: show]]; -} - -- (void)addStatus: (OFString*)status -{ - [self addChild: [OFXMLElement elementWithName: @"status" - stringValue: status]]; -} - -- (void)addPriority: (int8_t)priority -{ - OFString* prio = [OFString stringWithFormat: @"%" @PRId8, priority]; - [self addChild: [OFXMLElement elementWithName: @"priority" - stringValue: prio]]; -} @end Index: tests/Makefile ================================================================== --- tests/Makefile +++ tests/Makefile @@ -1,5 +1,5 @@ all: - objfw-compile -o tests *.m -I../src -L../src -lobjxmpp + objfw-compile -Wall -o tests *.m -I../src -L../src -lobjxmpp clean: rm -f tests *.o