You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-ios/SessionSnodeKit/Models/SnodeReceivedMessage.swift

52 lines
1.6 KiB
Swift

// 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())
)
"""
}
}