Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extract duplicate code from ARTChannel.publish methods #928

Merged
merged 1 commit into from
Dec 9, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 5 additions & 21 deletions Source/ARTChannel.m
Original file line number Diff line number Diff line change
Expand Up @@ -64,26 +64,7 @@ - (void)publish:(NSString *)name data:(id)data extras:(id<ARTJsonCompatible>)ext
}

- (void)publish:(art_nullable NSString *)name data:(art_nullable id)data extras:(id<ARTJsonCompatible>)extras callback:(art_nullable void (^)(ARTErrorInfo *__art_nullable error))callback {
NSError *error = nil;
ARTMessage *message = [[ARTMessage alloc] initWithName:name data:data];
message.extras = extras;
ARTMessage *messagesWithDataEncoded = [self encodeMessageIfNeeded:message error:&error];
if (error) {
if (callback) callback([ARTErrorInfo createFromNSError:error]);
return;
}

// Checked after encoding, so that the client can receive callback with encoding errors
if ([self exceedMaxSize:@[message]]) {
ARTErrorInfo *sizeError = [ARTErrorInfo createWithCode:40009
message:@"maximum message length exceeded"];
if (callback) {
callback(sizeError);
}
return;
}

[self internalPostMessages:messagesWithDataEncoded callback:callback];
[self publish:name message:[[ARTMessage alloc] initWithName:name data:data] extras:extras callback:callback];
}

- (void)publish:(NSString *)name data:(id)data clientId:(NSString *)clientId {
Expand All @@ -99,8 +80,11 @@ - (void)publish:(NSString *)name data:(id)data clientId:(NSString *)clientId cal
}

- (void)publish:(NSString *)name data:(id)data clientId:(NSString *)clientId extras:(id<ARTJsonCompatible>)extras callback:(void (^)(ARTErrorInfo * _Nullable))callback {
[self publish:name message:[[ARTMessage alloc] initWithName:name data:data clientId:clientId] extras:extras callback:callback];
}

- (void)publish:(NSString *)name message:(ARTMessage *)message extras:(id<ARTJsonCompatible>)extras callback:(void (^)(ARTErrorInfo * _Nullable))callback {
NSError *error = nil;
ARTMessage *message = [[ARTMessage alloc] initWithName:name data:data clientId:clientId];
message.extras = extras;
ARTMessage *messagesWithDataEncoded = [self encodeMessageIfNeeded:message error:&error];
if (error) {
Expand Down