// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. // // stringlint:disable import Foundation import SessionUtilitiesKit public struct SnodeReceivedMessage: CustomDebugStringConvertible { /// Service nodes cache messages for 14 days so default the expiration for message hashes to '15' days /// so we don't end up indefinitely storing records which will never be used public static let defaultExpirationSeconds: Int64 = ((15 * 24 * 60 * 60) * 1000) public let info: SnodeReceivedMessageInfo public let namespace: SnodeAPI.Namespace public let timestampMs: Int64 public let data: Data init?( snode: LibSession.Snode, publicKey: String, namespace: SnodeAPI.Namespace, rawMessage: GetMessagesResponse.RawMessage ) { guard let data: Data = Data(base64Encoded: rawMessage.data) else { SNLog("Failed to decode data for message: \(rawMessage).") return nil } self.info = SnodeReceivedMessageInfo( snode: snode, publicKey: publicKey, namespace: namespace, hash: rawMessage.hash, expirationDateMs: (rawMessage.expiration ?? SnodeReceivedMessage.defaultExpirationSeconds) ) self.namespace = namespace self.timestampMs = rawMessage.timestampMs self.data = data } public var debugDescription: String { """ SnodeReceivedMessage( hash: \(info.hash), expirationMs: \(info.expirationDateMs), timestampMs: \(timestampMs), data: \(data.base64EncodedString()) ) """ } }