forked from shadowfacts/Tusker
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))
|
], 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 {
|
private enum CodingKeys: String, CodingKey {
|
||||||
case id
|
case id
|
||||||
case kind = "type"
|
case kind = "type"
|
||||||
|
|
Loading…
Reference in New Issue