// // Relationship.swift // Pachyderm // // Created by Shadowfacts on 9/9/18. // Copyright © 2018 Shadowfacts. All rights reserved. // import Foundation public struct Relationship: RelationshipProtocol, Decodable, Sendable { public let accountID: String public let following: Bool public let followedBy: Bool public let blocking: Bool public let muting: Bool public let mutingNotifications: Bool public let followRequested: Bool public let domainBlocking: Bool public let showingReblogs: Bool public let endorsed: Bool public init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) self.accountID = try container.decode(String.self, forKey: .id) self.following = try container.decode(Bool.self, forKey: .following) self.followedBy = try container.decode(Bool.self, forKey: .followedBy) self.blocking = try container.decode(Bool.self, forKey: .blocking) self.muting = try container.decode(Bool.self, forKey: .muting) self.mutingNotifications = try container.decode(Bool.self, forKey: .mutingNotifications) self.followRequested = try container.decode(Bool.self, forKey: .followRequested) self.domainBlocking = try container.decode(Bool.self, forKey: .domainBlocking) self.showingReblogs = try container.decode(Bool.self, forKey: .showingReblogs) self.endorsed = try container.decodeIfPresent(Bool.self, forKey: .endorsed) ?? false } private enum CodingKeys: String, CodingKey { case id case following case followedBy = "followed_by" case blocking case muting case mutingNotifications = "muting_notifications" case followRequested = "requested" case domainBlocking = "domain_blocking" case showingReblogs = "showing_reblogs" case endorsed } }