diff options
| author | Dustin Mierau <dustin@mierau.me> | 2024-01-05 19:46:13 -0800 |
|---|---|---|
| committer | Dustin Mierau <dustin@mierau.me> | 2024-01-05 19:46:37 -0800 |
| commit | 2f8f71d0410f59d5d303a4c221a628630168bfe2 (patch) | |
| tree | 6a18ae2e4dbd72a688667bd9e819ecee72d76b52 /Hotline/Models/Server.swift | |
| parent | 57c33eb798f6802fe5af8fcd3d1992a4b63a448f (diff) | |
Add image preview to Files so you don't have to download images to view them, works with animated GIFs too. Added cmd-R shortcut for Servers window. More work on login view.
Diffstat (limited to 'Hotline/Models/Server.swift')
| -rw-r--r-- | Hotline/Models/Server.swift | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/Hotline/Models/Server.swift b/Hotline/Models/Server.swift index 62c6867..27d45c6 100644 --- a/Hotline/Models/Server.swift +++ b/Hotline/Models/Server.swift @@ -4,22 +4,47 @@ struct Server: Codable { var name: String? var description: String? var users: Int + var address: String var port: Int + var login: String + var password: String - init(name: String?, description: String?, address: String, port: Int = HotlinePorts.DefaultServerPort, users: Int = 0) { + init(name: String?, description: String?, address: String, port: Int = HotlinePorts.DefaultServerPort, users: Int = 0, login: String = "", password: String = "") { self.name = name self.description = description self.address = address.lowercased() self.port = port self.users = users + self.login = login + self.password = password + } + + init?(url: URL) { + guard url.scheme?.lowercased() == "hotline" else { + return nil + } + + guard let host = url.host(percentEncoded: false) else { + return nil + } + + self.name = nil + self.description = nil + self.users = 0 + + self.address = host.lowercased() + self.port = url.port ?? HotlinePorts.DefaultServerPort + + self.login = url.user(percentEncoded: false) ?? "" + self.password = url.password(percentEncoded: false) ?? "" } static func parseServerAddressAndPort(_ address: String) -> (String, Int) { let url = URL(string: "hotline://\(address)") let port = url?.port ?? HotlinePorts.DefaultServerPort - let host = url?.host(percentEncoded: false) ?? address - return (host, port) + let host = url?.host(percentEncoded: false) ?? "" + return (host.lowercased().trimmingCharacters(in: .whitespacesAndNewlines), port) } } @@ -29,7 +54,7 @@ extension Server: Identifiable { extension Server: Equatable { static func == (lhs: Server, rhs: Server) -> Bool { - return (lhs.address == rhs.address) && (lhs.port == rhs.port) + return (lhs.address == rhs.address) && (lhs.port == rhs.port) && (lhs.login == rhs.login) && (lhs.password == rhs.password) } } |