From 40098ac180224380e4d5eed34bf12796b70ec209 Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Fri, 6 Nov 2020 14:05:45 +1100 Subject: [PATCH] Partially implement receiving pipeline --- .../Pipelines/ReceivingPipeline.swift | 22 +++++++++++++++---- .../FixedWidthInteger+BigEndian.swift | 1 - 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/SessionMessagingKit/Pipelines/ReceivingPipeline.swift b/SessionMessagingKit/Pipelines/ReceivingPipeline.swift index 4a26617ee..79a4fc21e 100644 --- a/SessionMessagingKit/Pipelines/ReceivingPipeline.swift +++ b/SessionMessagingKit/Pipelines/ReceivingPipeline.swift @@ -1,8 +1,22 @@ +import SessionUtilities public enum ReceivingPipeline { - // 1. Decrypt - // 2. Convert binary to proto - // 3. Convert proto to message - // 4. Handle message + public static func parse(_ data: Data) -> Message? { + // TODO: Decrypt + let proto: SNProtoContent + do { + proto = try SNProtoContent.parseData(data) + } catch { + SNLog("Couldn't parse proto due to error: \(error).") + return nil + } + if let readReceipt = ReadReceipt.fromProto(proto) { return readReceipt } + if let sessionRequest = SessionRequest.fromProto(proto) { return sessionRequest } + if let typingIndicator = TypingIndicator.fromProto(proto) { return typingIndicator } + if let closedGroupUpdate = ClosedGroupUpdate.fromProto(proto) { return closedGroupUpdate } + if let expirationTimerUpdate = ExpirationTimerUpdate.fromProto(proto) { return expirationTimerUpdate } + if let visibleMessage = VisibleMessage.fromProto(proto) { return visibleMessage } + return nil + } } diff --git a/SessionMessagingKit/Utilities/FixedWidthInteger+BigEndian.swift b/SessionMessagingKit/Utilities/FixedWidthInteger+BigEndian.swift index 6461e06ad..6cd689cfa 100644 --- a/SessionMessagingKit/Utilities/FixedWidthInteger+BigEndian.swift +++ b/SessionMessagingKit/Utilities/FixedWidthInteger+BigEndian.swift @@ -1,5 +1,4 @@ - internal extension FixedWidthInteger { init?(fromBigEndianBytes bytes: [UInt8]) {