From f814157a9e5ffd29cb36fbe2576d8bb4ead35fd6 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 1 Aug 2018 10:45:21 -0400 Subject: [PATCH] Code generate Swift wrappers for protocol buffers. --- Scripts/ProtoWrappers.py | 25 +- Signal/src/Jobs/MessageFetcherJob.swift | 22 +- .../ViewControllers/DebugUI/DebugUIMessages.m | 30 +- Signal/test/SSKTests/SSKEnvelopeTest.swift | 12 +- .../Messages/Interactions/TSErrorMessage.h | 10 +- .../Messages/Interactions/TSErrorMessage.m | 10 +- ...SInvalidIdentityKeyReceivingErrorMessage.h | 4 +- ...SInvalidIdentityKeyReceivingErrorMessage.m | 16 +- .../src/Messages/OWSBatchMessageProcessor.h | 2 +- .../src/Messages/OWSBatchMessageProcessor.m | 10 +- .../src/Messages/OWSMessageDecrypter.h | 4 +- .../src/Messages/OWSMessageDecrypter.m | 24 +- .../src/Messages/OWSMessageHandler.h | 8 +- .../src/Messages/OWSMessageHandler.m | 16 +- .../src/Messages/OWSMessageManager.h | 4 +- .../src/Messages/OWSMessageManager.m | 49 +- .../src/Messages/OWSMessageReceiver.m | 8 +- .../src/Protos/Generated/SSKProto.swift | 2524 +++++++++-------- .../Protos/ProtoWrappers/SSKEnvelope.swift | 149 - 19 files changed, 1395 insertions(+), 1532 deletions(-) delete mode 100644 SignalServiceKit/src/Protos/ProtoWrappers/SSKEnvelope.swift diff --git a/Scripts/ProtoWrappers.py b/Scripts/ProtoWrappers.py index 32cde58ed..1b92be463 100755 --- a/Scripts/ProtoWrappers.py +++ b/Scripts/ProtoWrappers.py @@ -109,7 +109,7 @@ class BaseContext(object): def derive_swift_name(self): names = self.inherited_proto_names() - return self.args.wrapper_prefix + '_'.join(names) + return self.args.wrapper_prefix + ''.join(names) def derive_wrapped_swift_name(self): names = self.inherited_proto_names() @@ -275,6 +275,11 @@ class FileContext(BaseContext): import Foundation ''') + writer.extend(''' +// WARNING: This code is generated. Only edit within the markers. +'''.strip()) + writer.newline() + writer.invalid_protobuf_error_name = '%sError' % self.args.wrapper_prefix writer.extend((''' public enum %s: Error { @@ -329,6 +334,9 @@ class MessageContext(BaseContext): child.prepare() def generate(self, writer): + for child in self.messages: + child.generate(writer) + writer.add('// MARK: - %s' % self.swift_name) writer.newline() @@ -337,7 +345,7 @@ class MessageContext(BaseContext): writer.push_context(self.proto_name, self.swift_name) - for child in self.children(): + for child in self.enums: child.generate(writer) # Prepare fields @@ -431,10 +439,11 @@ public func serializedData() throws -> Data { writer.newline() # Preserve existing validation logic. - validation_block = args.validation_map[self.swift_name] - if validation_block: - writer.add_raw(validation_block) - writer.newline() + if self.swift_name in args.validation_map: + validation_block = args.validation_map[self.swift_name] + if validation_block: + writer.add_raw(validation_block) + writer.newline() writer.add('// MARK: - End Validation Logic for %s -' % self.swift_name) writer.newline() @@ -577,10 +586,8 @@ class EnumContext(BaseContext): writer.add('private class func %sWrap(_ value: %s) -> %s {' % ( self.swift_name, wrapped_swift_name, self.swift_name, ) ) writer.push_indent() writer.add('switch value {') - writer.push_indent() for case_name, case_index in self.case_pairs(): writer.add('case .%s: return .%s' % (case_name, case_name,)) - writer.pop_indent() writer.add('}') writer.pop_indent() writer.add('}') @@ -588,10 +595,8 @@ class EnumContext(BaseContext): writer.add('private class func %sUnwrap(_ value: %s) -> %s {' % ( self.swift_name, self.swift_name, wrapped_swift_name, ) ) writer.push_indent() writer.add('switch value {') - writer.push_indent() for case_name, case_index in self.case_pairs(): writer.add('case .%s: return .%s' % (case_name, case_name,)) - writer.pop_indent() writer.add('}') writer.pop_indent() writer.add('}') diff --git a/Signal/src/Jobs/MessageFetcherJob.swift b/Signal/src/Jobs/MessageFetcherJob.swift index 8db9af128..ce010e422 100644 --- a/Signal/src/Jobs/MessageFetcherJob.swift +++ b/Signal/src/Jobs/MessageFetcherJob.swift @@ -38,7 +38,7 @@ public class MessageFetcherJob: NSObject { Logger.info("\(self.logTag) fetching messages via REST.") - let promise = self.fetchUndeliveredMessages().then { (envelopes: [SSKEnvelope], more: Bool) -> Promise in + let promise = self.fetchUndeliveredMessages().then { (envelopes: [SSKProtoEnvelope], more: Bool) -> Promise in for envelope in envelopes { Logger.info("\(self.logTag) received envelope.") do { @@ -85,7 +85,7 @@ public class MessageFetcherJob: NSObject { timer = nil } - private func parseMessagesResponse(responseObject: Any?) -> (envelopes: [SSKEnvelope], more: Bool)? { + private func parseMessagesResponse(responseObject: Any?) -> (envelopes: [SSKProtoEnvelope], more: Bool)? { guard let responseObject = responseObject else { Logger.error("\(self.logTag) response object was surpringly nil") return nil @@ -110,7 +110,7 @@ public class MessageFetcherJob: NSObject { } }() - let envelopes: [SSKEnvelope] = messageDicts.compactMap { buildEnvelope(messageDict: $0) } + let envelopes: [SSKProtoEnvelope] = messageDicts.compactMap { buildEnvelope(messageDict: $0) } return ( envelopes: envelopes, @@ -118,12 +118,12 @@ public class MessageFetcherJob: NSObject { ) } - private func buildEnvelope(messageDict: [String: Any]) -> SSKEnvelope? { + private func buildEnvelope(messageDict: [String: Any]) -> SSKProtoEnvelope? { do { let params = ParamParser(dictionary: messageDict) let typeInt: Int32 = try params.required(key: "type") - guard let type: SSKEnvelope.SSKEnvelopeType = SSKEnvelope.SSKEnvelopeType(rawValue: typeInt) else { + guard let type: SSKProtoEnvelope.SSKProtoEnvelopeType = SSKProtoEnvelope.SSKProtoEnvelopeType(rawValue: typeInt) else { Logger.error("\(self.logTag) `typeInt` was invalid: \(typeInt)") throw ParamParser.ParseError.invalidFormat("type") } @@ -134,14 +134,14 @@ public class MessageFetcherJob: NSObject { let legacyMessage: Data? = try params.optionalBase64EncodedData(key: "message") let content: Data? = try params.optionalBase64EncodedData(key: "content") - return SSKEnvelope(timestamp: UInt64(timestamp), source: source, sourceDevice: sourceDevice, type: type, content: content, legacyMessage: legacyMessage) + return SSKProtoEnvelope(type: type, relay: nil, source: source, timestamp: UInt64(timestamp), sourceDevice: sourceDevice, legacyMessage: legacyMessage, content: content) } catch { owsFail("\(self.logTag) in \(#function) error building envelope: \(error)") return nil } } - private func fetchUndeliveredMessages() -> Promise<(envelopes: [SSKEnvelope], more: Bool)> { + private func fetchUndeliveredMessages() -> Promise<(envelopes: [SSKProtoEnvelope], more: Bool)> { return Promise { fulfill, reject in let request = OWSRequestFactory.getMessagesRequest() self.networkManager.makeRequest( @@ -165,8 +165,12 @@ public class MessageFetcherJob: NSObject { } } - private func acknowledgeDelivery(envelope: SSKEnvelope) { - let request = OWSRequestFactory.acknowledgeMessageDeliveryRequest(withSource: envelope.source, timestamp: envelope.timestamp) + private func acknowledgeDelivery(envelope: SSKProtoEnvelope) { + guard let source = envelope.source else { + Logger.error("\(self.logTag) envelope missing source.") + return + } + let request = OWSRequestFactory.acknowledgeMessageDeliveryRequest(withSource: source, timestamp: envelope.timestamp) self.networkManager.makeRequest(request, success: { (_: URLSessionDataTask?, _: Any?) -> Void in Logger.debug("\(self.logTag) acknowledged delivery for message at timestamp: \(envelope.timestamp)") diff --git a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m index 7648b91c8..24f8ed289 100644 --- a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m +++ b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m @@ -3372,7 +3372,7 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac completion:nil]; } -+ (SSKEnvelope *)createEnvelopeForThread:(TSThread *)thread ++ (SSKProtoEnvelope *)createEnvelopeForThread:(TSThread *)thread { OWSAssert(thread); @@ -3390,13 +3390,14 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac } }(); - SSKEnvelope *envelope = [[SSKEnvelope alloc] initWithTimestamp:timestamp - source:source - sourceDevice:1 - type:SSKEnvelopeTypeCiphertext - content:nil - legacyMessage:nil]; + SSKProtoEnvelope *envelope = [[SSKProtoEnvelope alloc] initWithType:SSKProtoEnvelopeTypeCiphertext + relay:nil + source:source + timestamp:timestamp + sourceDevice:1 + legacyMessage:nil + content:nil]; return envelope; } @@ -3886,15 +3887,16 @@ typedef OWSContact * (^OWSContactBlock)(YapDatabaseReadWriteTransaction *transac uint64_t timestamp = [NSDate ows_millisecondTimeStamp]; NSString *source = recipientId; uint32_t sourceDevice = 1; - SSKEnvelopeType envelopeType = SSKEnvelopeTypeCiphertext; + SSKProtoEnvelopeType envelopeType = SSKProtoEnvelopeTypeCiphertext; NSData *content = plaintextData; - SSKEnvelope *envelope = [[SSKEnvelope alloc] initWithTimestamp:timestamp - source:source - sourceDevice:sourceDevice - type:envelopeType - content:content - legacyMessage:nil]; + SSKProtoEnvelope *envelope = [[SSKProtoEnvelope alloc] initWithType:envelopeType + relay:nil + source:source + timestamp:timestamp + sourceDevice:sourceDevice + legacyMessage:nil + content:content]; NSError *error; NSData *_Nullable envelopeData = [envelope serializedDataAndReturnError:&error]; diff --git a/Signal/test/SSKTests/SSKEnvelopeTest.swift b/Signal/test/SSKTests/SSKEnvelopeTest.swift index fa1aff2f9..f3945b045 100644 --- a/Signal/test/SSKTests/SSKEnvelopeTest.swift +++ b/Signal/test/SSKTests/SSKEnvelopeTest.swift @@ -7,7 +7,7 @@ import XCTest import SignalServiceKit import SwiftProtobuf -class SSKEnvelopeTest: XCTestCase { +class SSKProtoEnvelopeTest: XCTestCase { override func setUp() { super.setUp() @@ -21,12 +21,12 @@ class SSKEnvelopeTest: XCTestCase { func testParse_EmptyData() { let data = Data() - XCTAssertThrowsError(try SSKEnvelope(serializedData: data)) + XCTAssertThrowsError(try SSKProtoEnvelope(serializedData: data)) } func testParse_UnparseableData() { let data = "asdf".data(using: .utf8)! - XCTAssertThrowsError(try SSKEnvelope(serializedData: data)) { error in + XCTAssertThrowsError(try SSKProtoEnvelope(serializedData: data)) { error in XCTAssert(error is SwiftProtobuf.BinaryDecodingError) } } @@ -42,7 +42,7 @@ class SSKEnvelopeTest: XCTestCase { let encodedData = "CAESDCsxNTU1MTIzMTIzNCjKm4WazSw4AQ==" let data = Data(base64Encoded: encodedData)! - XCTAssertNoThrow(try SSKEnvelope(serializedData: data)) + XCTAssertNoThrow(try SSKProtoEnvelope(serializedData: data)) } func testParse_invalidData() { @@ -56,9 +56,9 @@ class SSKEnvelopeTest: XCTestCase { let encodedData = "EgwrMTU1NTEyMzEyMzQojdmOms0sOAE=" let data = Data(base64Encoded: encodedData)! - XCTAssertThrowsError(try SSKEnvelope(serializedData: data)) { (error) -> Void in + XCTAssertThrowsError(try SSKProtoEnvelope(serializedData: data)) { (error) -> Void in switch error { - case SSKEnvelope.EnvelopeError.invalidProtobuf: + case SSKProtoEnvelope.EnvelopeError.invalidProtobuf: break default: XCTFail("unexpected error: \(error)") diff --git a/SignalServiceKit/src/Messages/Interactions/TSErrorMessage.h b/SignalServiceKit/src/Messages/Interactions/TSErrorMessage.h index 031101ff7..e29a6d6ec 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSErrorMessage.h +++ b/SignalServiceKit/src/Messages/Interactions/TSErrorMessage.h @@ -7,7 +7,7 @@ NS_ASSUME_NONNULL_BEGIN -@class SSKEnvelope; +@class SSKProtoEnvelope; typedef NS_ENUM(int32_t, TSErrorMessageType) { TSErrorMessageNoSession, @@ -55,18 +55,18 @@ typedef NS_ENUM(int32_t, TSErrorMessageType) { inThread:(nullable TSThread *)thread failedMessageType:(TSErrorMessageType)errorMessageType; -+ (instancetype)corruptedMessageWithEnvelope:(SSKEnvelope *)envelope ++ (instancetype)corruptedMessageWithEnvelope:(SSKProtoEnvelope *)envelope withTransaction:(YapDatabaseReadWriteTransaction *)transaction; + (instancetype)corruptedMessageInUnknownThread; -+ (instancetype)invalidVersionWithEnvelope:(SSKEnvelope *)envelope ++ (instancetype)invalidVersionWithEnvelope:(SSKProtoEnvelope *)envelope withTransaction:(YapDatabaseReadWriteTransaction *)transaction; -+ (instancetype)invalidKeyExceptionWithEnvelope:(SSKEnvelope *)envelope ++ (instancetype)invalidKeyExceptionWithEnvelope:(SSKProtoEnvelope *)envelope withTransaction:(YapDatabaseReadWriteTransaction *)transaction; -+ (instancetype)missingSessionWithEnvelope:(SSKEnvelope *)envelope ++ (instancetype)missingSessionWithEnvelope:(SSKProtoEnvelope *)envelope withTransaction:(YapDatabaseReadWriteTransaction *)transaction; + (instancetype)nonblockingIdentityChangeInThread:(TSThread *)thread recipientId:(NSString *)recipientId; diff --git a/SignalServiceKit/src/Messages/Interactions/TSErrorMessage.m b/SignalServiceKit/src/Messages/Interactions/TSErrorMessage.m index 8613f4220..f529a4cb5 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSErrorMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/TSErrorMessage.m @@ -84,7 +84,7 @@ NSUInteger TSErrorMessageSchemaVersion = 1; return [self initWithTimestamp:timestamp inThread:thread failedMessageType:errorMessageType recipientId:nil]; } -- (instancetype)initWithEnvelope:(SSKEnvelope *)envelope +- (instancetype)initWithEnvelope:(SSKProtoEnvelope *)envelope withTransaction:(YapDatabaseReadWriteTransaction *)transaction failedMessageType:(TSErrorMessageType)errorMessageType { @@ -146,7 +146,7 @@ NSUInteger TSErrorMessageSchemaVersion = 1; } } -+ (instancetype)corruptedMessageWithEnvelope:(SSKEnvelope *)envelope ++ (instancetype)corruptedMessageWithEnvelope:(SSKProtoEnvelope *)envelope withTransaction:(YapDatabaseReadWriteTransaction *)transaction { return [[self alloc] initWithEnvelope:envelope @@ -159,7 +159,7 @@ NSUInteger TSErrorMessageSchemaVersion = 1; return [[self alloc] initWithFailedMessageType:TSErrorMessageInvalidMessage]; } -+ (instancetype)invalidVersionWithEnvelope:(SSKEnvelope *)envelope ++ (instancetype)invalidVersionWithEnvelope:(SSKProtoEnvelope *)envelope withTransaction:(YapDatabaseReadWriteTransaction *)transaction { return [[self alloc] initWithEnvelope:envelope @@ -167,7 +167,7 @@ NSUInteger TSErrorMessageSchemaVersion = 1; failedMessageType:TSErrorMessageInvalidVersion]; } -+ (instancetype)invalidKeyExceptionWithEnvelope:(SSKEnvelope *)envelope ++ (instancetype)invalidKeyExceptionWithEnvelope:(SSKProtoEnvelope *)envelope withTransaction:(YapDatabaseReadWriteTransaction *)transaction { return [[self alloc] initWithEnvelope:envelope @@ -175,7 +175,7 @@ NSUInteger TSErrorMessageSchemaVersion = 1; failedMessageType:TSErrorMessageInvalidKeyException]; } -+ (instancetype)missingSessionWithEnvelope:(SSKEnvelope *)envelope ++ (instancetype)missingSessionWithEnvelope:(SSKProtoEnvelope *)envelope withTransaction:(YapDatabaseReadWriteTransaction *)transaction { return diff --git a/SignalServiceKit/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.h b/SignalServiceKit/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.h index d4dc75140..8aca7e224 100644 --- a/SignalServiceKit/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.h +++ b/SignalServiceKit/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.h @@ -6,13 +6,13 @@ NS_ASSUME_NONNULL_BEGIN -@class SSKEnvelope; +@class SSKProtoEnvelope; // DEPRECATED - we no longer create new instances of this class (as of mid-2017); However, existing instances may // exist, so we should keep this class around to honor their old behavior. @interface TSInvalidIdentityKeyReceivingErrorMessage : TSInvalidIdentityKeyErrorMessage -+ (nullable instancetype)untrustedKeyWithEnvelope:(SSKEnvelope *)envelope ++ (nullable instancetype)untrustedKeyWithEnvelope:(SSKProtoEnvelope *)envelope withTransaction:(YapDatabaseReadWriteTransaction *)transaction; @end diff --git a/SignalServiceKit/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.m b/SignalServiceKit/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.m index 659924e41..0a1800273 100644 --- a/SignalServiceKit/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.m +++ b/SignalServiceKit/src/Messages/InvalidKeyMessages/TSInvalidIdentityKeyReceivingErrorMessage.m @@ -28,13 +28,13 @@ NS_ASSUME_NONNULL_BEGIN @implementation TSInvalidIdentityKeyReceivingErrorMessage { // Not using a property declaration in order to exclude from DB serialization - SSKEnvelope *_Nullable _envelope; + SSKProtoEnvelope *_Nullable _envelope; } @synthesize envelopeData = _envelopeData; -+ (nullable instancetype)untrustedKeyWithEnvelope:(SSKEnvelope *)envelope - withTransaction:(YapDatabaseReadWriteTransaction *)transaction ++ (nullable instancetype)untrustedKeyWithEnvelope:(SSKProtoEnvelope *)envelope + withTransaction:(YapDatabaseReadWriteTransaction *)transaction { TSContactThread *contactThread = [TSContactThread getOrCreateThreadWithContactId:envelope.source transaction:transaction]; @@ -46,8 +46,8 @@ NS_ASSUME_NONNULL_BEGIN } - (nullable instancetype)initForUnknownIdentityKeyWithTimestamp:(uint64_t)timestamp - inThread:(TSThread *)thread - incomingEnvelope:(SSKEnvelope *)envelope + inThread:(TSThread *)thread + incomingEnvelope:(SSKProtoEnvelope *)envelope { self = [self initWithTimestamp:timestamp inThread:thread failedMessageType:TSErrorMessageWrongTrustedIdentityKey]; if (!self) { @@ -66,11 +66,11 @@ NS_ASSUME_NONNULL_BEGIN return self; } -- (nullable SSKEnvelope *)envelope +- (nullable SSKProtoEnvelope *)envelope { if (!_envelope) { NSError *error; - SSKEnvelope *_Nullable envelope = [[SSKEnvelope alloc] initWithSerializedData:self.envelopeData error:&error]; + SSKProtoEnvelope *_Nullable envelope = [SSKProtoEnvelope parseData:self.envelopeData error:&error]; if (error || envelope == nil) { OWSProdLogAndFail(@"%@ Could not parse proto: %@", self.logTag, error); } else { @@ -118,7 +118,7 @@ NS_ASSUME_NONNULL_BEGIN return nil; } - if (self.envelope.type != SSKEnvelopeTypePrekeyBundle) { + if (self.envelope.type != SSKProtoEnvelopeTypePrekeyBundle) { DDLogError(@"Refusing to attempt key extraction from an envelope which isn't a prekey bundle"); return nil; } diff --git a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.h b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.h index ee533acc6..36a46e527 100644 --- a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.h +++ b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.h @@ -5,7 +5,7 @@ NS_ASSUME_NONNULL_BEGIN @class OWSStorage; -@class SSKEnvelope; +@class SSKProtoEnvelope; @class YapDatabaseReadWriteTransaction; // This class is used to write incoming (decrypted, unprocessed) diff --git a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m index c74089bf0..e224d797c 100644 --- a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m +++ b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m @@ -40,7 +40,7 @@ NS_ASSUME_NONNULL_BEGIN - (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER; - (instancetype)initWithUniqueId:(NSString *_Nullable)uniqueId NS_UNAVAILABLE; -@property (nonatomic, readonly, nullable) SSKEnvelope *envelope; +@property (nonatomic, readonly, nullable) SSKProtoEnvelope *envelope; @end @@ -74,13 +74,13 @@ NS_ASSUME_NONNULL_BEGIN return [super initWithCoder:coder]; } -- (nullable SSKEnvelope *)envelope +- (nullable SSKProtoEnvelope *)envelope { NSError *error; - SSKEnvelope *_Nullable result = [[SSKEnvelope alloc] initWithSerializedData:self.envelopeData error:&error]; + SSKProtoEnvelope *_Nullable result = [SSKProtoEnvelope parseData:self.envelopeData error:&error]; if (error) { - OWSProdLogAndFail(@"%@ paring SSKEnvelope failed with error: %@", self.logTag, error); + OWSProdLogAndFail(@"%@ paring SSKProtoEnvelope failed with error: %@", self.logTag, error); return nil; } @@ -396,7 +396,7 @@ NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJo }; @try { - SSKEnvelope *_Nullable envelope = job.envelope; + SSKProtoEnvelope *_Nullable envelope = job.envelope; if (!envelope) { reportFailure(transaction); } else { diff --git a/SignalServiceKit/src/Messages/OWSMessageDecrypter.h b/SignalServiceKit/src/Messages/OWSMessageDecrypter.h index c037456e8..086fdae3c 100644 --- a/SignalServiceKit/src/Messages/OWSMessageDecrypter.h +++ b/SignalServiceKit/src/Messages/OWSMessageDecrypter.h @@ -6,7 +6,7 @@ NS_ASSUME_NONNULL_BEGIN -@class SSKEnvelope; +@class SSKProtoEnvelope; @class YapDatabaseReadWriteTransaction; typedef void (^DecryptSuccessBlock)(NSData *_Nullable plaintextData, YapDatabaseReadWriteTransaction *transaction); @@ -22,7 +22,7 @@ typedef void (^DecryptFailureBlock)(void); // // Exactly one of successBlock & failureBlock will be called, // once. -- (void)decryptEnvelope:(SSKEnvelope *)envelope +- (void)decryptEnvelope:(SSKProtoEnvelope *)envelope successBlock:(DecryptSuccessBlock)successBlock failureBlock:(DecryptFailureBlock)failureBlock; diff --git a/SignalServiceKit/src/Messages/OWSMessageDecrypter.m b/SignalServiceKit/src/Messages/OWSMessageDecrypter.m index 794d59414..633181db9 100644 --- a/SignalServiceKit/src/Messages/OWSMessageDecrypter.m +++ b/SignalServiceKit/src/Messages/OWSMessageDecrypter.m @@ -81,7 +81,7 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - Blocking -- (BOOL)isEnvelopeBlocked:(SSKEnvelope *)envelope +- (BOOL)isEnvelopeBlocked:(SSKProtoEnvelope *)envelope { OWSAssert(envelope); @@ -90,7 +90,7 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - Decryption -- (void)decryptEnvelope:(SSKEnvelope *)envelope +- (void)decryptEnvelope:(SSKProtoEnvelope *)envelope successBlock:(DecryptSuccessBlock)successBlockParameter failureBlock:(DecryptFailureBlock)failureBlockParameter { @@ -129,7 +129,7 @@ NS_ASSUME_NONNULL_BEGIN } switch (envelope.type) { - case SSKEnvelopeTypeCiphertext: { + case SSKProtoEnvelopeTypeCiphertext: { [self decryptSecureMessage:envelope successBlock:^(NSData *_Nullable plaintextData, YapDatabaseReadWriteTransaction *transaction) { DDLogDebug(@"%@ decrypted secure message.", self.logTag); @@ -146,7 +146,7 @@ NS_ASSUME_NONNULL_BEGIN // Return to avoid double-acknowledging. return; } - case SSKEnvelopeTypePrekeyBundle: { + case SSKProtoEnvelopeTypePrekeyBundle: { [self decryptPreKeyBundle:envelope successBlock:^(NSData *_Nullable plaintextData, YapDatabaseReadWriteTransaction *transaction) { DDLogDebug(@"%@ decrypted pre-key whisper message", self.logTag); @@ -165,9 +165,9 @@ NS_ASSUME_NONNULL_BEGIN return; } // These message types don't have a payload to decrypt. - case SSKEnvelopeTypeReceipt: - case SSKEnvelopeTypeKeyExchange: - case SSKEnvelopeTypeUnknown: { + case SSKProtoEnvelopeTypeReceipt: + case SSKProtoEnvelopeTypeKeyExchange: + case SSKProtoEnvelopeTypeUnknown: { [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { successBlock(nil, transaction); }]; @@ -193,7 +193,7 @@ NS_ASSUME_NONNULL_BEGIN failureBlock(); } -- (void)decryptSecureMessage:(SSKEnvelope *)envelope +- (void)decryptSecureMessage:(SSKProtoEnvelope *)envelope successBlock:(DecryptSuccessBlock)successBlock failureBlock:(void (^)(NSError *_Nullable error))failureBlock { @@ -210,7 +210,7 @@ NS_ASSUME_NONNULL_BEGIN failureBlock:failureBlock]; } -- (void)decryptPreKeyBundle:(SSKEnvelope *)envelope +- (void)decryptPreKeyBundle:(SSKProtoEnvelope *)envelope successBlock:(DecryptSuccessBlock)successBlock failureBlock:(void (^)(NSError *_Nullable error))failureBlock { @@ -230,7 +230,7 @@ NS_ASSUME_NONNULL_BEGIN failureBlock:failureBlock]; } -- (void)decryptEnvelope:(SSKEnvelope *)envelope +- (void)decryptEnvelope:(SSKProtoEnvelope *)envelope cipherTypeName:(NSString *)cipherTypeName cipherMessageBlock:(id (^_Nonnull)(NSData *))cipherMessageBlock successBlock:(DecryptSuccessBlock)successBlock @@ -279,7 +279,7 @@ NS_ASSUME_NONNULL_BEGIN }]; } -- (void)processException:(NSException *)exception envelope:(SSKEnvelope *)envelope +- (void)processException:(NSException *)exception envelope:(SSKProtoEnvelope *)envelope { DDLogError(@"%@ Got exception: %@ of type: %@ with reason: %@", self.logTag, @@ -326,7 +326,7 @@ NS_ASSUME_NONNULL_BEGIN } - (void)notifyUserForErrorMessage:(TSErrorMessage *)errorMessage - envelope:(SSKEnvelope *)envelope + envelope:(SSKProtoEnvelope *)envelope transaction:(YapDatabaseReadWriteTransaction *)transaction { TSThread *contactThread = [TSContactThread getOrCreateThreadWithContactId:envelope.source transaction:transaction]; diff --git a/SignalServiceKit/src/Messages/OWSMessageHandler.h b/SignalServiceKit/src/Messages/OWSMessageHandler.h index 588eb7587..07b532ff7 100644 --- a/SignalServiceKit/src/Messages/OWSMessageHandler.h +++ b/SignalServiceKit/src/Messages/OWSMessageHandler.h @@ -6,14 +6,14 @@ NS_ASSUME_NONNULL_BEGIN @class OWSSignalServiceProtosContent; @class OWSSignalServiceProtosDataMessage; -@class SSKEnvelope; +@class SSKProtoEnvelope; -NSString *envelopeAddress(SSKEnvelope *envelope); +NSString *envelopeAddress(SSKProtoEnvelope *envelope); @interface OWSMessageHandler : NSObject -- (NSString *)descriptionForEnvelopeType:(SSKEnvelope *)envelope; -- (NSString *)descriptionForEnvelope:(SSKEnvelope *)envelope; +- (NSString *)descriptionForEnvelopeType:(SSKProtoEnvelope *)envelope; +- (NSString *)descriptionForEnvelope:(SSKProtoEnvelope *)envelope; - (NSString *)descriptionForContent:(OWSSignalServiceProtosContent *)content; - (NSString *)descriptionForDataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage; diff --git a/SignalServiceKit/src/Messages/OWSMessageHandler.m b/SignalServiceKit/src/Messages/OWSMessageHandler.m index e152c0576..da3d20137 100644 --- a/SignalServiceKit/src/Messages/OWSMessageHandler.m +++ b/SignalServiceKit/src/Messages/OWSMessageHandler.m @@ -9,31 +9,31 @@ NS_ASSUME_NONNULL_BEGIN // used in log formatting -NSString *envelopeAddress(SSKEnvelope *envelope) +NSString *envelopeAddress(SSKProtoEnvelope *envelope) { return [NSString stringWithFormat:@"%@.%d", envelope.source, (unsigned int)envelope.sourceDevice]; } @implementation OWSMessageHandler -- (NSString *)descriptionForEnvelopeType:(SSKEnvelope *)envelope +- (NSString *)descriptionForEnvelopeType:(SSKProtoEnvelope *)envelope { OWSAssert(envelope != nil); switch (envelope.type) { - case SSKEnvelopeTypeReceipt: + case SSKProtoEnvelopeTypeReceipt: return @"DeliveryReceipt"; - case SSKEnvelopeTypeUnknown: + case SSKProtoEnvelopeTypeUnknown: // Shouldn't happen OWSProdFail([OWSAnalyticsEvents messageManagerErrorEnvelopeTypeUnknown]); return @"Unknown"; - case SSKEnvelopeTypeCiphertext: + case SSKProtoEnvelopeTypeCiphertext: return @"SignalEncryptedMessage"; - case SSKEnvelopeTypeKeyExchange: + case SSKProtoEnvelopeTypeKeyExchange: // Unsupported OWSProdFail([OWSAnalyticsEvents messageManagerErrorEnvelopeTypeKeyExchange]); return @"KeyExchange"; - case SSKEnvelopeTypePrekeyBundle: + case SSKProtoEnvelopeTypePrekeyBundle: return @"PreKeyEncryptedMessage"; default: // Shouldn't happen @@ -42,7 +42,7 @@ NSString *envelopeAddress(SSKEnvelope *envelope) } } -- (NSString *)descriptionForEnvelope:(SSKEnvelope *)envelope +- (NSString *)descriptionForEnvelope:(SSKProtoEnvelope *)envelope { OWSAssert(envelope != nil); diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.h b/SignalServiceKit/src/Messages/OWSMessageManager.h index 18b386a7b..5f297d773 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.h +++ b/SignalServiceKit/src/Messages/OWSMessageManager.h @@ -6,7 +6,7 @@ NS_ASSUME_NONNULL_BEGIN -@class SSKEnvelope; +@class SSKProtoEnvelope; @class TSThread; @class YapDatabaseReadWriteTransaction; @@ -16,7 +16,7 @@ NS_ASSUME_NONNULL_BEGIN + (instancetype)sharedManager; // processEnvelope: can be called from any thread. -- (void)processEnvelope:(SSKEnvelope *)envelope +- (void)processEnvelope:(SSKProtoEnvelope *)envelope plaintextData:(NSData *_Nullable)plaintextData transaction:(YapDatabaseReadWriteTransaction *)transaction; diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index db16d84bd..59eac5588 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -158,7 +158,7 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - Blocking -- (BOOL)isEnvelopeBlocked:(SSKEnvelope *)envelope +- (BOOL)isEnvelopeBlocked:(SSKProtoEnvelope *)envelope { OWSAssert(envelope); @@ -167,7 +167,7 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - message handling -- (void)processEnvelope:(SSKEnvelope *)envelope +- (void)processEnvelope:(SSKProtoEnvelope *)envelope plaintextData:(NSData *_Nullable)plaintextData transaction:(YapDatabaseReadWriteTransaction *)transaction { @@ -189,8 +189,8 @@ NS_ASSUME_NONNULL_BEGIN OWSAssert(![self isEnvelopeBlocked:envelope]); switch (envelope.type) { - case SSKEnvelopeTypeCiphertext: - case SSKEnvelopeTypePrekeyBundle: + case SSKProtoEnvelopeTypeCiphertext: + case SSKProtoEnvelopeTypePrekeyBundle: if (plaintextData) { [self handleEnvelope:envelope plaintextData:plaintextData transaction:transaction]; } else { @@ -198,15 +198,15 @@ NS_ASSUME_NONNULL_BEGIN @"%@ missing decrypted data for envelope: %@", self.logTag, [self descriptionForEnvelope:envelope]); } break; - case SSKEnvelopeTypeReceipt: + case SSKProtoEnvelopeTypeReceipt: OWSAssert(!plaintextData); [self handleDeliveryReceipt:envelope transaction:transaction]; break; // Other messages are just dismissed for now. - case SSKEnvelopeTypeKeyExchange: + case SSKProtoEnvelopeTypeKeyExchange: DDLogWarn(@"Received Key Exchange Message, not supported"); break; - case SSKEnvelopeTypeUnknown: + case SSKProtoEnvelopeTypeUnknown: DDLogWarn(@"Received an unknown message type"); break; default: @@ -215,8 +215,7 @@ NS_ASSUME_NONNULL_BEGIN } } -- (void)handleDeliveryReceipt:(SSKEnvelope *)envelope - transaction:(YapDatabaseReadWriteTransaction *)transaction +- (void)handleDeliveryReceipt:(SSKProtoEnvelope *)envelope transaction:(YapDatabaseReadWriteTransaction *)transaction { OWSAssert(envelope); OWSAssert(transaction); @@ -272,7 +271,7 @@ NS_ASSUME_NONNULL_BEGIN } } -- (void)handleEnvelope:(SSKEnvelope *)envelope +- (void)handleEnvelope:(SSKProtoEnvelope *)envelope plaintextData:(NSData *)plaintextData transaction:(YapDatabaseReadWriteTransaction *)transaction { @@ -326,7 +325,7 @@ NS_ASSUME_NONNULL_BEGIN } } -- (void)handleIncomingEnvelope:(SSKEnvelope *)envelope +- (void)handleIncomingEnvelope:(SSKProtoEnvelope *)envelope withDataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage transaction:(YapDatabaseReadWriteTransaction *)transaction { @@ -395,7 +394,7 @@ NS_ASSUME_NONNULL_BEGIN } - (void)sendGroupInfoRequest:(NSData *)groupId - envelope:(SSKEnvelope *)envelope + envelope:(SSKProtoEnvelope *)envelope transaction:(YapDatabaseReadWriteTransaction *)transaction { OWSAssert(groupId.length > 0); @@ -429,7 +428,7 @@ NS_ASSUME_NONNULL_BEGIN return [TextSecureKitEnv sharedEnv].profileManager; } -- (void)handleIncomingEnvelope:(SSKEnvelope *)envelope +- (void)handleIncomingEnvelope:(SSKProtoEnvelope *)envelope withReceiptMessage:(OWSSignalServiceProtosReceiptMessage *)receiptMessage transaction:(YapDatabaseReadWriteTransaction *)transaction { @@ -464,7 +463,7 @@ NS_ASSUME_NONNULL_BEGIN } } -- (void)handleIncomingEnvelope:(SSKEnvelope *)envelope +- (void)handleIncomingEnvelope:(SSKProtoEnvelope *)envelope withCallMessage:(OWSSignalServiceProtosCallMessage *)callMessage { OWSAssert(envelope); @@ -499,7 +498,7 @@ NS_ASSUME_NONNULL_BEGIN }); } -- (void)handleReceivedGroupAvatarUpdateWithEnvelope:(SSKEnvelope *)envelope +- (void)handleReceivedGroupAvatarUpdateWithEnvelope:(SSKProtoEnvelope *)envelope dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage transaction:(YapDatabaseReadWriteTransaction *)transaction { @@ -537,7 +536,7 @@ NS_ASSUME_NONNULL_BEGIN }]; } -- (void)handleReceivedMediaWithEnvelope:(SSKEnvelope *)envelope +- (void)handleReceivedMediaWithEnvelope:(SSKProtoEnvelope *)envelope dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage transaction:(YapDatabaseReadWriteTransaction *)transaction { @@ -585,7 +584,7 @@ NS_ASSUME_NONNULL_BEGIN }]; } -- (void)handleIncomingEnvelope:(SSKEnvelope *)envelope +- (void)handleIncomingEnvelope:(SSKProtoEnvelope *)envelope withSyncMessage:(OWSSignalServiceProtosSyncMessage *)syncMessage transaction:(YapDatabaseReadWriteTransaction *)transaction { @@ -720,7 +719,7 @@ NS_ASSUME_NONNULL_BEGIN } } -- (void)handleEndSessionMessageWithEnvelope:(SSKEnvelope *)envelope +- (void)handleEndSessionMessageWithEnvelope:(SSKProtoEnvelope *)envelope dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage transaction:(YapDatabaseReadWriteTransaction *)transaction { @@ -737,7 +736,7 @@ NS_ASSUME_NONNULL_BEGIN [self.primaryStorage deleteAllSessionsForContact:envelope.source protocolContext:transaction]; } -- (void)handleExpirationTimerUpdateMessageWithEnvelope:(SSKEnvelope *)envelope +- (void)handleExpirationTimerUpdateMessageWithEnvelope:(SSKProtoEnvelope *)envelope dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage transaction:(YapDatabaseReadWriteTransaction *)transaction { @@ -780,7 +779,7 @@ NS_ASSUME_NONNULL_BEGIN [message saveWithTransaction:transaction]; } -- (void)handleProfileKeyMessageWithEnvelope:(SSKEnvelope *)envelope +- (void)handleProfileKeyMessageWithEnvelope:(SSKProtoEnvelope *)envelope dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage { OWSAssert(envelope); @@ -805,7 +804,7 @@ NS_ASSUME_NONNULL_BEGIN [profileManager setProfileKeyData:profileKey forRecipientId:recipientId]; } -- (void)handleReceivedTextMessageWithEnvelope:(SSKEnvelope *)envelope +- (void)handleReceivedTextMessageWithEnvelope:(SSKProtoEnvelope *)envelope dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage transaction:(YapDatabaseReadWriteTransaction *)transaction { @@ -845,7 +844,7 @@ NS_ASSUME_NONNULL_BEGIN } } -- (void)handleGroupInfoRequest:(SSKEnvelope *)envelope +- (void)handleGroupInfoRequest:(SSKProtoEnvelope *)envelope dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage transaction:(YapDatabaseReadWriteTransaction *)transaction { @@ -901,7 +900,7 @@ NS_ASSUME_NONNULL_BEGIN [self sendGroupUpdateForThread:gThread message:message]; } -- (TSIncomingMessage *_Nullable)handleReceivedEnvelope:(SSKEnvelope *)envelope +- (TSIncomingMessage *_Nullable)handleReceivedEnvelope:(SSKProtoEnvelope *)envelope withDataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage attachmentIds:(NSArray *)attachmentIds transaction:(YapDatabaseReadWriteTransaction *)transaction @@ -1083,7 +1082,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)finalizeIncomingMessage:(TSIncomingMessage *)incomingMessage thread:(TSThread *)thread - envelope:(SSKEnvelope *)envelope + envelope:(SSKProtoEnvelope *)envelope transaction:(YapDatabaseReadWriteTransaction *)transaction { OWSAssert(thread); @@ -1203,7 +1202,7 @@ NS_ASSUME_NONNULL_BEGIN * Group or Contact thread for message, creating a new contact thread if necessary, * but never creating a new group thread. */ -- (nullable TSThread *)threadForEnvelope:(SSKEnvelope *)envelope +- (nullable TSThread *)threadForEnvelope:(SSKProtoEnvelope *)envelope dataMessage:(OWSSignalServiceProtosDataMessage *)dataMessage transaction:(YapDatabaseReadWriteTransaction *)transaction { diff --git a/SignalServiceKit/src/Messages/OWSMessageReceiver.m b/SignalServiceKit/src/Messages/OWSMessageReceiver.m index fae06d88d..cbf7c75db 100644 --- a/SignalServiceKit/src/Messages/OWSMessageReceiver.m +++ b/SignalServiceKit/src/Messages/OWSMessageReceiver.m @@ -31,7 +31,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, readonly) NSDate *createdAt; @property (nonatomic, readonly) NSData *envelopeData; -@property (nonatomic, readonly, nullable) SSKEnvelope *envelopeProto; +@property (nonatomic, readonly, nullable) SSKProtoEnvelope *envelopeProto; - (instancetype)initWithEnvelopeData:(NSData *)envelopeData NS_DESIGNATED_INITIALIZER; - (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER; @@ -68,10 +68,10 @@ NS_ASSUME_NONNULL_BEGIN return [super initWithCoder:coder]; } -- (nullable SSKEnvelope *)envelopeProto +- (nullable SSKProtoEnvelope *)envelopeProto { NSError *error; - SSKEnvelope *_Nullable envelope = [[SSKEnvelope alloc] initWithSerializedData:self.envelopeData error:&error]; + SSKProtoEnvelope *_Nullable envelope = [SSKProtoEnvelope parseData:self.envelopeData error:&error]; if (error || envelope == nil) { OWSFail(@"%@ failed to parase envelope with error: %@", self.logTag, error); return nil; @@ -327,7 +327,7 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin AssertOnDispatchQueue(self.serialQueue); OWSAssert(job); - SSKEnvelope *_Nullable envelope = nil; + SSKProtoEnvelope *_Nullable envelope = nil; @try { envelope = job.envelopeProto; } @catch (NSException *exception) { diff --git a/SignalServiceKit/src/Protos/Generated/SSKProto.swift b/SignalServiceKit/src/Protos/Generated/SSKProto.swift index b7e64fed7..0819d1406 100644 --- a/SignalServiceKit/src/Protos/Generated/SSKProto.swift +++ b/SignalServiceKit/src/Protos/Generated/SSKProto.swift @@ -4,6 +4,8 @@ import Foundation +// WARNING: This code is generated. Only edit within the markers. + public enum SSKProtoError: Error { case invalidProtobuf(description: String) } @@ -12,9 +14,9 @@ public enum SSKProtoError: Error { @objc public class SSKProtoEnvelope: NSObject { - // MARK: - SSKProtoEnvelope_Type + // MARK: - SSKProtoEnvelopeType - @objc public enum SSKProtoEnvelope_Type: Int32 { + @objc public enum SSKProtoEnvelopeType: Int32 { case unknown = 0 case ciphertext = 1 case keyExchange = 2 @@ -22,27 +24,27 @@ public enum SSKProtoError: Error { case receipt = 5 } - private class func SSKProtoEnvelope_TypeWrap(_ value: SignalServiceProtos_Envelope.TypeEnum) -> SSKProtoEnvelope_Type { + private class func SSKProtoEnvelopeTypeWrap(_ value: SignalServiceProtos_Envelope.TypeEnum) -> SSKProtoEnvelopeType { switch value { - case .unknown: return .unknown - case .ciphertext: return .ciphertext - case .keyExchange: return .keyExchange - case .prekeyBundle: return .prekeyBundle - case .receipt: return .receipt + case .unknown: return .unknown + case .ciphertext: return .ciphertext + case .keyExchange: return .keyExchange + case .prekeyBundle: return .prekeyBundle + case .receipt: return .receipt } } - private class func SSKProtoEnvelope_TypeUnwrap(_ value: SSKProtoEnvelope_Type) -> SignalServiceProtos_Envelope.TypeEnum { + private class func SSKProtoEnvelopeTypeUnwrap(_ value: SSKProtoEnvelopeType) -> SignalServiceProtos_Envelope.TypeEnum { switch value { - case .unknown: return .unknown - case .ciphertext: return .ciphertext - case .keyExchange: return .keyExchange - case .prekeyBundle: return .prekeyBundle - case .receipt: return .receipt + case .unknown: return .unknown + case .ciphertext: return .ciphertext + case .keyExchange: return .keyExchange + case .prekeyBundle: return .prekeyBundle + case .receipt: return .receipt } } - @objc public let type: SSKProtoEnvelope_Type + @objc public let type: SSKProtoEnvelopeType @objc public let relay: String? @objc public let source: String? @objc public let timestamp: UInt64 @@ -50,7 +52,7 @@ public enum SSKProtoError: Error { @objc public let legacyMessage: Data? @objc public let content: Data? - @objc public init(type: SSKProtoEnvelope_Type, relay: String?, source: String?, timestamp: UInt64, sourceDevice: UInt32, legacyMessage: Data?, content: Data?) { + @objc public init(type: SSKProtoEnvelopeType, relay: String?, source: String?, timestamp: UInt64, sourceDevice: UInt32, legacyMessage: Data?, content: Data?) { self.type = type self.relay = relay self.source = source @@ -71,9 +73,9 @@ public enum SSKProtoError: Error { } fileprivate class func parseProto(_ proto: SignalServiceProtos_Envelope) throws -> SSKProtoEnvelope { - var type: SSKProtoEnvelope_Type = .unknown + var type: SSKProtoEnvelopeType = .unknown if proto.hasType { - type = SSKProtoEnvelope_TypeWrap(proto.type) + type = SSKProtoEnvelopeTypeWrap(proto.type) } var relay: String? = nil @@ -129,7 +131,7 @@ public enum SSKProtoError: Error { fileprivate var asProtobuf: SignalServiceProtos_Envelope { let proto = SignalServiceProtos_Envelope.with { (builder) in - builder.type = SSKProtoEnvelope.SSKProtoEnvelope_TypeUnwrap(self.type) + builder.type = SSKProtoEnvelope.SSKProtoEnvelopeTypeUnwrap(self.type) if let relay = self.relay { builder.relay = relay @@ -245,286 +247,286 @@ public enum SSKProtoError: Error { } } -// MARK: - SSKProtoCallMessage +// MARK: - SSKProtoCallMessageOffer -@objc public class SSKProtoCallMessage: NSObject { +@objc public class SSKProtoCallMessageOffer: NSObject { - // MARK: - SSKProtoCallMessage_Offer + @objc public let id: UInt64 + @objc public let sessionDescription: String? - @objc public class SSKProtoCallMessage_Offer: NSObject { + @objc public init(id: UInt64, sessionDescription: String?) { + self.id = id + self.sessionDescription = sessionDescription + } - @objc public let id: UInt64 - @objc public let sessionDescription: String? + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - @objc public init(id: UInt64, sessionDescription: String?) { - self.id = id - self.sessionDescription = sessionDescription - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoCallMessageOffer { + let proto = try SignalServiceProtos_CallMessage.Offer(serializedData: serializedData) + return try parseProto(proto) + } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() + fileprivate class func parseProto(_ proto: SignalServiceProtos_CallMessage.Offer) throws -> SSKProtoCallMessageOffer { + var id: UInt64 = 0 + if proto.hasID { + id = proto.id } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoCallMessage_Offer { - let proto = try SignalServiceProtos_CallMessage.Offer(serializedData: serializedData) - return try parseProto(proto) + var sessionDescription: String? = nil + if proto.hasSessionDescription { + sessionDescription = proto.sessionDescription } - fileprivate class func parseProto(_ proto: SignalServiceProtos_CallMessage.Offer) throws -> SSKProtoCallMessage_Offer { - var id: UInt64 = 0 - if proto.hasID { - id = proto.id - } + // MARK: - Begin Validation Logic for SSKProtoCallMessageOffer - - var sessionDescription: String? = nil - if proto.hasSessionDescription { - sessionDescription = proto.sessionDescription - } + // MARK: - End Validation Logic for SSKProtoCallMessageOffer - - // MARK: - Begin Validation Logic for SSKProtoCallMessage_Offer - + let result = SSKProtoCallMessageOffer(id: id, sessionDescription: sessionDescription) + return result + } - // MARK: - End Validation Logic for SSKProtoCallMessage_Offer - + fileprivate var asProtobuf: SignalServiceProtos_CallMessage.Offer { + let proto = SignalServiceProtos_CallMessage.Offer.with { (builder) in + builder.id = self.id - let result = SSKProtoCallMessage_Offer(id: id, sessionDescription: sessionDescription) - return result + if let sessionDescription = self.sessionDescription { + builder.sessionDescription = sessionDescription + } } - fileprivate var asProtobuf: SignalServiceProtos_CallMessage.Offer { - let proto = SignalServiceProtos_CallMessage.Offer.with { (builder) in - builder.id = self.id + return proto + } +} - if let sessionDescription = self.sessionDescription { - builder.sessionDescription = sessionDescription - } - } +// MARK: - SSKProtoCallMessageAnswer - return proto - } - } +@objc public class SSKProtoCallMessageAnswer: NSObject { - // MARK: - SSKProtoCallMessage_Answer + @objc public let id: UInt64 + @objc public let sessionDescription: String? - @objc public class SSKProtoCallMessage_Answer: NSObject { + @objc public init(id: UInt64, sessionDescription: String?) { + self.id = id + self.sessionDescription = sessionDescription + } - @objc public let id: UInt64 - @objc public let sessionDescription: String? + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - @objc public init(id: UInt64, sessionDescription: String?) { - self.id = id - self.sessionDescription = sessionDescription - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoCallMessageAnswer { + let proto = try SignalServiceProtos_CallMessage.Answer(serializedData: serializedData) + return try parseProto(proto) + } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() + fileprivate class func parseProto(_ proto: SignalServiceProtos_CallMessage.Answer) throws -> SSKProtoCallMessageAnswer { + var id: UInt64 = 0 + if proto.hasID { + id = proto.id } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoCallMessage_Answer { - let proto = try SignalServiceProtos_CallMessage.Answer(serializedData: serializedData) - return try parseProto(proto) + var sessionDescription: String? = nil + if proto.hasSessionDescription { + sessionDescription = proto.sessionDescription } - fileprivate class func parseProto(_ proto: SignalServiceProtos_CallMessage.Answer) throws -> SSKProtoCallMessage_Answer { - var id: UInt64 = 0 - if proto.hasID { - id = proto.id - } + // MARK: - Begin Validation Logic for SSKProtoCallMessageAnswer - - var sessionDescription: String? = nil - if proto.hasSessionDescription { - sessionDescription = proto.sessionDescription - } + // MARK: - End Validation Logic for SSKProtoCallMessageAnswer - - // MARK: - Begin Validation Logic for SSKProtoCallMessage_Answer - + let result = SSKProtoCallMessageAnswer(id: id, sessionDescription: sessionDescription) + return result + } - // MARK: - End Validation Logic for SSKProtoCallMessage_Answer - + fileprivate var asProtobuf: SignalServiceProtos_CallMessage.Answer { + let proto = SignalServiceProtos_CallMessage.Answer.with { (builder) in + builder.id = self.id - let result = SSKProtoCallMessage_Answer(id: id, sessionDescription: sessionDescription) - return result + if let sessionDescription = self.sessionDescription { + builder.sessionDescription = sessionDescription + } } - fileprivate var asProtobuf: SignalServiceProtos_CallMessage.Answer { - let proto = SignalServiceProtos_CallMessage.Answer.with { (builder) in - builder.id = self.id + return proto + } +} + +// MARK: - SSKProtoCallMessageIceUpdate - if let sessionDescription = self.sessionDescription { - builder.sessionDescription = sessionDescription - } - } +@objc public class SSKProtoCallMessageIceUpdate: NSObject { - return proto - } + @objc public let id: UInt64 + @objc public let sdpMlineIndex: UInt32 + @objc public let sdpMid: String? + @objc public let sdp: String? + + @objc public init(id: UInt64, sdpMlineIndex: UInt32, sdpMid: String?, sdp: String?) { + self.id = id + self.sdpMlineIndex = sdpMlineIndex + self.sdpMid = sdpMid + self.sdp = sdp } - // MARK: - SSKProtoCallMessage_IceUpdate + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - @objc public class SSKProtoCallMessage_IceUpdate: NSObject { + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoCallMessageIceUpdate { + let proto = try SignalServiceProtos_CallMessage.IceUpdate(serializedData: serializedData) + return try parseProto(proto) + } - @objc public let id: UInt64 - @objc public let sdpMlineIndex: UInt32 - @objc public let sdpMid: String? - @objc public let sdp: String? + fileprivate class func parseProto(_ proto: SignalServiceProtos_CallMessage.IceUpdate) throws -> SSKProtoCallMessageIceUpdate { + var id: UInt64 = 0 + if proto.hasID { + id = proto.id + } - @objc public init(id: UInt64, sdpMlineIndex: UInt32, sdpMid: String?, sdp: String?) { - self.id = id - self.sdpMlineIndex = sdpMlineIndex - self.sdpMid = sdpMid - self.sdp = sdp + var sdpMlineIndex: UInt32 = 0 + if proto.hasSdpMlineIndex { + sdpMlineIndex = proto.sdpMlineIndex } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() + var sdpMid: String? = nil + if proto.hasSdpMid { + sdpMid = proto.sdpMid } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoCallMessage_IceUpdate { - let proto = try SignalServiceProtos_CallMessage.IceUpdate(serializedData: serializedData) - return try parseProto(proto) + var sdp: String? = nil + if proto.hasSdp { + sdp = proto.sdp } - fileprivate class func parseProto(_ proto: SignalServiceProtos_CallMessage.IceUpdate) throws -> SSKProtoCallMessage_IceUpdate { - var id: UInt64 = 0 - if proto.hasID { - id = proto.id - } + // MARK: - Begin Validation Logic for SSKProtoCallMessageIceUpdate - - var sdpMlineIndex: UInt32 = 0 - if proto.hasSdpMlineIndex { - sdpMlineIndex = proto.sdpMlineIndex - } + // MARK: - End Validation Logic for SSKProtoCallMessageIceUpdate - - var sdpMid: String? = nil - if proto.hasSdpMid { - sdpMid = proto.sdpMid - } + let result = SSKProtoCallMessageIceUpdate(id: id, sdpMlineIndex: sdpMlineIndex, sdpMid: sdpMid, sdp: sdp) + return result + } - var sdp: String? = nil - if proto.hasSdp { - sdp = proto.sdp - } + fileprivate var asProtobuf: SignalServiceProtos_CallMessage.IceUpdate { + let proto = SignalServiceProtos_CallMessage.IceUpdate.with { (builder) in + builder.id = self.id - // MARK: - Begin Validation Logic for SSKProtoCallMessage_IceUpdate - + builder.sdpMlineIndex = self.sdpMlineIndex - // MARK: - End Validation Logic for SSKProtoCallMessage_IceUpdate - + if let sdpMid = self.sdpMid { + builder.sdpMid = sdpMid + } - let result = SSKProtoCallMessage_IceUpdate(id: id, sdpMlineIndex: sdpMlineIndex, sdpMid: sdpMid, sdp: sdp) - return result + if let sdp = self.sdp { + builder.sdp = sdp + } } - fileprivate var asProtobuf: SignalServiceProtos_CallMessage.IceUpdate { - let proto = SignalServiceProtos_CallMessage.IceUpdate.with { (builder) in - builder.id = self.id + return proto + } +} - builder.sdpMlineIndex = self.sdpMlineIndex +// MARK: - SSKProtoCallMessageBusy - if let sdpMid = self.sdpMid { - builder.sdpMid = sdpMid - } +@objc public class SSKProtoCallMessageBusy: NSObject { - if let sdp = self.sdp { - builder.sdp = sdp - } - } + @objc public let id: UInt64 - return proto - } + @objc public init(id: UInt64) { + self.id = id } - // MARK: - SSKProtoCallMessage_Busy - - @objc public class SSKProtoCallMessage_Busy: NSObject { - - @objc public let id: UInt64 - - @objc public init(id: UInt64) { - self.id = id - } + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoCallMessageBusy { + let proto = try SignalServiceProtos_CallMessage.Busy(serializedData: serializedData) + return try parseProto(proto) + } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoCallMessage_Busy { - let proto = try SignalServiceProtos_CallMessage.Busy(serializedData: serializedData) - return try parseProto(proto) + fileprivate class func parseProto(_ proto: SignalServiceProtos_CallMessage.Busy) throws -> SSKProtoCallMessageBusy { + var id: UInt64 = 0 + if proto.hasID { + id = proto.id } - fileprivate class func parseProto(_ proto: SignalServiceProtos_CallMessage.Busy) throws -> SSKProtoCallMessage_Busy { - var id: UInt64 = 0 - if proto.hasID { - id = proto.id - } + // MARK: - Begin Validation Logic for SSKProtoCallMessageBusy - - // MARK: - Begin Validation Logic for SSKProtoCallMessage_Busy - + // MARK: - End Validation Logic for SSKProtoCallMessageBusy - - // MARK: - End Validation Logic for SSKProtoCallMessage_Busy - + let result = SSKProtoCallMessageBusy(id: id) + return result + } - let result = SSKProtoCallMessage_Busy(id: id) - return result + fileprivate var asProtobuf: SignalServiceProtos_CallMessage.Busy { + let proto = SignalServiceProtos_CallMessage.Busy.with { (builder) in + builder.id = self.id } - fileprivate var asProtobuf: SignalServiceProtos_CallMessage.Busy { - let proto = SignalServiceProtos_CallMessage.Busy.with { (builder) in - builder.id = self.id - } - - return proto - } + return proto } +} - // MARK: - SSKProtoCallMessage_Hangup +// MARK: - SSKProtoCallMessageHangup - @objc public class SSKProtoCallMessage_Hangup: NSObject { +@objc public class SSKProtoCallMessageHangup: NSObject { - @objc public let id: UInt64 + @objc public let id: UInt64 - @objc public init(id: UInt64) { - self.id = id - } + @objc public init(id: UInt64) { + self.id = id + } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() - } + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } + + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoCallMessageHangup { + let proto = try SignalServiceProtos_CallMessage.Hangup(serializedData: serializedData) + return try parseProto(proto) + } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoCallMessage_Hangup { - let proto = try SignalServiceProtos_CallMessage.Hangup(serializedData: serializedData) - return try parseProto(proto) + fileprivate class func parseProto(_ proto: SignalServiceProtos_CallMessage.Hangup) throws -> SSKProtoCallMessageHangup { + var id: UInt64 = 0 + if proto.hasID { + id = proto.id } - fileprivate class func parseProto(_ proto: SignalServiceProtos_CallMessage.Hangup) throws -> SSKProtoCallMessage_Hangup { - var id: UInt64 = 0 - if proto.hasID { - id = proto.id - } + // MARK: - Begin Validation Logic for SSKProtoCallMessageHangup - - // MARK: - Begin Validation Logic for SSKProtoCallMessage_Hangup - + // MARK: - End Validation Logic for SSKProtoCallMessageHangup - - // MARK: - End Validation Logic for SSKProtoCallMessage_Hangup - + let result = SSKProtoCallMessageHangup(id: id) + return result + } - let result = SSKProtoCallMessage_Hangup(id: id) - return result + fileprivate var asProtobuf: SignalServiceProtos_CallMessage.Hangup { + let proto = SignalServiceProtos_CallMessage.Hangup.with { (builder) in + builder.id = self.id } - fileprivate var asProtobuf: SignalServiceProtos_CallMessage.Hangup { - let proto = SignalServiceProtos_CallMessage.Hangup.with { (builder) in - builder.id = self.id - } - - return proto - } + return proto } +} - @objc public let offer: SSKProtoCallMessage_Offer? - @objc public let iceUpdate: [SSKProtoCallMessage_IceUpdate] - @objc public let answer: SSKProtoCallMessage_Answer? - @objc public let busy: SSKProtoCallMessage_Busy? - @objc public let hangup: SSKProtoCallMessage_Hangup? +// MARK: - SSKProtoCallMessage + +@objc public class SSKProtoCallMessage: NSObject { + + @objc public let offer: SSKProtoCallMessageOffer? + @objc public let iceUpdate: [SSKProtoCallMessageIceUpdate] + @objc public let answer: SSKProtoCallMessageAnswer? + @objc public let busy: SSKProtoCallMessageBusy? + @objc public let hangup: SSKProtoCallMessageHangup? @objc public let profileKey: Data? - @objc public init(offer: SSKProtoCallMessage_Offer?, iceUpdate: [SSKProtoCallMessage_IceUpdate], answer: SSKProtoCallMessage_Answer?, busy: SSKProtoCallMessage_Busy?, hangup: SSKProtoCallMessage_Hangup?, profileKey: Data?) { + @objc public init(offer: SSKProtoCallMessageOffer?, iceUpdate: [SSKProtoCallMessageIceUpdate], answer: SSKProtoCallMessageAnswer?, busy: SSKProtoCallMessageBusy?, hangup: SSKProtoCallMessageHangup?, profileKey: Data?) { self.offer = offer self.iceUpdate = iceUpdate self.answer = answer @@ -544,30 +546,30 @@ public enum SSKProtoError: Error { } fileprivate class func parseProto(_ proto: SignalServiceProtos_CallMessage) throws -> SSKProtoCallMessage { - var offer: SSKProtoCallMessage_Offer? = nil + var offer: SSKProtoCallMessageOffer? = nil if proto.hasOffer { - offer = try SSKProtoCallMessage_Offer.parseProto(proto.offer) + offer = try SSKProtoCallMessageOffer.parseProto(proto.offer) } - var iceUpdate: [SSKProtoCallMessage_IceUpdate] = [] + var iceUpdate: [SSKProtoCallMessageIceUpdate] = [] for item in proto.iceUpdate { - let wrapped = try SSKProtoCallMessage_IceUpdate.parseProto(item) + let wrapped = try SSKProtoCallMessageIceUpdate.parseProto(item) iceUpdate.append(wrapped) } - var answer: SSKProtoCallMessage_Answer? = nil + var answer: SSKProtoCallMessageAnswer? = nil if proto.hasAnswer { - answer = try SSKProtoCallMessage_Answer.parseProto(proto.answer) + answer = try SSKProtoCallMessageAnswer.parseProto(proto.answer) } - var busy: SSKProtoCallMessage_Busy? = nil + var busy: SSKProtoCallMessageBusy? = nil if proto.hasBusy { - busy = try SSKProtoCallMessage_Busy.parseProto(proto.busy) + busy = try SSKProtoCallMessageBusy.parseProto(proto.busy) } - var hangup: SSKProtoCallMessage_Hangup? = nil + var hangup: SSKProtoCallMessageHangup? = nil if proto.hasHangup { - hangup = try SSKProtoCallMessage_Hangup.parseProto(proto.hangup) + hangup = try SSKProtoCallMessageHangup.parseProto(proto.hangup) } var profileKey: Data? = nil @@ -616,806 +618,806 @@ public enum SSKProtoError: Error { } } -// MARK: - SSKProtoDataMessage +// MARK: - SSKProtoDataMessageQuoteQuotedAttachment -@objc public class SSKProtoDataMessage: NSObject { +@objc public class SSKProtoDataMessageQuoteQuotedAttachment: NSObject { - // MARK: - SSKProtoDataMessage_Flags + // MARK: - SSKProtoDataMessageQuoteQuotedAttachmentFlags - @objc public enum SSKProtoDataMessage_Flags: Int32 { - case endSession = 1 - case expirationTimerUpdate = 2 - case profileKeyUpdate = 4 + @objc public enum SSKProtoDataMessageQuoteQuotedAttachmentFlags: Int32 { + case voiceMessage = 1 } - private class func SSKProtoDataMessage_FlagsWrap(_ value: SignalServiceProtos_DataMessage.Flags) -> SSKProtoDataMessage_Flags { + private class func SSKProtoDataMessageQuoteQuotedAttachmentFlagsWrap(_ value: SignalServiceProtos_DataMessage.Quote.QuotedAttachment.Flags) -> SSKProtoDataMessageQuoteQuotedAttachmentFlags { switch value { - case .endSession: return .endSession - case .expirationTimerUpdate: return .expirationTimerUpdate - case .profileKeyUpdate: return .profileKeyUpdate + case .voiceMessage: return .voiceMessage } } - private class func SSKProtoDataMessage_FlagsUnwrap(_ value: SSKProtoDataMessage_Flags) -> SignalServiceProtos_DataMessage.Flags { + private class func SSKProtoDataMessageQuoteQuotedAttachmentFlagsUnwrap(_ value: SSKProtoDataMessageQuoteQuotedAttachmentFlags) -> SignalServiceProtos_DataMessage.Quote.QuotedAttachment.Flags { switch value { - case .endSession: return .endSession - case .expirationTimerUpdate: return .expirationTimerUpdate - case .profileKeyUpdate: return .profileKeyUpdate + case .voiceMessage: return .voiceMessage } } - // MARK: - SSKProtoDataMessage_Quote + @objc public let contentType: String? + @objc public let thumbnail: SSKProtoAttachmentPointer? + @objc public let fileName: String? + @objc public let flags: UInt32 - @objc public class SSKProtoDataMessage_Quote: NSObject { + @objc public init(contentType: String?, thumbnail: SSKProtoAttachmentPointer?, fileName: String?, flags: UInt32) { + self.contentType = contentType + self.thumbnail = thumbnail + self.fileName = fileName + self.flags = flags + } - // MARK: - SSKProtoDataMessage_Quote_QuotedAttachment + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - @objc public class SSKProtoDataMessage_Quote_QuotedAttachment: NSObject { + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessageQuoteQuotedAttachment { + let proto = try SignalServiceProtos_DataMessage.Quote.QuotedAttachment(serializedData: serializedData) + return try parseProto(proto) + } - // MARK: - SSKProtoDataMessage_Quote_QuotedAttachment_Flags + fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Quote.QuotedAttachment) throws -> SSKProtoDataMessageQuoteQuotedAttachment { + var contentType: String? = nil + if proto.hasContentType { + contentType = proto.contentType + } - @objc public enum SSKProtoDataMessage_Quote_QuotedAttachment_Flags: Int32 { - case voiceMessage = 1 - } + var thumbnail: SSKProtoAttachmentPointer? = nil + if proto.hasThumbnail { + thumbnail = try SSKProtoAttachmentPointer.parseProto(proto.thumbnail) + } - private class func SSKProtoDataMessage_Quote_QuotedAttachment_FlagsWrap(_ value: SignalServiceProtos_DataMessage.Quote.QuotedAttachment.Flags) -> SSKProtoDataMessage_Quote_QuotedAttachment_Flags { - switch value { - case .voiceMessage: return .voiceMessage - } - } + var fileName: String? = nil + if proto.hasFileName { + fileName = proto.fileName + } - private class func SSKProtoDataMessage_Quote_QuotedAttachment_FlagsUnwrap(_ value: SSKProtoDataMessage_Quote_QuotedAttachment_Flags) -> SignalServiceProtos_DataMessage.Quote.QuotedAttachment.Flags { - switch value { - case .voiceMessage: return .voiceMessage - } - } + var flags: UInt32 = 0 + if proto.hasFlags { + flags = proto.flags + } + + // MARK: - Begin Validation Logic for SSKProtoDataMessageQuoteQuotedAttachment - + + // MARK: - End Validation Logic for SSKProtoDataMessageQuoteQuotedAttachment - - @objc public let contentType: String? - @objc public let thumbnail: SSKProtoAttachmentPointer? - @objc public let fileName: String? - @objc public let flags: UInt32 + let result = SSKProtoDataMessageQuoteQuotedAttachment(contentType: contentType, thumbnail: thumbnail, fileName: fileName, flags: flags) + return result + } - @objc public init(contentType: String?, thumbnail: SSKProtoAttachmentPointer?, fileName: String?, flags: UInt32) { - self.contentType = contentType - self.thumbnail = thumbnail - self.fileName = fileName - self.flags = flags + fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Quote.QuotedAttachment { + let proto = SignalServiceProtos_DataMessage.Quote.QuotedAttachment.with { (builder) in + if let contentType = self.contentType { + builder.contentType = contentType } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() + if let thumbnail = self.thumbnail { + builder.thumbnail = thumbnail.asProtobuf } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessage_Quote_QuotedAttachment { - let proto = try SignalServiceProtos_DataMessage.Quote.QuotedAttachment(serializedData: serializedData) - return try parseProto(proto) + if let fileName = self.fileName { + builder.fileName = fileName } - fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Quote.QuotedAttachment) throws -> SSKProtoDataMessage_Quote_QuotedAttachment { - var contentType: String? = nil - if proto.hasContentType { - contentType = proto.contentType - } + builder.flags = self.flags + } - var thumbnail: SSKProtoAttachmentPointer? = nil - if proto.hasThumbnail { - thumbnail = try SSKProtoAttachmentPointer.parseProto(proto.thumbnail) - } + return proto + } +} - var fileName: String? = nil - if proto.hasFileName { - fileName = proto.fileName - } +// MARK: - SSKProtoDataMessageQuote - var flags: UInt32 = 0 - if proto.hasFlags { - flags = proto.flags - } +@objc public class SSKProtoDataMessageQuote: NSObject { - // MARK: - Begin Validation Logic for SSKProtoDataMessage_Quote_QuotedAttachment - + @objc public let id: UInt64 + @objc public let text: String? + @objc public let author: String? + @objc public let attachments: [SSKProtoDataMessageQuoteQuotedAttachment] - // MARK: - End Validation Logic for SSKProtoDataMessage_Quote_QuotedAttachment - + @objc public init(id: UInt64, text: String?, author: String?, attachments: [SSKProtoDataMessageQuoteQuotedAttachment]) { + self.id = id + self.text = text + self.author = author + self.attachments = attachments + } - let result = SSKProtoDataMessage_Quote_QuotedAttachment(contentType: contentType, thumbnail: thumbnail, fileName: fileName, flags: flags) - return result - } + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Quote.QuotedAttachment { - let proto = SignalServiceProtos_DataMessage.Quote.QuotedAttachment.with { (builder) in - if let contentType = self.contentType { - builder.contentType = contentType - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessageQuote { + let proto = try SignalServiceProtos_DataMessage.Quote(serializedData: serializedData) + return try parseProto(proto) + } - if let thumbnail = self.thumbnail { - builder.thumbnail = thumbnail.asProtobuf - } + fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Quote) throws -> SSKProtoDataMessageQuote { + var id: UInt64 = 0 + if proto.hasID { + id = proto.id + } - if let fileName = self.fileName { - builder.fileName = fileName - } + var text: String? = nil + if proto.hasText { + text = proto.text + } - builder.flags = self.flags - } + var author: String? = nil + if proto.hasAuthor { + author = proto.author + } - return proto - } + var attachments: [SSKProtoDataMessageQuoteQuotedAttachment] = [] + for item in proto.attachments { + let wrapped = try SSKProtoDataMessageQuoteQuotedAttachment.parseProto(item) + attachments.append(wrapped) } - @objc public let id: UInt64 - @objc public let text: String? - @objc public let author: String? - @objc public let attachments: [SSKProtoDataMessage_Quote_QuotedAttachment] + // MARK: - Begin Validation Logic for SSKProtoDataMessageQuote - - @objc public init(id: UInt64, text: String?, author: String?, attachments: [SSKProtoDataMessage_Quote_QuotedAttachment]) { - self.id = id - self.text = text - self.author = author - self.attachments = attachments - } + // MARK: - End Validation Logic for SSKProtoDataMessageQuote - - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() - } + let result = SSKProtoDataMessageQuote(id: id, text: text, author: author, attachments: attachments) + return result + } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessage_Quote { - let proto = try SignalServiceProtos_DataMessage.Quote(serializedData: serializedData) - return try parseProto(proto) - } + fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Quote { + let proto = SignalServiceProtos_DataMessage.Quote.with { (builder) in + builder.id = self.id - fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Quote) throws -> SSKProtoDataMessage_Quote { - var id: UInt64 = 0 - if proto.hasID { - id = proto.id + if let text = self.text { + builder.text = text } - var text: String? = nil - if proto.hasText { - text = proto.text + if let author = self.author { + builder.author = author } - var author: String? = nil - if proto.hasAuthor { - author = proto.author + var attachmentsUnwrapped = [SignalServiceProtos_DataMessage.Quote.QuotedAttachment]() + for item in attachments { + attachmentsUnwrapped.append(item.asProtobuf) } + builder.attachments = attachmentsUnwrapped + } - var attachments: [SSKProtoDataMessage_Quote_QuotedAttachment] = [] - for item in proto.attachments { - let wrapped = try SSKProtoDataMessage_Quote_QuotedAttachment.parseProto(item) - attachments.append(wrapped) - } + return proto + } +} - // MARK: - Begin Validation Logic for SSKProtoDataMessage_Quote - +// MARK: - SSKProtoDataMessageContactName - // MARK: - End Validation Logic for SSKProtoDataMessage_Quote - +@objc public class SSKProtoDataMessageContactName: NSObject { - let result = SSKProtoDataMessage_Quote(id: id, text: text, author: author, attachments: attachments) - return result - } + @objc public let givenName: String? + @objc public let prefix: String? + @objc public let familyName: String? + @objc public let middleName: String? + @objc public let suffix: String? + @objc public let displayName: String? + + @objc public init(givenName: String?, prefix: String?, familyName: String?, middleName: String?, suffix: String?, displayName: String?) { + self.givenName = givenName + self.prefix = prefix + self.familyName = familyName + self.middleName = middleName + self.suffix = suffix + self.displayName = displayName + } + + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Quote { - let proto = SignalServiceProtos_DataMessage.Quote.with { (builder) in - builder.id = self.id + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessageContactName { + let proto = try SignalServiceProtos_DataMessage.Contact.Name(serializedData: serializedData) + return try parseProto(proto) + } - if let text = self.text { - builder.text = text - } + fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Contact.Name) throws -> SSKProtoDataMessageContactName { + var givenName: String? = nil + if proto.hasGivenName { + givenName = proto.givenName + } - if let author = self.author { - builder.author = author - } + var prefix: String? = nil + if proto.hasPrefix { + prefix = proto.prefix + } - var attachmentsUnwrapped = [SignalServiceProtos_DataMessage.Quote.QuotedAttachment]() - for item in attachments { - attachmentsUnwrapped.append(item.asProtobuf) - } - builder.attachments = attachmentsUnwrapped - } + var familyName: String? = nil + if proto.hasFamilyName { + familyName = proto.familyName + } - return proto + var middleName: String? = nil + if proto.hasMiddleName { + middleName = proto.middleName } - } - // MARK: - SSKProtoDataMessage_Contact + var suffix: String? = nil + if proto.hasSuffix { + suffix = proto.suffix + } - @objc public class SSKProtoDataMessage_Contact: NSObject { + var displayName: String? = nil + if proto.hasDisplayName { + displayName = proto.displayName + } - // MARK: - SSKProtoDataMessage_Contact_Name + // MARK: - Begin Validation Logic for SSKProtoDataMessageContactName - - @objc public class SSKProtoDataMessage_Contact_Name: NSObject { + // MARK: - End Validation Logic for SSKProtoDataMessageContactName - - @objc public let givenName: String? - @objc public let prefix: String? - @objc public let familyName: String? - @objc public let middleName: String? - @objc public let suffix: String? - @objc public let displayName: String? + let result = SSKProtoDataMessageContactName(givenName: givenName, prefix: prefix, familyName: familyName, middleName: middleName, suffix: suffix, displayName: displayName) + return result + } - @objc public init(givenName: String?, prefix: String?, familyName: String?, middleName: String?, suffix: String?, displayName: String?) { - self.givenName = givenName - self.prefix = prefix - self.familyName = familyName - self.middleName = middleName - self.suffix = suffix - self.displayName = displayName + fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Contact.Name { + let proto = SignalServiceProtos_DataMessage.Contact.Name.with { (builder) in + if let givenName = self.givenName { + builder.givenName = givenName } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() + if let prefix = self.prefix { + builder.prefix = prefix } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessage_Contact_Name { - let proto = try SignalServiceProtos_DataMessage.Contact.Name(serializedData: serializedData) - return try parseProto(proto) + if let familyName = self.familyName { + builder.familyName = familyName } - fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Contact.Name) throws -> SSKProtoDataMessage_Contact_Name { - var givenName: String? = nil - if proto.hasGivenName { - givenName = proto.givenName - } + if let middleName = self.middleName { + builder.middleName = middleName + } - var prefix: String? = nil - if proto.hasPrefix { - prefix = proto.prefix - } + if let suffix = self.suffix { + builder.suffix = suffix + } - var familyName: String? = nil - if proto.hasFamilyName { - familyName = proto.familyName - } + if let displayName = self.displayName { + builder.displayName = displayName + } + } - var middleName: String? = nil - if proto.hasMiddleName { - middleName = proto.middleName - } + return proto + } +} - var suffix: String? = nil - if proto.hasSuffix { - suffix = proto.suffix - } +// MARK: - SSKProtoDataMessageContactPhone - var displayName: String? = nil - if proto.hasDisplayName { - displayName = proto.displayName - } +@objc public class SSKProtoDataMessageContactPhone: NSObject { - // MARK: - Begin Validation Logic for SSKProtoDataMessage_Contact_Name - + // MARK: - SSKProtoDataMessageContactPhoneType - // MARK: - End Validation Logic for SSKProtoDataMessage_Contact_Name - + @objc public enum SSKProtoDataMessageContactPhoneType: Int32 { + case home = 1 + case mobile = 2 + case work = 3 + case custom = 4 + } - let result = SSKProtoDataMessage_Contact_Name(givenName: givenName, prefix: prefix, familyName: familyName, middleName: middleName, suffix: suffix, displayName: displayName) - return result - } + private class func SSKProtoDataMessageContactPhoneTypeWrap(_ value: SignalServiceProtos_DataMessage.Contact.Phone.TypeEnum) -> SSKProtoDataMessageContactPhoneType { + switch value { + case .home: return .home + case .mobile: return .mobile + case .work: return .work + case .custom: return .custom + } + } - fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Contact.Name { - let proto = SignalServiceProtos_DataMessage.Contact.Name.with { (builder) in - if let givenName = self.givenName { - builder.givenName = givenName - } + private class func SSKProtoDataMessageContactPhoneTypeUnwrap(_ value: SSKProtoDataMessageContactPhoneType) -> SignalServiceProtos_DataMessage.Contact.Phone.TypeEnum { + switch value { + case .home: return .home + case .mobile: return .mobile + case .work: return .work + case .custom: return .custom + } + } - if let prefix = self.prefix { - builder.prefix = prefix - } + @objc public let value: String? + @objc public let label: String? + @objc public let type: SSKProtoDataMessageContactPhoneType - if let familyName = self.familyName { - builder.familyName = familyName - } + @objc public init(value: String?, label: String?, type: SSKProtoDataMessageContactPhoneType) { + self.value = value + self.label = label + self.type = type + } - if let middleName = self.middleName { - builder.middleName = middleName - } + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - if let suffix = self.suffix { - builder.suffix = suffix - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessageContactPhone { + let proto = try SignalServiceProtos_DataMessage.Contact.Phone(serializedData: serializedData) + return try parseProto(proto) + } - if let displayName = self.displayName { - builder.displayName = displayName - } - } + fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Contact.Phone) throws -> SSKProtoDataMessageContactPhone { + var value: String? = nil + if proto.hasValue { + value = proto.value + } - return proto - } + var label: String? = nil + if proto.hasLabel { + label = proto.label } - // MARK: - SSKProtoDataMessage_Contact_Phone + var type: SSKProtoDataMessageContactPhoneType = .home + if proto.hasType { + type = SSKProtoDataMessageContactPhoneTypeWrap(proto.type) + } - @objc public class SSKProtoDataMessage_Contact_Phone: NSObject { + // MARK: - Begin Validation Logic for SSKProtoDataMessageContactPhone - - // MARK: - SSKProtoDataMessage_Contact_Phone_Type + // MARK: - End Validation Logic for SSKProtoDataMessageContactPhone - - @objc public enum SSKProtoDataMessage_Contact_Phone_Type: Int32 { - case home = 1 - case mobile = 2 - case work = 3 - case custom = 4 - } + let result = SSKProtoDataMessageContactPhone(value: value, label: label, type: type) + return result + } - private class func SSKProtoDataMessage_Contact_Phone_TypeWrap(_ value: SignalServiceProtos_DataMessage.Contact.Phone.TypeEnum) -> SSKProtoDataMessage_Contact_Phone_Type { - switch value { - case .home: return .home - case .mobile: return .mobile - case .work: return .work - case .custom: return .custom - } + fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Contact.Phone { + let proto = SignalServiceProtos_DataMessage.Contact.Phone.with { (builder) in + if let value = self.value { + builder.value = value } - private class func SSKProtoDataMessage_Contact_Phone_TypeUnwrap(_ value: SSKProtoDataMessage_Contact_Phone_Type) -> SignalServiceProtos_DataMessage.Contact.Phone.TypeEnum { - switch value { - case .home: return .home - case .mobile: return .mobile - case .work: return .work - case .custom: return .custom - } + if let label = self.label { + builder.label = label } - @objc public let value: String? - @objc public let label: String? - @objc public let type: SSKProtoDataMessage_Contact_Phone_Type + builder.type = SSKProtoDataMessageContactPhone.SSKProtoDataMessageContactPhoneTypeUnwrap(self.type) + } - @objc public init(value: String?, label: String?, type: SSKProtoDataMessage_Contact_Phone_Type) { - self.value = value - self.label = label - self.type = type - } + return proto + } +} - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() - } +// MARK: - SSKProtoDataMessageContactEmail - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessage_Contact_Phone { - let proto = try SignalServiceProtos_DataMessage.Contact.Phone(serializedData: serializedData) - return try parseProto(proto) - } +@objc public class SSKProtoDataMessageContactEmail: NSObject { - fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Contact.Phone) throws -> SSKProtoDataMessage_Contact_Phone { - var value: String? = nil - if proto.hasValue { - value = proto.value - } + // MARK: - SSKProtoDataMessageContactEmailType - var label: String? = nil - if proto.hasLabel { - label = proto.label - } + @objc public enum SSKProtoDataMessageContactEmailType: Int32 { + case home = 1 + case mobile = 2 + case work = 3 + case custom = 4 + } - var type: SSKProtoDataMessage_Contact_Phone_Type = .home - if proto.hasType { - type = SSKProtoDataMessage_Contact_Phone_TypeWrap(proto.type) - } + private class func SSKProtoDataMessageContactEmailTypeWrap(_ value: SignalServiceProtos_DataMessage.Contact.Email.TypeEnum) -> SSKProtoDataMessageContactEmailType { + switch value { + case .home: return .home + case .mobile: return .mobile + case .work: return .work + case .custom: return .custom + } + } - // MARK: - Begin Validation Logic for SSKProtoDataMessage_Contact_Phone - + private class func SSKProtoDataMessageContactEmailTypeUnwrap(_ value: SSKProtoDataMessageContactEmailType) -> SignalServiceProtos_DataMessage.Contact.Email.TypeEnum { + switch value { + case .home: return .home + case .mobile: return .mobile + case .work: return .work + case .custom: return .custom + } + } - // MARK: - End Validation Logic for SSKProtoDataMessage_Contact_Phone - + @objc public let value: String? + @objc public let label: String? + @objc public let type: SSKProtoDataMessageContactEmailType - let result = SSKProtoDataMessage_Contact_Phone(value: value, label: label, type: type) - return result - } + @objc public init(value: String?, label: String?, type: SSKProtoDataMessageContactEmailType) { + self.value = value + self.label = label + self.type = type + } - fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Contact.Phone { - let proto = SignalServiceProtos_DataMessage.Contact.Phone.with { (builder) in - if let value = self.value { - builder.value = value - } + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - if let label = self.label { - builder.label = label - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessageContactEmail { + let proto = try SignalServiceProtos_DataMessage.Contact.Email(serializedData: serializedData) + return try parseProto(proto) + } - builder.type = SSKProtoDataMessage_Contact_Phone.SSKProtoDataMessage_Contact_Phone_TypeUnwrap(self.type) - } + fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Contact.Email) throws -> SSKProtoDataMessageContactEmail { + var value: String? = nil + if proto.hasValue { + value = proto.value + } - return proto - } + var label: String? = nil + if proto.hasLabel { + label = proto.label } - // MARK: - SSKProtoDataMessage_Contact_Email + var type: SSKProtoDataMessageContactEmailType = .home + if proto.hasType { + type = SSKProtoDataMessageContactEmailTypeWrap(proto.type) + } - @objc public class SSKProtoDataMessage_Contact_Email: NSObject { + // MARK: - Begin Validation Logic for SSKProtoDataMessageContactEmail - - // MARK: - SSKProtoDataMessage_Contact_Email_Type + // MARK: - End Validation Logic for SSKProtoDataMessageContactEmail - - @objc public enum SSKProtoDataMessage_Contact_Email_Type: Int32 { - case home = 1 - case mobile = 2 - case work = 3 - case custom = 4 - } + let result = SSKProtoDataMessageContactEmail(value: value, label: label, type: type) + return result + } - private class func SSKProtoDataMessage_Contact_Email_TypeWrap(_ value: SignalServiceProtos_DataMessage.Contact.Email.TypeEnum) -> SSKProtoDataMessage_Contact_Email_Type { - switch value { - case .home: return .home - case .mobile: return .mobile - case .work: return .work - case .custom: return .custom - } + fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Contact.Email { + let proto = SignalServiceProtos_DataMessage.Contact.Email.with { (builder) in + if let value = self.value { + builder.value = value } - private class func SSKProtoDataMessage_Contact_Email_TypeUnwrap(_ value: SSKProtoDataMessage_Contact_Email_Type) -> SignalServiceProtos_DataMessage.Contact.Email.TypeEnum { - switch value { - case .home: return .home - case .mobile: return .mobile - case .work: return .work - case .custom: return .custom - } + if let label = self.label { + builder.label = label } - @objc public let value: String? - @objc public let label: String? - @objc public let type: SSKProtoDataMessage_Contact_Email_Type - - @objc public init(value: String?, label: String?, type: SSKProtoDataMessage_Contact_Email_Type) { - self.value = value - self.label = label - self.type = type - } + builder.type = SSKProtoDataMessageContactEmail.SSKProtoDataMessageContactEmailTypeUnwrap(self.type) + } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() - } + return proto + } +} - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessage_Contact_Email { - let proto = try SignalServiceProtos_DataMessage.Contact.Email(serializedData: serializedData) - return try parseProto(proto) - } +// MARK: - SSKProtoDataMessageContactPostalAddress - fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Contact.Email) throws -> SSKProtoDataMessage_Contact_Email { - var value: String? = nil - if proto.hasValue { - value = proto.value - } +@objc public class SSKProtoDataMessageContactPostalAddress: NSObject { - var label: String? = nil - if proto.hasLabel { - label = proto.label - } + // MARK: - SSKProtoDataMessageContactPostalAddressType - var type: SSKProtoDataMessage_Contact_Email_Type = .home - if proto.hasType { - type = SSKProtoDataMessage_Contact_Email_TypeWrap(proto.type) - } + @objc public enum SSKProtoDataMessageContactPostalAddressType: Int32 { + case home = 1 + case work = 2 + case custom = 3 + } - // MARK: - Begin Validation Logic for SSKProtoDataMessage_Contact_Email - + private class func SSKProtoDataMessageContactPostalAddressTypeWrap(_ value: SignalServiceProtos_DataMessage.Contact.PostalAddress.TypeEnum) -> SSKProtoDataMessageContactPostalAddressType { + switch value { + case .home: return .home + case .work: return .work + case .custom: return .custom + } + } - // MARK: - End Validation Logic for SSKProtoDataMessage_Contact_Email - + private class func SSKProtoDataMessageContactPostalAddressTypeUnwrap(_ value: SSKProtoDataMessageContactPostalAddressType) -> SignalServiceProtos_DataMessage.Contact.PostalAddress.TypeEnum { + switch value { + case .home: return .home + case .work: return .work + case .custom: return .custom + } + } - let result = SSKProtoDataMessage_Contact_Email(value: value, label: label, type: type) - return result - } + @objc public let type: SSKProtoDataMessageContactPostalAddressType + @objc public let street: String? + @objc public let label: String? + @objc public let neighborhood: String? + @objc public let pobox: String? + @objc public let region: String? + @objc public let city: String? + @objc public let country: String? + @objc public let postcode: String? - fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Contact.Email { - let proto = SignalServiceProtos_DataMessage.Contact.Email.with { (builder) in - if let value = self.value { - builder.value = value - } + @objc public init(type: SSKProtoDataMessageContactPostalAddressType, street: String?, label: String?, neighborhood: String?, pobox: String?, region: String?, city: String?, country: String?, postcode: String?) { + self.type = type + self.street = street + self.label = label + self.neighborhood = neighborhood + self.pobox = pobox + self.region = region + self.city = city + self.country = country + self.postcode = postcode + } - if let label = self.label { - builder.label = label - } + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - builder.type = SSKProtoDataMessage_Contact_Email.SSKProtoDataMessage_Contact_Email_TypeUnwrap(self.type) - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessageContactPostalAddress { + let proto = try SignalServiceProtos_DataMessage.Contact.PostalAddress(serializedData: serializedData) + return try parseProto(proto) + } - return proto - } + fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Contact.PostalAddress) throws -> SSKProtoDataMessageContactPostalAddress { + var type: SSKProtoDataMessageContactPostalAddressType = .home + if proto.hasType { + type = SSKProtoDataMessageContactPostalAddressTypeWrap(proto.type) } - // MARK: - SSKProtoDataMessage_Contact_PostalAddress - - @objc public class SSKProtoDataMessage_Contact_PostalAddress: NSObject { - - // MARK: - SSKProtoDataMessage_Contact_PostalAddress_Type - - @objc public enum SSKProtoDataMessage_Contact_PostalAddress_Type: Int32 { - case home = 1 - case work = 2 - case custom = 3 - } + var street: String? = nil + if proto.hasStreet { + street = proto.street + } - private class func SSKProtoDataMessage_Contact_PostalAddress_TypeWrap(_ value: SignalServiceProtos_DataMessage.Contact.PostalAddress.TypeEnum) -> SSKProtoDataMessage_Contact_PostalAddress_Type { - switch value { - case .home: return .home - case .work: return .work - case .custom: return .custom - } - } + var label: String? = nil + if proto.hasLabel { + label = proto.label + } - private class func SSKProtoDataMessage_Contact_PostalAddress_TypeUnwrap(_ value: SSKProtoDataMessage_Contact_PostalAddress_Type) -> SignalServiceProtos_DataMessage.Contact.PostalAddress.TypeEnum { - switch value { - case .home: return .home - case .work: return .work - case .custom: return .custom - } - } + var neighborhood: String? = nil + if proto.hasNeighborhood { + neighborhood = proto.neighborhood + } - @objc public let type: SSKProtoDataMessage_Contact_PostalAddress_Type - @objc public let street: String? - @objc public let label: String? - @objc public let neighborhood: String? - @objc public let pobox: String? - @objc public let region: String? - @objc public let city: String? - @objc public let country: String? - @objc public let postcode: String? + var pobox: String? = nil + if proto.hasPobox { + pobox = proto.pobox + } - @objc public init(type: SSKProtoDataMessage_Contact_PostalAddress_Type, street: String?, label: String?, neighborhood: String?, pobox: String?, region: String?, city: String?, country: String?, postcode: String?) { - self.type = type - self.street = street - self.label = label - self.neighborhood = neighborhood - self.pobox = pobox - self.region = region - self.city = city - self.country = country - self.postcode = postcode - } + var region: String? = nil + if proto.hasRegion { + region = proto.region + } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() - } + var city: String? = nil + if proto.hasCity { + city = proto.city + } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessage_Contact_PostalAddress { - let proto = try SignalServiceProtos_DataMessage.Contact.PostalAddress(serializedData: serializedData) - return try parseProto(proto) - } + var country: String? = nil + if proto.hasCountry { + country = proto.country + } - fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Contact.PostalAddress) throws -> SSKProtoDataMessage_Contact_PostalAddress { - var type: SSKProtoDataMessage_Contact_PostalAddress_Type = .home - if proto.hasType { - type = SSKProtoDataMessage_Contact_PostalAddress_TypeWrap(proto.type) - } + var postcode: String? = nil + if proto.hasPostcode { + postcode = proto.postcode + } - var street: String? = nil - if proto.hasStreet { - street = proto.street - } + // MARK: - Begin Validation Logic for SSKProtoDataMessageContactPostalAddress - - var label: String? = nil - if proto.hasLabel { - label = proto.label - } + // MARK: - End Validation Logic for SSKProtoDataMessageContactPostalAddress - - var neighborhood: String? = nil - if proto.hasNeighborhood { - neighborhood = proto.neighborhood - } + let result = SSKProtoDataMessageContactPostalAddress(type: type, street: street, label: label, neighborhood: neighborhood, pobox: pobox, region: region, city: city, country: country, postcode: postcode) + return result + } - var pobox: String? = nil - if proto.hasPobox { - pobox = proto.pobox - } + fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Contact.PostalAddress { + let proto = SignalServiceProtos_DataMessage.Contact.PostalAddress.with { (builder) in + builder.type = SSKProtoDataMessageContactPostalAddress.SSKProtoDataMessageContactPostalAddressTypeUnwrap(self.type) - var region: String? = nil - if proto.hasRegion { - region = proto.region - } + if let street = self.street { + builder.street = street + } - var city: String? = nil - if proto.hasCity { - city = proto.city - } + if let label = self.label { + builder.label = label + } - var country: String? = nil - if proto.hasCountry { - country = proto.country - } + if let neighborhood = self.neighborhood { + builder.neighborhood = neighborhood + } - var postcode: String? = nil - if proto.hasPostcode { - postcode = proto.postcode - } + if let pobox = self.pobox { + builder.pobox = pobox + } - // MARK: - Begin Validation Logic for SSKProtoDataMessage_Contact_PostalAddress - + if let region = self.region { + builder.region = region + } - // MARK: - End Validation Logic for SSKProtoDataMessage_Contact_PostalAddress - + if let city = self.city { + builder.city = city + } - let result = SSKProtoDataMessage_Contact_PostalAddress(type: type, street: street, label: label, neighborhood: neighborhood, pobox: pobox, region: region, city: city, country: country, postcode: postcode) - return result + if let country = self.country { + builder.country = country } - fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Contact.PostalAddress { - let proto = SignalServiceProtos_DataMessage.Contact.PostalAddress.with { (builder) in - builder.type = SSKProtoDataMessage_Contact_PostalAddress.SSKProtoDataMessage_Contact_PostalAddress_TypeUnwrap(self.type) + if let postcode = self.postcode { + builder.postcode = postcode + } + } - if let street = self.street { - builder.street = street - } + return proto + } +} - if let label = self.label { - builder.label = label - } +// MARK: - SSKProtoDataMessageContactAvatar - if let neighborhood = self.neighborhood { - builder.neighborhood = neighborhood - } +@objc public class SSKProtoDataMessageContactAvatar: NSObject { - if let pobox = self.pobox { - builder.pobox = pobox - } + @objc public let avatar: SSKProtoAttachmentPointer? + @objc public let isProfile: Bool - if let region = self.region { - builder.region = region - } + @objc public init(avatar: SSKProtoAttachmentPointer?, isProfile: Bool) { + self.avatar = avatar + self.isProfile = isProfile + } - if let city = self.city { - builder.city = city - } + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - if let country = self.country { - builder.country = country - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessageContactAvatar { + let proto = try SignalServiceProtos_DataMessage.Contact.Avatar(serializedData: serializedData) + return try parseProto(proto) + } - if let postcode = self.postcode { - builder.postcode = postcode - } - } + fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Contact.Avatar) throws -> SSKProtoDataMessageContactAvatar { + var avatar: SSKProtoAttachmentPointer? = nil + if proto.hasAvatar { + avatar = try SSKProtoAttachmentPointer.parseProto(proto.avatar) + } - return proto - } + var isProfile: Bool = false + if proto.hasIsProfile { + isProfile = proto.isProfile } - // MARK: - SSKProtoDataMessage_Contact_Avatar + // MARK: - Begin Validation Logic for SSKProtoDataMessageContactAvatar - - @objc public class SSKProtoDataMessage_Contact_Avatar: NSObject { + // MARK: - End Validation Logic for SSKProtoDataMessageContactAvatar - - @objc public let avatar: SSKProtoAttachmentPointer? - @objc public let isProfile: Bool + let result = SSKProtoDataMessageContactAvatar(avatar: avatar, isProfile: isProfile) + return result + } - @objc public init(avatar: SSKProtoAttachmentPointer?, isProfile: Bool) { - self.avatar = avatar - self.isProfile = isProfile + fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Contact.Avatar { + let proto = SignalServiceProtos_DataMessage.Contact.Avatar.with { (builder) in + if let avatar = self.avatar { + builder.avatar = avatar.asProtobuf } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() - } + builder.isProfile = self.isProfile + } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessage_Contact_Avatar { - let proto = try SignalServiceProtos_DataMessage.Contact.Avatar(serializedData: serializedData) - return try parseProto(proto) - } + return proto + } +} - fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Contact.Avatar) throws -> SSKProtoDataMessage_Contact_Avatar { - var avatar: SSKProtoAttachmentPointer? = nil - if proto.hasAvatar { - avatar = try SSKProtoAttachmentPointer.parseProto(proto.avatar) - } +// MARK: - SSKProtoDataMessageContact - var isProfile: Bool = false - if proto.hasIsProfile { - isProfile = proto.isProfile - } +@objc public class SSKProtoDataMessageContact: NSObject { - // MARK: - Begin Validation Logic for SSKProtoDataMessage_Contact_Avatar - + @objc public let name: SSKProtoDataMessageContactName? + @objc public let number: [SSKProtoDataMessageContactPhone] + @objc public let address: [SSKProtoDataMessageContactPostalAddress] + @objc public let email: [SSKProtoDataMessageContactEmail] + @objc public let organization: String? + @objc public let avatar: SSKProtoDataMessageContactAvatar? - // MARK: - End Validation Logic for SSKProtoDataMessage_Contact_Avatar - + @objc public init(name: SSKProtoDataMessageContactName?, number: [SSKProtoDataMessageContactPhone], address: [SSKProtoDataMessageContactPostalAddress], email: [SSKProtoDataMessageContactEmail], organization: String?, avatar: SSKProtoDataMessageContactAvatar?) { + self.name = name + self.number = number + self.address = address + self.email = email + self.organization = organization + self.avatar = avatar + } - let result = SSKProtoDataMessage_Contact_Avatar(avatar: avatar, isProfile: isProfile) - return result - } + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Contact.Avatar { - let proto = SignalServiceProtos_DataMessage.Contact.Avatar.with { (builder) in - if let avatar = self.avatar { - builder.avatar = avatar.asProtobuf - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessageContact { + let proto = try SignalServiceProtos_DataMessage.Contact(serializedData: serializedData) + return try parseProto(proto) + } - builder.isProfile = self.isProfile - } + fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Contact) throws -> SSKProtoDataMessageContact { + var name: SSKProtoDataMessageContactName? = nil + if proto.hasName { + name = try SSKProtoDataMessageContactName.parseProto(proto.name) + } - return proto - } + var number: [SSKProtoDataMessageContactPhone] = [] + for item in proto.number { + let wrapped = try SSKProtoDataMessageContactPhone.parseProto(item) + number.append(wrapped) } - @objc public let name: SSKProtoDataMessage_Contact_Name? - @objc public let number: [SSKProtoDataMessage_Contact_Phone] - @objc public let address: [SSKProtoDataMessage_Contact_PostalAddress] - @objc public let email: [SSKProtoDataMessage_Contact_Email] - @objc public let organization: String? - @objc public let avatar: SSKProtoDataMessage_Contact_Avatar? + var address: [SSKProtoDataMessageContactPostalAddress] = [] + for item in proto.address { + let wrapped = try SSKProtoDataMessageContactPostalAddress.parseProto(item) + address.append(wrapped) + } + + var email: [SSKProtoDataMessageContactEmail] = [] + for item in proto.email { + let wrapped = try SSKProtoDataMessageContactEmail.parseProto(item) + email.append(wrapped) + } - @objc public init(name: SSKProtoDataMessage_Contact_Name?, number: [SSKProtoDataMessage_Contact_Phone], address: [SSKProtoDataMessage_Contact_PostalAddress], email: [SSKProtoDataMessage_Contact_Email], organization: String?, avatar: SSKProtoDataMessage_Contact_Avatar?) { - self.name = name - self.number = number - self.address = address - self.email = email - self.organization = organization - self.avatar = avatar + var organization: String? = nil + if proto.hasOrganization { + organization = proto.organization } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() + var avatar: SSKProtoDataMessageContactAvatar? = nil + if proto.hasAvatar { + avatar = try SSKProtoDataMessageContactAvatar.parseProto(proto.avatar) } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoDataMessage_Contact { - let proto = try SignalServiceProtos_DataMessage.Contact(serializedData: serializedData) - return try parseProto(proto) - } + // MARK: - Begin Validation Logic for SSKProtoDataMessageContact - + + // MARK: - End Validation Logic for SSKProtoDataMessageContact - + + let result = SSKProtoDataMessageContact(name: name, number: number, address: address, email: email, organization: organization, avatar: avatar) + return result + } - fileprivate class func parseProto(_ proto: SignalServiceProtos_DataMessage.Contact) throws -> SSKProtoDataMessage_Contact { - var name: SSKProtoDataMessage_Contact_Name? = nil - if proto.hasName { - name = try SSKProtoDataMessage_Contact_Name.parseProto(proto.name) + fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Contact { + let proto = SignalServiceProtos_DataMessage.Contact.with { (builder) in + if let name = self.name { + builder.name = name.asProtobuf } - var number: [SSKProtoDataMessage_Contact_Phone] = [] - for item in proto.number { - let wrapped = try SSKProtoDataMessage_Contact_Phone.parseProto(item) - number.append(wrapped) + var numberUnwrapped = [SignalServiceProtos_DataMessage.Contact.Phone]() + for item in number { + numberUnwrapped.append(item.asProtobuf) } + builder.number = numberUnwrapped - var address: [SSKProtoDataMessage_Contact_PostalAddress] = [] - for item in proto.address { - let wrapped = try SSKProtoDataMessage_Contact_PostalAddress.parseProto(item) - address.append(wrapped) + var addressUnwrapped = [SignalServiceProtos_DataMessage.Contact.PostalAddress]() + for item in address { + addressUnwrapped.append(item.asProtobuf) } + builder.address = addressUnwrapped - var email: [SSKProtoDataMessage_Contact_Email] = [] - for item in proto.email { - let wrapped = try SSKProtoDataMessage_Contact_Email.parseProto(item) - email.append(wrapped) + var emailUnwrapped = [SignalServiceProtos_DataMessage.Contact.Email]() + for item in email { + emailUnwrapped.append(item.asProtobuf) } + builder.email = emailUnwrapped - var organization: String? = nil - if proto.hasOrganization { - organization = proto.organization + if let organization = self.organization { + builder.organization = organization } - var avatar: SSKProtoDataMessage_Contact_Avatar? = nil - if proto.hasAvatar { - avatar = try SSKProtoDataMessage_Contact_Avatar.parseProto(proto.avatar) + if let avatar = self.avatar { + builder.avatar = avatar.asProtobuf } - - // MARK: - Begin Validation Logic for SSKProtoDataMessage_Contact - - - // MARK: - End Validation Logic for SSKProtoDataMessage_Contact - - - let result = SSKProtoDataMessage_Contact(name: name, number: number, address: address, email: email, organization: organization, avatar: avatar) - return result } - fileprivate var asProtobuf: SignalServiceProtos_DataMessage.Contact { - let proto = SignalServiceProtos_DataMessage.Contact.with { (builder) in - if let name = self.name { - builder.name = name.asProtobuf - } + return proto + } +} - var numberUnwrapped = [SignalServiceProtos_DataMessage.Contact.Phone]() - for item in number { - numberUnwrapped.append(item.asProtobuf) - } - builder.number = numberUnwrapped +// MARK: - SSKProtoDataMessage - var addressUnwrapped = [SignalServiceProtos_DataMessage.Contact.PostalAddress]() - for item in address { - addressUnwrapped.append(item.asProtobuf) - } - builder.address = addressUnwrapped +@objc public class SSKProtoDataMessage: NSObject { - var emailUnwrapped = [SignalServiceProtos_DataMessage.Contact.Email]() - for item in email { - emailUnwrapped.append(item.asProtobuf) - } - builder.email = emailUnwrapped + // MARK: - SSKProtoDataMessageFlags - if let organization = self.organization { - builder.organization = organization - } + @objc public enum SSKProtoDataMessageFlags: Int32 { + case endSession = 1 + case expirationTimerUpdate = 2 + case profileKeyUpdate = 4 + } - if let avatar = self.avatar { - builder.avatar = avatar.asProtobuf - } - } + private class func SSKProtoDataMessageFlagsWrap(_ value: SignalServiceProtos_DataMessage.Flags) -> SSKProtoDataMessageFlags { + switch value { + case .endSession: return .endSession + case .expirationTimerUpdate: return .expirationTimerUpdate + case .profileKeyUpdate: return .profileKeyUpdate + } + } - return proto + private class func SSKProtoDataMessageFlagsUnwrap(_ value: SSKProtoDataMessageFlags) -> SignalServiceProtos_DataMessage.Flags { + switch value { + case .endSession: return .endSession + case .expirationTimerUpdate: return .expirationTimerUpdate + case .profileKeyUpdate: return .profileKeyUpdate } } @@ -1426,10 +1428,10 @@ public enum SSKProtoError: Error { @objc public let flags: UInt32 @objc public let timestamp: UInt64 @objc public let profileKey: Data? - @objc public let contact: [SSKProtoDataMessage_Contact] - @objc public let quote: SSKProtoDataMessage_Quote? + @objc public let contact: [SSKProtoDataMessageContact] + @objc public let quote: SSKProtoDataMessageQuote? - @objc public init(body: String?, group: SSKProtoGroupContext?, attachments: [SSKProtoAttachmentPointer], expireTimer: UInt32, flags: UInt32, timestamp: UInt64, profileKey: Data?, contact: [SSKProtoDataMessage_Contact], quote: SSKProtoDataMessage_Quote?) { + @objc public init(body: String?, group: SSKProtoGroupContext?, attachments: [SSKProtoAttachmentPointer], expireTimer: UInt32, flags: UInt32, timestamp: UInt64, profileKey: Data?, contact: [SSKProtoDataMessageContact], quote: SSKProtoDataMessageQuote?) { self.body = body self.group = group self.attachments = attachments @@ -1488,15 +1490,15 @@ public enum SSKProtoError: Error { profileKey = proto.profileKey } - var contact: [SSKProtoDataMessage_Contact] = [] + var contact: [SSKProtoDataMessageContact] = [] for item in proto.contact { - let wrapped = try SSKProtoDataMessage_Contact.parseProto(item) + let wrapped = try SSKProtoDataMessageContact.parseProto(item) contact.append(wrapped) } - var quote: SSKProtoDataMessage_Quote? = nil + var quote: SSKProtoDataMessageQuote? = nil if proto.hasQuote { - quote = try SSKProtoDataMessage_Quote.parseProto(proto.quote) + quote = try SSKProtoDataMessageQuote.parseProto(proto.quote) } // MARK: - Begin Validation Logic for SSKProtoDataMessage - @@ -1597,31 +1599,31 @@ public enum SSKProtoError: Error { @objc public class SSKProtoReceiptMessage: NSObject { - // MARK: - SSKProtoReceiptMessage_Type + // MARK: - SSKProtoReceiptMessageType - @objc public enum SSKProtoReceiptMessage_Type: Int32 { + @objc public enum SSKProtoReceiptMessageType: Int32 { case delivery = 0 case read = 1 } - private class func SSKProtoReceiptMessage_TypeWrap(_ value: SignalServiceProtos_ReceiptMessage.TypeEnum) -> SSKProtoReceiptMessage_Type { + private class func SSKProtoReceiptMessageTypeWrap(_ value: SignalServiceProtos_ReceiptMessage.TypeEnum) -> SSKProtoReceiptMessageType { switch value { - case .delivery: return .delivery - case .read: return .read + case .delivery: return .delivery + case .read: return .read } } - private class func SSKProtoReceiptMessage_TypeUnwrap(_ value: SSKProtoReceiptMessage_Type) -> SignalServiceProtos_ReceiptMessage.TypeEnum { + private class func SSKProtoReceiptMessageTypeUnwrap(_ value: SSKProtoReceiptMessageType) -> SignalServiceProtos_ReceiptMessage.TypeEnum { switch value { - case .delivery: return .delivery - case .read: return .read + case .delivery: return .delivery + case .read: return .read } } - @objc public let type: SSKProtoReceiptMessage_Type + @objc public let type: SSKProtoReceiptMessageType @objc public let timestamp: [UInt64] - @objc public init(type: SSKProtoReceiptMessage_Type, timestamp: [UInt64]) { + @objc public init(type: SSKProtoReceiptMessageType, timestamp: [UInt64]) { self.type = type self.timestamp = timestamp } @@ -1637,9 +1639,9 @@ public enum SSKProtoError: Error { } fileprivate class func parseProto(_ proto: SignalServiceProtos_ReceiptMessage) throws -> SSKProtoReceiptMessage { - var type: SSKProtoReceiptMessage_Type = .delivery + var type: SSKProtoReceiptMessageType = .delivery if proto.hasType { - type = SSKProtoReceiptMessage_TypeWrap(proto.type) + type = SSKProtoReceiptMessageTypeWrap(proto.type) } var timestamp: [UInt64] = [] @@ -1658,7 +1660,7 @@ public enum SSKProtoError: Error { fileprivate var asProtobuf: SignalServiceProtos_ReceiptMessage { let proto = SignalServiceProtos_ReceiptMessage.with { (builder) in - builder.type = SSKProtoReceiptMessage.SSKProtoReceiptMessage_TypeUnwrap(self.type) + builder.type = SSKProtoReceiptMessage.SSKProtoReceiptMessageTypeUnwrap(self.type) var timestampUnwrapped = [UInt64]() for item in timestamp { @@ -1675,36 +1677,36 @@ public enum SSKProtoError: Error { @objc public class SSKProtoVerified: NSObject { - // MARK: - SSKProtoVerified_State + // MARK: - SSKProtoVerifiedState - @objc public enum SSKProtoVerified_State: Int32 { + @objc public enum SSKProtoVerifiedState: Int32 { case `default` = 0 case verified = 1 case unverified = 2 } - private class func SSKProtoVerified_StateWrap(_ value: SignalServiceProtos_Verified.State) -> SSKProtoVerified_State { + private class func SSKProtoVerifiedStateWrap(_ value: SignalServiceProtos_Verified.State) -> SSKProtoVerifiedState { switch value { - case .default: return .default - case .verified: return .verified - case .unverified: return .unverified + case .default: return .default + case .verified: return .verified + case .unverified: return .unverified } } - private class func SSKProtoVerified_StateUnwrap(_ value: SSKProtoVerified_State) -> SignalServiceProtos_Verified.State { + private class func SSKProtoVerifiedStateUnwrap(_ value: SSKProtoVerifiedState) -> SignalServiceProtos_Verified.State { switch value { - case .default: return .default - case .verified: return .verified - case .unverified: return .unverified + case .default: return .default + case .verified: return .verified + case .unverified: return .unverified } } @objc public let destination: String? - @objc public let state: SSKProtoVerified_State + @objc public let state: SSKProtoVerifiedState @objc public let identityKey: Data? @objc public let nullMessage: Data? - @objc public init(destination: String?, state: SSKProtoVerified_State, identityKey: Data?, nullMessage: Data?) { + @objc public init(destination: String?, state: SSKProtoVerifiedState, identityKey: Data?, nullMessage: Data?) { self.destination = destination self.state = state self.identityKey = identityKey @@ -1727,9 +1729,9 @@ public enum SSKProtoError: Error { destination = proto.destination } - var state: SSKProtoVerified_State = .default + var state: SSKProtoVerifiedState = .default if proto.hasState { - state = SSKProtoVerified_StateWrap(proto.state) + state = SSKProtoVerifiedStateWrap(proto.state) } var identityKey: Data? = nil @@ -1756,7 +1758,7 @@ public enum SSKProtoError: Error { builder.destination = destination } - builder.state = SSKProtoVerified.SSKProtoVerified_StateUnwrap(self.state) + builder.state = SSKProtoVerified.SSKProtoVerifiedStateUnwrap(self.state) if let identityKey = self.identityKey { builder.identityKey = identityKey @@ -1771,412 +1773,412 @@ public enum SSKProtoError: Error { } } -// MARK: - SSKProtoSyncMessage +// MARK: - SSKProtoSyncMessageSent -@objc public class SSKProtoSyncMessage: NSObject { +@objc public class SSKProtoSyncMessageSent: NSObject { + + @objc public let destination: String? + @objc public let message: SSKProtoDataMessage? + @objc public let timestamp: UInt64 + @objc public let expirationStartTimestamp: UInt64 + + @objc public init(destination: String?, message: SSKProtoDataMessage?, timestamp: UInt64, expirationStartTimestamp: UInt64) { + self.destination = destination + self.message = message + self.timestamp = timestamp + self.expirationStartTimestamp = expirationStartTimestamp + } - // MARK: - SSKProtoSyncMessage_Sent + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - @objc public class SSKProtoSyncMessage_Sent: NSObject { + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessageSent { + let proto = try SignalServiceProtos_SyncMessage.Sent(serializedData: serializedData) + return try parseProto(proto) + } - @objc public let destination: String? - @objc public let message: SSKProtoDataMessage? - @objc public let timestamp: UInt64 - @objc public let expirationStartTimestamp: UInt64 + fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Sent) throws -> SSKProtoSyncMessageSent { + var destination: String? = nil + if proto.hasDestination { + destination = proto.destination + } - @objc public init(destination: String?, message: SSKProtoDataMessage?, timestamp: UInt64, expirationStartTimestamp: UInt64) { - self.destination = destination - self.message = message - self.timestamp = timestamp - self.expirationStartTimestamp = expirationStartTimestamp + var message: SSKProtoDataMessage? = nil + if proto.hasMessage { + message = try SSKProtoDataMessage.parseProto(proto.message) } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() + var timestamp: UInt64 = 0 + if proto.hasTimestamp { + timestamp = proto.timestamp } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessage_Sent { - let proto = try SignalServiceProtos_SyncMessage.Sent(serializedData: serializedData) - return try parseProto(proto) + var expirationStartTimestamp: UInt64 = 0 + if proto.hasExpirationStartTimestamp { + expirationStartTimestamp = proto.expirationStartTimestamp } - fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Sent) throws -> SSKProtoSyncMessage_Sent { - var destination: String? = nil - if proto.hasDestination { - destination = proto.destination - } + // MARK: - Begin Validation Logic for SSKProtoSyncMessageSent - - var message: SSKProtoDataMessage? = nil - if proto.hasMessage { - message = try SSKProtoDataMessage.parseProto(proto.message) - } + // MARK: - End Validation Logic for SSKProtoSyncMessageSent - - var timestamp: UInt64 = 0 - if proto.hasTimestamp { - timestamp = proto.timestamp - } + let result = SSKProtoSyncMessageSent(destination: destination, message: message, timestamp: timestamp, expirationStartTimestamp: expirationStartTimestamp) + return result + } - var expirationStartTimestamp: UInt64 = 0 - if proto.hasExpirationStartTimestamp { - expirationStartTimestamp = proto.expirationStartTimestamp + fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Sent { + let proto = SignalServiceProtos_SyncMessage.Sent.with { (builder) in + if let destination = self.destination { + builder.destination = destination } - // MARK: - Begin Validation Logic for SSKProtoSyncMessage_Sent - + if let message = self.message { + builder.message = message.asProtobuf + } - // MARK: - End Validation Logic for SSKProtoSyncMessage_Sent - + builder.timestamp = self.timestamp - let result = SSKProtoSyncMessage_Sent(destination: destination, message: message, timestamp: timestamp, expirationStartTimestamp: expirationStartTimestamp) - return result + builder.expirationStartTimestamp = self.expirationStartTimestamp } - fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Sent { - let proto = SignalServiceProtos_SyncMessage.Sent.with { (builder) in - if let destination = self.destination { - builder.destination = destination - } + return proto + } +} - if let message = self.message { - builder.message = message.asProtobuf - } +// MARK: - SSKProtoSyncMessageContacts - builder.timestamp = self.timestamp +@objc public class SSKProtoSyncMessageContacts: NSObject { - builder.expirationStartTimestamp = self.expirationStartTimestamp - } + @objc public let blob: SSKProtoAttachmentPointer? + @objc public let isComplete: Bool - return proto - } + @objc public init(blob: SSKProtoAttachmentPointer?, isComplete: Bool) { + self.blob = blob + self.isComplete = isComplete } - // MARK: - SSKProtoSyncMessage_Contacts - - @objc public class SSKProtoSyncMessage_Contacts: NSObject { - - @objc public let blob: SSKProtoAttachmentPointer? - @objc public let isComplete: Bool + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - @objc public init(blob: SSKProtoAttachmentPointer?, isComplete: Bool) { - self.blob = blob - self.isComplete = isComplete - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessageContacts { + let proto = try SignalServiceProtos_SyncMessage.Contacts(serializedData: serializedData) + return try parseProto(proto) + } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() + fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Contacts) throws -> SSKProtoSyncMessageContacts { + var blob: SSKProtoAttachmentPointer? = nil + if proto.hasBlob { + blob = try SSKProtoAttachmentPointer.parseProto(proto.blob) } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessage_Contacts { - let proto = try SignalServiceProtos_SyncMessage.Contacts(serializedData: serializedData) - return try parseProto(proto) + var isComplete: Bool = false + if proto.hasIsComplete { + isComplete = proto.isComplete } - fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Contacts) throws -> SSKProtoSyncMessage_Contacts { - var blob: SSKProtoAttachmentPointer? = nil - if proto.hasBlob { - blob = try SSKProtoAttachmentPointer.parseProto(proto.blob) - } - - var isComplete: Bool = false - if proto.hasIsComplete { - isComplete = proto.isComplete - } - - // MARK: - Begin Validation Logic for SSKProtoSyncMessage_Contacts - + // MARK: - Begin Validation Logic for SSKProtoSyncMessageContacts - - // MARK: - End Validation Logic for SSKProtoSyncMessage_Contacts - + // MARK: - End Validation Logic for SSKProtoSyncMessageContacts - - let result = SSKProtoSyncMessage_Contacts(blob: blob, isComplete: isComplete) - return result - } - - fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Contacts { - let proto = SignalServiceProtos_SyncMessage.Contacts.with { (builder) in - if let blob = self.blob { - builder.blob = blob.asProtobuf - } + let result = SSKProtoSyncMessageContacts(blob: blob, isComplete: isComplete) + return result + } - builder.isComplete = self.isComplete + fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Contacts { + let proto = SignalServiceProtos_SyncMessage.Contacts.with { (builder) in + if let blob = self.blob { + builder.blob = blob.asProtobuf } - return proto + builder.isComplete = self.isComplete } + + return proto } +} - // MARK: - SSKProtoSyncMessage_Groups +// MARK: - SSKProtoSyncMessageGroups - @objc public class SSKProtoSyncMessage_Groups: NSObject { +@objc public class SSKProtoSyncMessageGroups: NSObject { - @objc public let blob: SSKProtoAttachmentPointer? + @objc public let blob: SSKProtoAttachmentPointer? - @objc public init(blob: SSKProtoAttachmentPointer?) { - self.blob = blob - } + @objc public init(blob: SSKProtoAttachmentPointer?) { + self.blob = blob + } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() - } + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessage_Groups { - let proto = try SignalServiceProtos_SyncMessage.Groups(serializedData: serializedData) - return try parseProto(proto) - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessageGroups { + let proto = try SignalServiceProtos_SyncMessage.Groups(serializedData: serializedData) + return try parseProto(proto) + } - fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Groups) throws -> SSKProtoSyncMessage_Groups { - var blob: SSKProtoAttachmentPointer? = nil - if proto.hasBlob { - blob = try SSKProtoAttachmentPointer.parseProto(proto.blob) - } + fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Groups) throws -> SSKProtoSyncMessageGroups { + var blob: SSKProtoAttachmentPointer? = nil + if proto.hasBlob { + blob = try SSKProtoAttachmentPointer.parseProto(proto.blob) + } - // MARK: - Begin Validation Logic for SSKProtoSyncMessage_Groups - + // MARK: - Begin Validation Logic for SSKProtoSyncMessageGroups - - // MARK: - End Validation Logic for SSKProtoSyncMessage_Groups - + // MARK: - End Validation Logic for SSKProtoSyncMessageGroups - - let result = SSKProtoSyncMessage_Groups(blob: blob) - return result - } + let result = SSKProtoSyncMessageGroups(blob: blob) + return result + } - fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Groups { - let proto = SignalServiceProtos_SyncMessage.Groups.with { (builder) in - if let blob = self.blob { - builder.blob = blob.asProtobuf - } + fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Groups { + let proto = SignalServiceProtos_SyncMessage.Groups.with { (builder) in + if let blob = self.blob { + builder.blob = blob.asProtobuf } - - return proto } + + return proto } +} - // MARK: - SSKProtoSyncMessage_Blocked +// MARK: - SSKProtoSyncMessageBlocked - @objc public class SSKProtoSyncMessage_Blocked: NSObject { +@objc public class SSKProtoSyncMessageBlocked: NSObject { - @objc public let numbers: [String] + @objc public let numbers: [String] - @objc public init(numbers: [String]) { - self.numbers = numbers - } + @objc public init(numbers: [String]) { + self.numbers = numbers + } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() - } + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessage_Blocked { - let proto = try SignalServiceProtos_SyncMessage.Blocked(serializedData: serializedData) - return try parseProto(proto) - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessageBlocked { + let proto = try SignalServiceProtos_SyncMessage.Blocked(serializedData: serializedData) + return try parseProto(proto) + } - fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Blocked) throws -> SSKProtoSyncMessage_Blocked { - var numbers: [String] = [] - for item in proto.numbers { - let wrapped = item - numbers.append(wrapped) - } + fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Blocked) throws -> SSKProtoSyncMessageBlocked { + var numbers: [String] = [] + for item in proto.numbers { + let wrapped = item + numbers.append(wrapped) + } - // MARK: - Begin Validation Logic for SSKProtoSyncMessage_Blocked - + // MARK: - Begin Validation Logic for SSKProtoSyncMessageBlocked - - // MARK: - End Validation Logic for SSKProtoSyncMessage_Blocked - + // MARK: - End Validation Logic for SSKProtoSyncMessageBlocked - - let result = SSKProtoSyncMessage_Blocked(numbers: numbers) - return result - } + let result = SSKProtoSyncMessageBlocked(numbers: numbers) + return result + } - fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Blocked { - let proto = SignalServiceProtos_SyncMessage.Blocked.with { (builder) in - var numbersUnwrapped = [String]() - for item in numbers { - numbersUnwrapped.append(item) - } - builder.numbers = numbersUnwrapped + fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Blocked { + let proto = SignalServiceProtos_SyncMessage.Blocked.with { (builder) in + var numbersUnwrapped = [String]() + for item in numbers { + numbersUnwrapped.append(item) } - - return proto + builder.numbers = numbersUnwrapped } + + return proto } +} - // MARK: - SSKProtoSyncMessage_Request +// MARK: - SSKProtoSyncMessageRequest - @objc public class SSKProtoSyncMessage_Request: NSObject { +@objc public class SSKProtoSyncMessageRequest: NSObject { - // MARK: - SSKProtoSyncMessage_Request_Type + // MARK: - SSKProtoSyncMessageRequestType - @objc public enum SSKProtoSyncMessage_Request_Type: Int32 { - case unknown = 0 - case contacts = 1 - case groups = 2 - case blocked = 3 - case configuration = 4 - } + @objc public enum SSKProtoSyncMessageRequestType: Int32 { + case unknown = 0 + case contacts = 1 + case groups = 2 + case blocked = 3 + case configuration = 4 + } - private class func SSKProtoSyncMessage_Request_TypeWrap(_ value: SignalServiceProtos_SyncMessage.Request.TypeEnum) -> SSKProtoSyncMessage_Request_Type { - switch value { - case .unknown: return .unknown - case .contacts: return .contacts - case .groups: return .groups - case .blocked: return .blocked - case .configuration: return .configuration - } + private class func SSKProtoSyncMessageRequestTypeWrap(_ value: SignalServiceProtos_SyncMessage.Request.TypeEnum) -> SSKProtoSyncMessageRequestType { + switch value { + case .unknown: return .unknown + case .contacts: return .contacts + case .groups: return .groups + case .blocked: return .blocked + case .configuration: return .configuration } + } - private class func SSKProtoSyncMessage_Request_TypeUnwrap(_ value: SSKProtoSyncMessage_Request_Type) -> SignalServiceProtos_SyncMessage.Request.TypeEnum { - switch value { - case .unknown: return .unknown - case .contacts: return .contacts - case .groups: return .groups - case .blocked: return .blocked - case .configuration: return .configuration - } + private class func SSKProtoSyncMessageRequestTypeUnwrap(_ value: SSKProtoSyncMessageRequestType) -> SignalServiceProtos_SyncMessage.Request.TypeEnum { + switch value { + case .unknown: return .unknown + case .contacts: return .contacts + case .groups: return .groups + case .blocked: return .blocked + case .configuration: return .configuration } + } - @objc public let type: SSKProtoSyncMessage_Request_Type + @objc public let type: SSKProtoSyncMessageRequestType - @objc public init(type: SSKProtoSyncMessage_Request_Type) { - self.type = type - } + @objc public init(type: SSKProtoSyncMessageRequestType) { + self.type = type + } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() - } + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } + + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessageRequest { + let proto = try SignalServiceProtos_SyncMessage.Request(serializedData: serializedData) + return try parseProto(proto) + } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessage_Request { - let proto = try SignalServiceProtos_SyncMessage.Request(serializedData: serializedData) - return try parseProto(proto) + fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Request) throws -> SSKProtoSyncMessageRequest { + var type: SSKProtoSyncMessageRequestType = .unknown + if proto.hasType { + type = SSKProtoSyncMessageRequestTypeWrap(proto.type) } - fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Request) throws -> SSKProtoSyncMessage_Request { - var type: SSKProtoSyncMessage_Request_Type = .unknown - if proto.hasType { - type = SSKProtoSyncMessage_Request_TypeWrap(proto.type) - } + // MARK: - Begin Validation Logic for SSKProtoSyncMessageRequest - - // MARK: - Begin Validation Logic for SSKProtoSyncMessage_Request - + // MARK: - End Validation Logic for SSKProtoSyncMessageRequest - - // MARK: - End Validation Logic for SSKProtoSyncMessage_Request - + let result = SSKProtoSyncMessageRequest(type: type) + return result + } - let result = SSKProtoSyncMessage_Request(type: type) - return result + fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Request { + let proto = SignalServiceProtos_SyncMessage.Request.with { (builder) in + builder.type = SSKProtoSyncMessageRequest.SSKProtoSyncMessageRequestTypeUnwrap(self.type) } - fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Request { - let proto = SignalServiceProtos_SyncMessage.Request.with { (builder) in - builder.type = SSKProtoSyncMessage_Request.SSKProtoSyncMessage_Request_TypeUnwrap(self.type) - } - - return proto - } + return proto } +} - // MARK: - SSKProtoSyncMessage_Read - - @objc public class SSKProtoSyncMessage_Read: NSObject { +// MARK: - SSKProtoSyncMessageRead - @objc public let sender: String? - @objc public let timestamp: UInt64 +@objc public class SSKProtoSyncMessageRead: NSObject { - @objc public init(sender: String?, timestamp: UInt64) { - self.sender = sender - self.timestamp = timestamp - } + @objc public let sender: String? + @objc public let timestamp: UInt64 - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() - } + @objc public init(sender: String?, timestamp: UInt64) { + self.sender = sender + self.timestamp = timestamp + } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessage_Read { - let proto = try SignalServiceProtos_SyncMessage.Read(serializedData: serializedData) - return try parseProto(proto) - } + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Read) throws -> SSKProtoSyncMessage_Read { - var sender: String? = nil - if proto.hasSender { - sender = proto.sender - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessageRead { + let proto = try SignalServiceProtos_SyncMessage.Read(serializedData: serializedData) + return try parseProto(proto) + } - var timestamp: UInt64 = 0 - if proto.hasTimestamp { - timestamp = proto.timestamp - } + fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Read) throws -> SSKProtoSyncMessageRead { + var sender: String? = nil + if proto.hasSender { + sender = proto.sender + } - // MARK: - Begin Validation Logic for SSKProtoSyncMessage_Read - + var timestamp: UInt64 = 0 + if proto.hasTimestamp { + timestamp = proto.timestamp + } - // MARK: - End Validation Logic for SSKProtoSyncMessage_Read - + // MARK: - Begin Validation Logic for SSKProtoSyncMessageRead - - let result = SSKProtoSyncMessage_Read(sender: sender, timestamp: timestamp) - return result - } + // MARK: - End Validation Logic for SSKProtoSyncMessageRead - - fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Read { - let proto = SignalServiceProtos_SyncMessage.Read.with { (builder) in - if let sender = self.sender { - builder.sender = sender - } + let result = SSKProtoSyncMessageRead(sender: sender, timestamp: timestamp) + return result + } - builder.timestamp = self.timestamp + fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Read { + let proto = SignalServiceProtos_SyncMessage.Read.with { (builder) in + if let sender = self.sender { + builder.sender = sender } - return proto + builder.timestamp = self.timestamp } + + return proto } +} - // MARK: - SSKProtoSyncMessage_Configuration +// MARK: - SSKProtoSyncMessageConfiguration - @objc public class SSKProtoSyncMessage_Configuration: NSObject { +@objc public class SSKProtoSyncMessageConfiguration: NSObject { - @objc public let readReceipts: Bool + @objc public let readReceipts: Bool - @objc public init(readReceipts: Bool) { - self.readReceipts = readReceipts - } + @objc public init(readReceipts: Bool) { + self.readReceipts = readReceipts + } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() - } + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } + + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessageConfiguration { + let proto = try SignalServiceProtos_SyncMessage.Configuration(serializedData: serializedData) + return try parseProto(proto) + } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoSyncMessage_Configuration { - let proto = try SignalServiceProtos_SyncMessage.Configuration(serializedData: serializedData) - return try parseProto(proto) + fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Configuration) throws -> SSKProtoSyncMessageConfiguration { + var readReceipts: Bool = false + if proto.hasReadReceipts { + readReceipts = proto.readReceipts } - fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage.Configuration) throws -> SSKProtoSyncMessage_Configuration { - var readReceipts: Bool = false - if proto.hasReadReceipts { - readReceipts = proto.readReceipts - } + // MARK: - Begin Validation Logic for SSKProtoSyncMessageConfiguration - - // MARK: - Begin Validation Logic for SSKProtoSyncMessage_Configuration - + // MARK: - End Validation Logic for SSKProtoSyncMessageConfiguration - - // MARK: - End Validation Logic for SSKProtoSyncMessage_Configuration - + let result = SSKProtoSyncMessageConfiguration(readReceipts: readReceipts) + return result + } - let result = SSKProtoSyncMessage_Configuration(readReceipts: readReceipts) - return result + fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Configuration { + let proto = SignalServiceProtos_SyncMessage.Configuration.with { (builder) in + builder.readReceipts = self.readReceipts } - fileprivate var asProtobuf: SignalServiceProtos_SyncMessage.Configuration { - let proto = SignalServiceProtos_SyncMessage.Configuration.with { (builder) in - builder.readReceipts = self.readReceipts - } - - return proto - } + return proto } +} - @objc public let sent: SSKProtoSyncMessage_Sent? - @objc public let groups: SSKProtoSyncMessage_Groups? - @objc public let contacts: SSKProtoSyncMessage_Contacts? - @objc public let read: [SSKProtoSyncMessage_Read] - @objc public let request: SSKProtoSyncMessage_Request? +// MARK: - SSKProtoSyncMessage + +@objc public class SSKProtoSyncMessage: NSObject { + + @objc public let sent: SSKProtoSyncMessageSent? + @objc public let groups: SSKProtoSyncMessageGroups? + @objc public let contacts: SSKProtoSyncMessageContacts? + @objc public let read: [SSKProtoSyncMessageRead] + @objc public let request: SSKProtoSyncMessageRequest? @objc public let verified: SSKProtoVerified? - @objc public let blocked: SSKProtoSyncMessage_Blocked? - @objc public let configuration: SSKProtoSyncMessage_Configuration? + @objc public let blocked: SSKProtoSyncMessageBlocked? + @objc public let configuration: SSKProtoSyncMessageConfiguration? @objc public let padding: Data? - @objc public init(sent: SSKProtoSyncMessage_Sent?, groups: SSKProtoSyncMessage_Groups?, contacts: SSKProtoSyncMessage_Contacts?, read: [SSKProtoSyncMessage_Read], request: SSKProtoSyncMessage_Request?, verified: SSKProtoVerified?, blocked: SSKProtoSyncMessage_Blocked?, configuration: SSKProtoSyncMessage_Configuration?, padding: Data?) { + @objc public init(sent: SSKProtoSyncMessageSent?, groups: SSKProtoSyncMessageGroups?, contacts: SSKProtoSyncMessageContacts?, read: [SSKProtoSyncMessageRead], request: SSKProtoSyncMessageRequest?, verified: SSKProtoVerified?, blocked: SSKProtoSyncMessageBlocked?, configuration: SSKProtoSyncMessageConfiguration?, padding: Data?) { self.sent = sent self.groups = groups self.contacts = contacts @@ -2199,30 +2201,30 @@ public enum SSKProtoError: Error { } fileprivate class func parseProto(_ proto: SignalServiceProtos_SyncMessage) throws -> SSKProtoSyncMessage { - var sent: SSKProtoSyncMessage_Sent? = nil + var sent: SSKProtoSyncMessageSent? = nil if proto.hasSent { - sent = try SSKProtoSyncMessage_Sent.parseProto(proto.sent) + sent = try SSKProtoSyncMessageSent.parseProto(proto.sent) } - var groups: SSKProtoSyncMessage_Groups? = nil + var groups: SSKProtoSyncMessageGroups? = nil if proto.hasGroups { - groups = try SSKProtoSyncMessage_Groups.parseProto(proto.groups) + groups = try SSKProtoSyncMessageGroups.parseProto(proto.groups) } - var contacts: SSKProtoSyncMessage_Contacts? = nil + var contacts: SSKProtoSyncMessageContacts? = nil if proto.hasContacts { - contacts = try SSKProtoSyncMessage_Contacts.parseProto(proto.contacts) + contacts = try SSKProtoSyncMessageContacts.parseProto(proto.contacts) } - var read: [SSKProtoSyncMessage_Read] = [] + var read: [SSKProtoSyncMessageRead] = [] for item in proto.read { - let wrapped = try SSKProtoSyncMessage_Read.parseProto(item) + let wrapped = try SSKProtoSyncMessageRead.parseProto(item) read.append(wrapped) } - var request: SSKProtoSyncMessage_Request? = nil + var request: SSKProtoSyncMessageRequest? = nil if proto.hasRequest { - request = try SSKProtoSyncMessage_Request.parseProto(proto.request) + request = try SSKProtoSyncMessageRequest.parseProto(proto.request) } var verified: SSKProtoVerified? = nil @@ -2230,14 +2232,14 @@ public enum SSKProtoError: Error { verified = try SSKProtoVerified.parseProto(proto.verified) } - var blocked: SSKProtoSyncMessage_Blocked? = nil + var blocked: SSKProtoSyncMessageBlocked? = nil if proto.hasBlocked { - blocked = try SSKProtoSyncMessage_Blocked.parseProto(proto.blocked) + blocked = try SSKProtoSyncMessageBlocked.parseProto(proto.blocked) } - var configuration: SSKProtoSyncMessage_Configuration? = nil + var configuration: SSKProtoSyncMessageConfiguration? = nil if proto.hasConfiguration { - configuration = try SSKProtoSyncMessage_Configuration.parseProto(proto.configuration) + configuration = try SSKProtoSyncMessageConfiguration.parseProto(proto.configuration) } var padding: Data? = nil @@ -2302,21 +2304,21 @@ public enum SSKProtoError: Error { @objc public class SSKProtoAttachmentPointer: NSObject { - // MARK: - SSKProtoAttachmentPointer_Flags + // MARK: - SSKProtoAttachmentPointerFlags - @objc public enum SSKProtoAttachmentPointer_Flags: Int32 { + @objc public enum SSKProtoAttachmentPointerFlags: Int32 { case voiceMessage = 1 } - private class func SSKProtoAttachmentPointer_FlagsWrap(_ value: SignalServiceProtos_AttachmentPointer.Flags) -> SSKProtoAttachmentPointer_Flags { + private class func SSKProtoAttachmentPointerFlagsWrap(_ value: SignalServiceProtos_AttachmentPointer.Flags) -> SSKProtoAttachmentPointerFlags { switch value { - case .voiceMessage: return .voiceMessage + case .voiceMessage: return .voiceMessage } } - private class func SSKProtoAttachmentPointer_FlagsUnwrap(_ value: SSKProtoAttachmentPointer_Flags) -> SignalServiceProtos_AttachmentPointer.Flags { + private class func SSKProtoAttachmentPointerFlagsUnwrap(_ value: SSKProtoAttachmentPointerFlags) -> SignalServiceProtos_AttachmentPointer.Flags { switch value { - case .voiceMessage: return .voiceMessage + case .voiceMessage: return .voiceMessage } } @@ -2454,9 +2456,9 @@ public enum SSKProtoError: Error { @objc public class SSKProtoGroupContext: NSObject { - // MARK: - SSKProtoGroupContext_Type + // MARK: - SSKProtoGroupContextType - @objc public enum SSKProtoGroupContext_Type: Int32 { + @objc public enum SSKProtoGroupContextType: Int32 { case unknown = 0 case update = 1 case deliver = 2 @@ -2464,33 +2466,33 @@ public enum SSKProtoError: Error { case requestInfo = 4 } - private class func SSKProtoGroupContext_TypeWrap(_ value: SignalServiceProtos_GroupContext.TypeEnum) -> SSKProtoGroupContext_Type { + private class func SSKProtoGroupContextTypeWrap(_ value: SignalServiceProtos_GroupContext.TypeEnum) -> SSKProtoGroupContextType { switch value { - case .unknown: return .unknown - case .update: return .update - case .deliver: return .deliver - case .quit: return .quit - case .requestInfo: return .requestInfo + case .unknown: return .unknown + case .update: return .update + case .deliver: return .deliver + case .quit: return .quit + case .requestInfo: return .requestInfo } } - private class func SSKProtoGroupContext_TypeUnwrap(_ value: SSKProtoGroupContext_Type) -> SignalServiceProtos_GroupContext.TypeEnum { + private class func SSKProtoGroupContextTypeUnwrap(_ value: SSKProtoGroupContextType) -> SignalServiceProtos_GroupContext.TypeEnum { switch value { - case .unknown: return .unknown - case .update: return .update - case .deliver: return .deliver - case .quit: return .quit - case .requestInfo: return .requestInfo + case .unknown: return .unknown + case .update: return .update + case .deliver: return .deliver + case .quit: return .quit + case .requestInfo: return .requestInfo } } @objc public let id: Data? @objc public let name: String? - @objc public let type: SSKProtoGroupContext_Type + @objc public let type: SSKProtoGroupContextType @objc public let avatar: SSKProtoAttachmentPointer? @objc public let members: [String] - @objc public init(id: Data?, name: String?, type: SSKProtoGroupContext_Type, avatar: SSKProtoAttachmentPointer?, members: [String]) { + @objc public init(id: Data?, name: String?, type: SSKProtoGroupContextType, avatar: SSKProtoAttachmentPointer?, members: [String]) { self.id = id self.name = name self.type = type @@ -2519,9 +2521,9 @@ public enum SSKProtoError: Error { name = proto.name } - var type: SSKProtoGroupContext_Type = .unknown + var type: SSKProtoGroupContextType = .unknown if proto.hasType { - type = SSKProtoGroupContext_TypeWrap(proto.type) + type = SSKProtoGroupContextTypeWrap(proto.type) } var avatar: SSKProtoAttachmentPointer? = nil @@ -2553,7 +2555,7 @@ public enum SSKProtoError: Error { builder.name = name } - builder.type = SSKProtoGroupContext.SSKProtoGroupContext_TypeUnwrap(self.type) + builder.type = SSKProtoGroupContext.SSKProtoGroupContextTypeUnwrap(self.type) if let avatar = self.avatar { builder.avatar = avatar.asProtobuf @@ -2570,66 +2572,66 @@ public enum SSKProtoError: Error { } } -// MARK: - SSKProtoContactDetails +// MARK: - SSKProtoContactDetailsAvatar -@objc public class SSKProtoContactDetails: NSObject { +@objc public class SSKProtoContactDetailsAvatar: NSObject { - // MARK: - SSKProtoContactDetails_Avatar + @objc public let contentType: String? + @objc public let length: UInt32 - @objc public class SSKProtoContactDetails_Avatar: NSObject { + @objc public init(contentType: String?, length: UInt32) { + self.contentType = contentType + self.length = length + } - @objc public let contentType: String? - @objc public let length: UInt32 + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - @objc public init(contentType: String?, length: UInt32) { - self.contentType = contentType - self.length = length - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoContactDetailsAvatar { + let proto = try SignalServiceProtos_ContactDetails.Avatar(serializedData: serializedData) + return try parseProto(proto) + } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() + fileprivate class func parseProto(_ proto: SignalServiceProtos_ContactDetails.Avatar) throws -> SSKProtoContactDetailsAvatar { + var contentType: String? = nil + if proto.hasContentType { + contentType = proto.contentType } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoContactDetails_Avatar { - let proto = try SignalServiceProtos_ContactDetails.Avatar(serializedData: serializedData) - return try parseProto(proto) + var length: UInt32 = 0 + if proto.hasLength { + length = proto.length } - fileprivate class func parseProto(_ proto: SignalServiceProtos_ContactDetails.Avatar) throws -> SSKProtoContactDetails_Avatar { - var contentType: String? = nil - if proto.hasContentType { - contentType = proto.contentType - } + // MARK: - Begin Validation Logic for SSKProtoContactDetailsAvatar - - var length: UInt32 = 0 - if proto.hasLength { - length = proto.length - } + // MARK: - End Validation Logic for SSKProtoContactDetailsAvatar - - // MARK: - Begin Validation Logic for SSKProtoContactDetails_Avatar - + let result = SSKProtoContactDetailsAvatar(contentType: contentType, length: length) + return result + } - // MARK: - End Validation Logic for SSKProtoContactDetails_Avatar - + fileprivate var asProtobuf: SignalServiceProtos_ContactDetails.Avatar { + let proto = SignalServiceProtos_ContactDetails.Avatar.with { (builder) in + if let contentType = self.contentType { + builder.contentType = contentType + } - let result = SSKProtoContactDetails_Avatar(contentType: contentType, length: length) - return result + builder.length = self.length } - fileprivate var asProtobuf: SignalServiceProtos_ContactDetails.Avatar { - let proto = SignalServiceProtos_ContactDetails.Avatar.with { (builder) in - if let contentType = self.contentType { - builder.contentType = contentType - } + return proto + } +} - builder.length = self.length - } +// MARK: - SSKProtoContactDetails - return proto - } - } +@objc public class SSKProtoContactDetails: NSObject { @objc public let number: String? - @objc public let avatar: SSKProtoContactDetails_Avatar? + @objc public let avatar: SSKProtoContactDetailsAvatar? @objc public let name: String? @objc public let verified: SSKProtoVerified? @objc public let color: String? @@ -2637,7 +2639,7 @@ public enum SSKProtoError: Error { @objc public let profileKey: Data? @objc public let expireTimer: UInt32 - @objc public init(number: String?, avatar: SSKProtoContactDetails_Avatar?, name: String?, verified: SSKProtoVerified?, color: String?, blocked: Bool, profileKey: Data?, expireTimer: UInt32) { + @objc public init(number: String?, avatar: SSKProtoContactDetailsAvatar?, name: String?, verified: SSKProtoVerified?, color: String?, blocked: Bool, profileKey: Data?, expireTimer: UInt32) { self.number = number self.avatar = avatar self.name = name @@ -2664,9 +2666,9 @@ public enum SSKProtoError: Error { number = proto.number } - var avatar: SSKProtoContactDetails_Avatar? = nil + var avatar: SSKProtoContactDetailsAvatar? = nil if proto.hasAvatar { - avatar = try SSKProtoContactDetails_Avatar.parseProto(proto.avatar) + avatar = try SSKProtoContactDetailsAvatar.parseProto(proto.avatar) } var name: String? = nil @@ -2742,73 +2744,73 @@ public enum SSKProtoError: Error { } } -// MARK: - SSKProtoGroupDetails +// MARK: - SSKProtoGroupDetailsAvatar -@objc public class SSKProtoGroupDetails: NSObject { +@objc public class SSKProtoGroupDetailsAvatar: NSObject { - // MARK: - SSKProtoGroupDetails_Avatar + @objc public let contentType: String? + @objc public let length: UInt32 - @objc public class SSKProtoGroupDetails_Avatar: NSObject { + @objc public init(contentType: String?, length: UInt32) { + self.contentType = contentType + self.length = length + } - @objc public let contentType: String? - @objc public let length: UInt32 + @objc + public func serializedData() throws -> Data { + return try self.asProtobuf.serializedData() + } - @objc public init(contentType: String?, length: UInt32) { - self.contentType = contentType - self.length = length - } + @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoGroupDetailsAvatar { + let proto = try SignalServiceProtos_GroupDetails.Avatar(serializedData: serializedData) + return try parseProto(proto) + } - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() + fileprivate class func parseProto(_ proto: SignalServiceProtos_GroupDetails.Avatar) throws -> SSKProtoGroupDetailsAvatar { + var contentType: String? = nil + if proto.hasContentType { + contentType = proto.contentType } - @objc public class func parseData(_ serializedData: Data) throws -> SSKProtoGroupDetails_Avatar { - let proto = try SignalServiceProtos_GroupDetails.Avatar(serializedData: serializedData) - return try parseProto(proto) + var length: UInt32 = 0 + if proto.hasLength { + length = proto.length } - fileprivate class func parseProto(_ proto: SignalServiceProtos_GroupDetails.Avatar) throws -> SSKProtoGroupDetails_Avatar { - var contentType: String? = nil - if proto.hasContentType { - contentType = proto.contentType - } + // MARK: - Begin Validation Logic for SSKProtoGroupDetailsAvatar - - var length: UInt32 = 0 - if proto.hasLength { - length = proto.length - } + // MARK: - End Validation Logic for SSKProtoGroupDetailsAvatar - - // MARK: - Begin Validation Logic for SSKProtoGroupDetails_Avatar - + let result = SSKProtoGroupDetailsAvatar(contentType: contentType, length: length) + return result + } - // MARK: - End Validation Logic for SSKProtoGroupDetails_Avatar - + fileprivate var asProtobuf: SignalServiceProtos_GroupDetails.Avatar { + let proto = SignalServiceProtos_GroupDetails.Avatar.with { (builder) in + if let contentType = self.contentType { + builder.contentType = contentType + } - let result = SSKProtoGroupDetails_Avatar(contentType: contentType, length: length) - return result + builder.length = self.length } - fileprivate var asProtobuf: SignalServiceProtos_GroupDetails.Avatar { - let proto = SignalServiceProtos_GroupDetails.Avatar.with { (builder) in - if let contentType = self.contentType { - builder.contentType = contentType - } + return proto + } +} - builder.length = self.length - } +// MARK: - SSKProtoGroupDetails - return proto - } - } +@objc public class SSKProtoGroupDetails: NSObject { @objc public let id: Data? @objc public let members: [String] @objc public let name: String? @objc public let active: Bool - @objc public let avatar: SSKProtoGroupDetails_Avatar? + @objc public let avatar: SSKProtoGroupDetailsAvatar? @objc public let color: String? @objc public let expireTimer: UInt32 - @objc public init(id: Data?, members: [String], name: String?, active: Bool, avatar: SSKProtoGroupDetails_Avatar?, color: String?, expireTimer: UInt32) { + @objc public init(id: Data?, members: [String], name: String?, active: Bool, avatar: SSKProtoGroupDetailsAvatar?, color: String?, expireTimer: UInt32) { self.id = id self.members = members self.name = name @@ -2850,9 +2852,9 @@ public enum SSKProtoError: Error { active = proto.active } - var avatar: SSKProtoGroupDetails_Avatar? = nil + var avatar: SSKProtoGroupDetailsAvatar? = nil if proto.hasAvatar { - avatar = try SSKProtoGroupDetails_Avatar.parseProto(proto.avatar) + avatar = try SSKProtoGroupDetailsAvatar.parseProto(proto.avatar) } var color: String? = nil diff --git a/SignalServiceKit/src/Protos/ProtoWrappers/SSKEnvelope.swift b/SignalServiceKit/src/Protos/ProtoWrappers/SSKEnvelope.swift deleted file mode 100644 index 6dfca1c97..000000000 --- a/SignalServiceKit/src/Protos/ProtoWrappers/SSKEnvelope.swift +++ /dev/null @@ -1,149 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -import Foundation - -@objc -public class SSKEnvelope: NSObject { - - public enum EnvelopeError: Error { - case invalidProtobuf(description: String) - } - - @objc - public enum SSKEnvelopeType: Int32 { - case unknown = 0 - case ciphertext = 1 - case keyExchange = 2 - case prekeyBundle = 3 - case receipt = 5 - } - - @objc - public let timestamp: UInt64 - - @objc - public let source: String - - @objc - public let sourceDevice: UInt32 - - @objc - public let type: SSKEnvelopeType - - @objc - public let relay: String? - - @objc - public let content: Data? - - @objc - public let legacyMessage: Data? - - @objc - public init(timestamp: UInt64, source: String, sourceDevice: UInt32, type: SSKEnvelopeType, content: Data?, legacyMessage: Data?) { - self.source = source - self.type = type - self.timestamp = timestamp - self.sourceDevice = sourceDevice - self.relay = nil - self.content = content - self.legacyMessage = legacyMessage - } - - @objc - public init(serializedData: Data) throws { - let proto: SignalServiceProtos_Envelope = try SignalServiceProtos_Envelope(serializedData: serializedData) - - guard proto.hasSource else { - throw EnvelopeError.invalidProtobuf(description: "missing required field: source") - } - self.source = proto.source - - guard proto.hasType else { - throw EnvelopeError.invalidProtobuf(description: "missing required field: type") - } - self.type = { - switch proto.type { - case .unknown: - return .unknown - case .ciphertext: - return .ciphertext - case .keyExchange: - return .keyExchange - case .prekeyBundle: - return .prekeyBundle - case .receipt: - return .receipt - } - }() - - guard proto.hasTimestamp else { - throw EnvelopeError.invalidProtobuf(description: "missing required field: timestamp") - } - self.timestamp = proto.timestamp - - guard proto.hasSourceDevice else { - throw EnvelopeError.invalidProtobuf(description: "missing required field: sourceDevice") - } - self.sourceDevice = proto.sourceDevice - - if proto.hasContent { - self.content = proto.content - } else { - self.content = nil - } - - if proto.hasLegacyMessage { - self.legacyMessage = proto.legacyMessage - } else { - self.legacyMessage = nil - } - - if proto.relay.count > 0 { - self.relay = proto.relay - } else { - relay = nil - } - } - - @objc - public func serializedData() throws -> Data { - return try self.asProtobuf.serializedData() - } - - private var asProtobuf: SignalServiceProtos_Envelope { - let proto = SignalServiceProtos_Envelope.with { (builder) in - builder.source = self.source - - builder.type = { - switch self.type { - case .unknown: - return .unknown - case .ciphertext: - return .ciphertext - case .keyExchange: - return .keyExchange - case .prekeyBundle: - return .prekeyBundle - case .receipt: - return .receipt - } - }() - - builder.timestamp = self.timestamp - builder.sourceDevice = self.sourceDevice - - if let relay = self.relay { - builder.relay = relay - } - - if let content = self.content { - builder.content = content - } - } - - return proto - } -}