From 787dc9f24f935ac897887e56b7d0d2ef09e841f7 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sat, 4 Jan 2020 23:13:55 -0500 Subject: [PATCH] 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. --- Pachyderm/Model/Application.swift | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Pachyderm/Model/Application.swift b/Pachyderm/Model/Application.swift index fa640135..4a762e05 100644 --- a/Pachyderm/Model/Application.swift +++ b/Pachyderm/Model/Application.swift @@ -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