LongformEvent.swift (1170B)
1 // 2 // LongformEvent.swift 3 // damus 4 // 5 // Created by Daniel Nogueira on 2023-11-24. 6 // 7 8 import Foundation 9 10 struct LongformEvent { 11 let event: NostrEvent 12 13 var title: String? = nil 14 var image: URL? = nil 15 var summary: String? = nil 16 var published_at: Date? = nil 17 var labels: [String]? = nil 18 19 static func parse(from ev: NostrEvent) -> LongformEvent { 20 var longform = LongformEvent(event: ev) 21 22 for tag in ev.tags { 23 guard tag.count >= 2 else { continue } 24 switch tag[0].string() { 25 case "title": longform.title = tag[1].string() 26 case "image": longform.image = URL(string: tag[1].string()) 27 case "summary": longform.summary = tag[1].string() 28 case "published_at": 29 longform.published_at = Double(tag[1].string()).map { d in Date(timeIntervalSince1970: d) } 30 case "t": 31 if (longform.labels?.append(tag[1].string())) == nil { 32 longform.labels = [tag[1].string()] 33 } 34 default: 35 break 36 } 37 } 38 39 return longform 40 } 41 }