Swiftgram/TelegramCore/TelegramChannelBannedRights.swift
2017-06-06 12:47:22 +03:00

65 lines
2.3 KiB
Swift

import Foundation
#if os(macOS)
import PostboxMac
#else
import Postbox
#endif
public struct TelegramChannelBannedRightsFlags: OptionSet {
public var rawValue: Int32
public init(rawValue: Int32) {
self.rawValue = rawValue
}
public init() {
self.rawValue = 0
}
public static let banReadMessages = TelegramChannelBannedRightsFlags(rawValue: 1 << 0)
public static let banSendMessages = TelegramChannelBannedRightsFlags(rawValue: 1 << 1)
public static let banSendMedia = TelegramChannelBannedRightsFlags(rawValue: 1 << 2)
public static let banSendStickers = TelegramChannelBannedRightsFlags(rawValue: 1 << 3)
public static let banSendGifs = TelegramChannelBannedRightsFlags(rawValue: 1 << 4)
public static let banSendGames = TelegramChannelBannedRightsFlags(rawValue: 1 << 5)
public static let banSendInline = TelegramChannelBannedRightsFlags(rawValue: 1 << 6)
public static let banEmbedLinks = TelegramChannelBannedRightsFlags(rawValue: 1 << 7)
}
public struct TelegramChannelBannedRights: Coding, Equatable {
public let flags: TelegramChannelBannedRightsFlags
public let untilDate: Int32
public init(flags: TelegramChannelBannedRightsFlags, untilDate: Int32) {
self.flags = flags
self.untilDate = untilDate
}
public init(decoder: Decoder) {
self.flags = TelegramChannelBannedRightsFlags(rawValue: decoder.decodeInt32ForKey("f", orElse: 0))
self.untilDate = decoder.decodeInt32ForKey("d", orElse: 0)
}
public func encode(_ encoder: Encoder) {
encoder.encodeInt32(self.flags.rawValue, forKey: "f")
encoder.encodeInt32(self.untilDate, forKey: "d")
}
public static func ==(lhs: TelegramChannelBannedRights, rhs: TelegramChannelBannedRights) -> Bool {
return lhs.flags == rhs.flags && lhs.untilDate == rhs.untilDate
}
}
extension TelegramChannelBannedRights {
init(apiBannedRights: Api.ChannelBannedRights) {
switch apiBannedRights {
case let .channelBannedRights(flags, untilDate):
self.init(flags: TelegramChannelBannedRightsFlags(rawValue: flags), untilDate: untilDate)
}
}
var apiBannedRights: Api.ChannelBannedRights {
return Api.ChannelBannedRights.channelBannedRights(flags: self.flags.rawValue, untilDate: self.untilDate)
}
}