Skip to content

Commit 6dcc325

Browse files
Merge pull request robbiehanson#927 from pwetrifork/mam-targeted-queries
Allow targeted MAM queries
2 parents 2136791 + 242f056 commit 6dcc325

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

Extensions/XEP-0313/XMPPMessageArchiveManagement.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
}
1818

1919
- (void)retrieveMessageArchiveWithFields:(NSArray *)fields withResultSet:(XMPPResultSet *)resultSet;
20+
- (void)retrieveMessageArchiveAt:(XMPPJID *)archiveJID withFields:(NSArray *)fields withResultSet:(XMPPResultSet *)resultSet;
2021
- (void)retrieveFormFields;
2122
+ (NSXMLElement *)fieldWithVar:(NSString *)var type:(NSString *)type andValue:(NSString *)value;
2223

Extensions/XEP-0313/XMPPMessageArchiveManagement.m

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,18 @@ @interface XMPPMessageArchiveManagement()
2020
@implementation XMPPMessageArchiveManagement
2121

2222
- (void)retrieveMessageArchiveWithFields:(NSArray *)fields withResultSet:(XMPPResultSet *)resultSet {
23+
[self retrieveMessageArchiveAt:nil withFields:fields withResultSet:resultSet];
24+
}
25+
26+
- (void)retrieveMessageArchiveAt:(XMPPJID *)archiveJID withFields:(NSArray *)fields withResultSet:(XMPPResultSet *)resultSet {
2327
dispatch_block_t block = ^{
2428

2529
XMPPIQ *iq = [XMPPIQ iqWithType:@"set"];
2630
[iq addAttributeWithName:@"id" stringValue:[XMPPStream generateUUID]];
31+
32+
if (archiveJID) {
33+
[iq addAttributeWithName:@"to" stringValue:[archiveJID full]];
34+
}
2735

2836
self.queryID = [XMPPStream generateUUID];
2937

Xcode/Testing-Shared/XMPPMessageArchiveManagementTests.m

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,30 @@ - (void)testRetriveMessageArchiveWithFields {
9292
}];
9393
}
9494

95+
- (void)testRetrieveTargetedMessageArchive {
96+
XCTestExpectation *expectation = [self expectationWithDescription:@"Handler IQ with \"to\""];
97+
98+
XMPPJID *archiveJID = [XMPPJID jidWithString:@"[email protected]"];
99+
100+
XMPPMockStream *streamTest = [[XMPPMockStream alloc] init];
101+
streamTest.elementReceived = ^void(NSXMLElement *element) {
102+
XMPPIQ *iq = [XMPPIQ iqFromElement:element];
103+
XCTAssertEqualObjects([iq to], archiveJID);
104+
105+
[expectation fulfill];
106+
};
107+
108+
XMPPMessageArchiveManagement *messageArchiveManagement = [[XMPPMessageArchiveManagement alloc] init];
109+
[messageArchiveManagement activate:streamTest];
110+
[messageArchiveManagement retrieveMessageArchiveAt:archiveJID withFields:nil withResultSet:nil];
111+
112+
[self waitForExpectationsWithTimeout:1 handler:^(NSError * _Nullable error) {
113+
if(error){
114+
XCTFail(@"Expectation Failed with error: %@", error);
115+
}
116+
}];
117+
}
118+
95119
- (void)testDelegateDidReceiveMAMMessage {
96120
self.delegateExpectation = [self expectationWithDescription:@"Delegate"];
97121

0 commit comments

Comments
 (0)