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.
		
		
		
		
		
			
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Swift
		
	
import PromiseKit
 | 
						|
import SessionUtilitiesKit
 | 
						|
 | 
						|
public final class SnodeMessage : NSObject, NSCoding { // NSObject/NSCoding conformance is needed for YapDatabase compatibility
 | 
						|
    /// The hex encoded public key of the recipient.
 | 
						|
    public let recipient: String
 | 
						|
    /// The content of the message.
 | 
						|
    public let data: LosslessStringConvertible
 | 
						|
    /// The time to live for the message in milliseconds.
 | 
						|
    public let ttl: UInt64
 | 
						|
    /// When the proof of work was calculated.
 | 
						|
    ///
 | 
						|
    /// - Note: Expressed as milliseconds since 00:00:00 UTC on 1 January 1970.
 | 
						|
    public let timestamp: UInt64
 | 
						|
 | 
						|
    // MARK: Initialization
 | 
						|
    public init(recipient: String, data: LosslessStringConvertible, ttl: UInt64, timestamp: UInt64) {
 | 
						|
        self.recipient = recipient
 | 
						|
        self.data = data
 | 
						|
        self.ttl = ttl
 | 
						|
        self.timestamp = timestamp
 | 
						|
    }
 | 
						|
 | 
						|
    // MARK: Coding
 | 
						|
    public init?(coder: NSCoder) {
 | 
						|
        guard let recipient = coder.decodeObject(forKey: "recipient") as! String?,
 | 
						|
            let data = coder.decodeObject(forKey: "data") as! String?,
 | 
						|
            let ttl = coder.decodeObject(forKey: "ttl") as! UInt64?,
 | 
						|
            let timestamp = coder.decodeObject(forKey: "timestamp") as! UInt64? else { return nil }
 | 
						|
        self.recipient = recipient
 | 
						|
        self.data = data
 | 
						|
        self.ttl = ttl
 | 
						|
        self.timestamp = timestamp
 | 
						|
        super.init()
 | 
						|
    }
 | 
						|
 | 
						|
    public func encode(with coder: NSCoder) {
 | 
						|
        coder.encode(recipient, forKey: "recipient")
 | 
						|
        coder.encode(data, forKey: "data")
 | 
						|
        coder.encode(ttl, forKey: "ttl")
 | 
						|
        coder.encode(timestamp, forKey: "timestamp")
 | 
						|
    }
 | 
						|
 | 
						|
    // MARK: JSON Conversion
 | 
						|
    public func toJSON() -> JSON {
 | 
						|
        return [
 | 
						|
            "pubKey" : Features.useTestnet ? recipient.removing05PrefixIfNeeded() : recipient,
 | 
						|
            "data" : data.description,
 | 
						|
            "ttl" : String(ttl),
 | 
						|
            "timestamp" : String(timestamp),
 | 
						|
            "nonce" : ""
 | 
						|
        ]
 | 
						|
    }
 | 
						|
}
 |