Fix crash when decoding status attachments with non-percent encoded spaces in URLs
This commit is contained in:
parent
fe85e3c1d6
commit
db68b9dee0
|
@ -25,6 +25,26 @@ public class Attachment: Decodable {
|
|||
], nil))
|
||||
}
|
||||
|
||||
required public init(from decoder: Decoder) throws {
|
||||
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||||
self.id = try container.decode(String.self, forKey: .id)
|
||||
self.kind = try container.decode(Kind.self, forKey: .kind)
|
||||
self.url = URL(string: try container.decode(String.self, forKey: .url).replacingOccurrences(of: " ", with: "%20"))! // Pleroma returns spaces in attachment URLs
|
||||
if let remote = try? container.decode(String.self, forKey: .remoteURL) {
|
||||
self.remoteURL = URL(string: remote.replacingOccurrences(of: " ", with: "%20"))
|
||||
} else {
|
||||
self.remoteURL = nil
|
||||
}
|
||||
self.previewURL = URL(string: try container.decode(String.self, forKey: .previewURL).replacingOccurrences(of: " ", with: "%20"))!
|
||||
if let text = try? container.decode(String.self, forKey: .textURL) {
|
||||
self.textURL = URL(string: text.replacingOccurrences(of: " ", with: "%20"))
|
||||
} else {
|
||||
self.textURL = nil
|
||||
}
|
||||
self.meta = try? container.decode(Metadata.self, forKey: .meta)
|
||||
self.description = try? container.decode(String.self, forKey: .description)
|
||||
}
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case id
|
||||
case kind = "type"
|
||||
|
|
Loading…
Reference in New Issue