Files
damus/damus/Nostr/NostrResponse.swift
William Casarin 28790ccfab reorganize
Signed-off-by: William Casarin <jb55@jb55.com>
2022-04-11 10:34:35 -07:00

40 lines
1011 B
Swift

//
// NostrResponse.swift
// damus
//
// Created by William Casarin on 2022-04-11.
//
import Foundation
enum NostrResponse: Decodable {
case event(String, NostrEvent)
case notice(String)
init(from decoder: Decoder) throws {
var container = try decoder.unkeyedContainer()
// Only use first item
let typ = try container.decode(String.self)
if typ == "EVENT" {
let sub_id = try container.decode(String.self)
var ev: NostrEvent
do {
ev = try container.decode(NostrEvent.self)
} catch {
print(error)
throw error
}
self = .event(sub_id, ev)
return
} else if typ == "NOTICE" {
let msg = try container.decode(String.self)
self = .notice(msg)
return
}
throw DecodingError.dataCorrupted(.init(codingPath: [], debugDescription: "expected EVENT or NOTICE, got \(typ)"))
}
}