mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			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.
		
		
		
		
		
			
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Swift
		
	
| // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
 | |
| 
 | |
| 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 data: Data
 | |
|     
 | |
|     init?(snode: Snode, publicKey: String, namespace: Int, rawMessage: JSON) {
 | |
|         guard let hash: String = rawMessage["hash"] as? String else { return nil }
 | |
| 
 | |
|         guard
 | |
|             let base64EncodedString: String = rawMessage["data"] as? String,
 | |
|             let data: Data = Data(base64Encoded: base64EncodedString)
 | |
|         else {
 | |
|             SNLog("Failed to decode data for message: \(rawMessage).")
 | |
|             return nil
 | |
|         }
 | |
|         
 | |
|         let expirationDateMs: Int64? = (rawMessage["expiration"] as? Int64)
 | |
|         self.info = SnodeReceivedMessageInfo(
 | |
|             snode: snode,
 | |
|             publicKey: publicKey,
 | |
|             namespace: namespace,
 | |
|             hash: hash,
 | |
|             expirationDateMs: (expirationDateMs ?? SnodeReceivedMessage.defaultExpirationSeconds)
 | |
|         )
 | |
|         self.data = data
 | |
|     }
 | |
|     
 | |
|     public var debugDescription: String {
 | |
|         return "{\"hash\":\(info.hash),\"expiration\":\(info.expirationDateMs),\"data\":\"\(data.base64EncodedString())\"}"
 | |
|     }
 | |
| }
 |