aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Models/Server.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2024-01-05 19:46:13 -0800
committerDustin Mierau <dustin@mierau.me>2024-01-05 19:46:37 -0800
commit2f8f71d0410f59d5d303a4c221a628630168bfe2 (patch)
tree6a18ae2e4dbd72a688667bd9e819ecee72d76b52 /Hotline/Models/Server.swift
parent57c33eb798f6802fe5af8fcd3d1992a4b63a448f (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.swift33
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)
}
}