forked from shadowfacts/Tusker
50 lines
1.9 KiB
Swift
50 lines
1.9 KiB
Swift
//
|
|
// 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
|
|
}
|
|
}
|