mastodon-ios/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Filter.swift

73 lines
2.0 KiB
Swift

//
// Mastodon+Entity+Filter.swift
//
//
// Created by MainasuK Cirno on 2021/1/28.
//
import Foundation
extension Mastodon.Entity {
/// Field
///
/// - Since: 2.4.3
/// - Version: 3.3.0
/// # Last Update
/// 2021/1/28
/// # Reference
/// [Document](https://docs.joinmastodon.org/entities/filter/)
public struct Filter: Codable {
public typealias ID = String
public let id: ID
public let phrase: String
public let context: [Context]
public let expiresAt: Date
public let irreversible: Bool
public let wholeWord: Bool
enum CodingKeys: String, CodingKey {
case id
case phrase
case context
case expiresAt = "expires_at"
case irreversible
case wholeWord = "whole_word"
}
}
}
extension Mastodon.Entity.Filter {
public enum Context: RawRepresentable, Codable {
case home
case notifications
case `public`
case thread
case account
case _other(String)
public init?(rawValue: String) {
switch rawValue {
case "home": self = .home
case "notifications": self = .notifications
case "public": self = .`public`
case "thread": self = .thread
case "account": self = .account
default: self = ._other(rawValue)
}
}
public var rawValue: String {
switch self {
case .home: return "home"
case .notifications: return "notifications"
case .public: return "public"
case .thread: return "thread"
case .account: return "account"
case ._other(let value): return value
}
}
}
}