another.im-ios/AnotherIM/xmpp/models/SRVRecord.swift
2024-12-16 08:19:58 +01:00

41 lines
1 KiB
Swift

import Foundation
struct SRVRecord: Codable & Equatable {
let priority: Int
let weight: Int
let port: Int
let target: String
let isSecure: Bool
init?(data: Data) {
guard data.count > 6 else {
return nil
}
priority = Int(data[0]) * 256 + Int(data[1])
weight = Int(data[2]) * 256 + Int(data[3])
port = Int(data[4]) * 256 + Int(data[5])
var workingTarget = ""
for byte in data[7 ... (data.count - 1)] {
var symbol = byte
symbol = symbol < 33 ? 46 : symbol
let char = String(decoding: Data([symbol]), as: UTF8.self)
workingTarget += char
}
target = workingTarget
isSecure = target.starts(with: "xmpps")
}
init(fallbackTarget: String) {
target = fallbackTarget
port = 5222
priority = 0
weight = 0
isSecure = false
}
var description: String {
"target: \(target) port: \(port) priority: \(priority) weight: \(weight)"
}
}