Fix crash decoding statuses sent from certain applications
If an application provides its URL as an empty string, decoding it would cause throw an error because Foundation's URL class does not accept empty strings. Instead, during parsing, consume the invalid URL and replace it with a `nil` app URL.
Этот коммит содержится в:
родитель
ad09e36907
Коммит
787dc9f24f
|
@ -12,6 +12,19 @@ public class Application: Decodable {
|
|||
public let name: String
|
||||
public let website: URL?
|
||||
|
||||
public required init(from decoder: Decoder) throws {
|
||||
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||||
|
||||
self.name = try container.decode(String.self, forKey: .name)
|
||||
|
||||
if let websiteStr = try container.decodeIfPresent(String.self, forKey: .website),
|
||||
let url = URL(string: websiteStr) {
|
||||
self.website = url
|
||||
} else {
|
||||
self.website = nil
|
||||
}
|
||||
}
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case name
|
||||
case website
|
||||
|
|
Загрузка…
Ссылка в новой задаче