damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

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 }