mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
Temp
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import Foundation
|
||||
|
||||
public class AdaptedPostboxEncoder {
|
||||
func encode(_ value: Encodable) throws -> Data {
|
||||
let encoder = _AdaptedPostboxEncoder()
|
||||
try value.encode(to: encoder)
|
||||
return encoder.data
|
||||
}
|
||||
}
|
||||
|
||||
final class _AdaptedPostboxEncoder {
|
||||
var codingPath: [CodingKey] = []
|
||||
|
||||
var userInfo: [CodingUserInfoKey : Any] = [:]
|
||||
|
||||
fileprivate var container: AdaptedPostboxEncodingContainer?
|
||||
|
||||
var data: Data {
|
||||
return self.container!.makeData()
|
||||
}
|
||||
}
|
||||
|
||||
extension _AdaptedPostboxEncoder: Encoder {
|
||||
fileprivate func assertCanCreateContainer() {
|
||||
precondition(self.container == nil)
|
||||
}
|
||||
|
||||
func container<Key>(keyedBy type: Key.Type) -> KeyedEncodingContainer<Key> where Key : CodingKey {
|
||||
assertCanCreateContainer()
|
||||
|
||||
let container = KeyedContainer<Key>(codingPath: self.codingPath, userInfo: self.userInfo)
|
||||
self.container = container
|
||||
|
||||
return KeyedEncodingContainer(container)
|
||||
}
|
||||
|
||||
func unkeyedContainer() -> UnkeyedEncodingContainer {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func singleValueContainer() -> SingleValueEncodingContainer {
|
||||
preconditionFailure()
|
||||
}
|
||||
}
|
||||
|
||||
protocol AdaptedPostboxEncodingContainer: AnyObject {
|
||||
func makeData() -> Data
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
import Foundation
|
||||
|
||||
extension _AdaptedPostboxEncoder {
|
||||
final class KeyedContainer<Key> where Key: CodingKey {
|
||||
var codingPath: [CodingKey]
|
||||
var userInfo: [CodingUserInfoKey: Any]
|
||||
|
||||
let encoder: PostboxEncoder
|
||||
|
||||
init(codingPath: [CodingKey], userInfo: [CodingUserInfoKey : Any]) {
|
||||
self.codingPath = codingPath
|
||||
self.userInfo = userInfo
|
||||
|
||||
self.encoder = PostboxEncoder()
|
||||
}
|
||||
|
||||
func makeData() -> Data {
|
||||
return self.encoder.makeData()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension _AdaptedPostboxEncoder.KeyedContainer: KeyedEncodingContainerProtocol {
|
||||
func encode<T>(_ value: T, forKey key: Key) throws where T : Encodable {
|
||||
let innerEncoder = _AdaptedPostboxEncoder()
|
||||
try! value.encode(to: innerEncoder)
|
||||
|
||||
self.encoder.encodeInnerObjectData(innerEncoder.data, forKey: key.stringValue)
|
||||
}
|
||||
|
||||
func encodeNil(forKey key: Key) throws {
|
||||
self.encoder.encodeNil(forKey: key.stringValue)
|
||||
}
|
||||
|
||||
func encode(_ value: Int32, forKey key: Key) throws {
|
||||
self.encoder.encodeInt32(value, forKey: key.stringValue)
|
||||
}
|
||||
|
||||
func encode(_ value: Int64, forKey key: Key) throws {
|
||||
self.encoder.encodeInt64(value, forKey: key.stringValue)
|
||||
}
|
||||
|
||||
func encode(_ value: Bool, forKey key: Key) throws {
|
||||
self.encoder.encodeBool(value, forKey: key.stringValue)
|
||||
}
|
||||
|
||||
func encode(_ value: Double, forKey key: Key) throws {
|
||||
self.encoder.encodeDouble(value, forKey: key.stringValue)
|
||||
}
|
||||
|
||||
func encode(_ value: String, forKey key: Key) throws {
|
||||
self.encoder.encodeString(value, forKey: key.stringValue)
|
||||
}
|
||||
|
||||
func nestedUnkeyedContainer(forKey key: Key) -> UnkeyedEncodingContainer {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func nestedContainer<NestedKey>(keyedBy keyType: NestedKey.Type, forKey key: Key) -> KeyedEncodingContainer<NestedKey> where NestedKey : CodingKey {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func superEncoder() -> Encoder {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func superEncoder(forKey key: Key) -> Encoder {
|
||||
preconditionFailure()
|
||||
}
|
||||
}
|
||||
|
||||
extension _AdaptedPostboxEncoder.KeyedContainer: AdaptedPostboxEncodingContainer {}
|
||||
@@ -0,0 +1,85 @@
|
||||
import Foundation
|
||||
|
||||
extension _AdaptedPostboxEncoder {
|
||||
final class SingleValueContainer {
|
||||
var codingPath: [CodingKey]
|
||||
var userInfo: [CodingUserInfoKey: Any]
|
||||
|
||||
init(codingPath: [CodingKey], userInfo: [CodingUserInfoKey : Any]) {
|
||||
self.codingPath = codingPath
|
||||
self.userInfo = userInfo
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension _AdaptedPostboxEncoder.SingleValueContainer: SingleValueEncodingContainer {
|
||||
func encodeNil() throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: Bool) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: String) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: Double) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: Float) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: Int) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: Int8) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: Int16) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: Int32) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: Int64) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: UInt) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: UInt8) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: UInt16) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: UInt32) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode(_ value: UInt64) throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode<T>(_ value: T) throws where T : Encodable {
|
||||
preconditionFailure()
|
||||
}
|
||||
}
|
||||
|
||||
extension _AdaptedPostboxEncoder.SingleValueContainer: AdaptedPostboxEncodingContainer {
|
||||
func makeData() -> Data {
|
||||
preconditionFailure()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
import Foundation
|
||||
|
||||
extension _AdaptedPostboxEncoder {
|
||||
final class UnkeyedContainer {
|
||||
var codingPath: [CodingKey]
|
||||
var userInfo: [CodingUserInfoKey: Any]
|
||||
var count: Int {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
init(codingPath: [CodingKey], userInfo: [CodingUserInfoKey : Any]) {
|
||||
self.codingPath = codingPath
|
||||
self.userInfo = userInfo
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension _AdaptedPostboxEncoder.UnkeyedContainer: UnkeyedEncodingContainer {
|
||||
func encodeNil() throws {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func encode<T>(_ value: T) throws where T : Encodable {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func nestedContainer<NestedKey>(keyedBy keyType: NestedKey.Type) -> KeyedEncodingContainer<NestedKey> where NestedKey : CodingKey {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func nestedUnkeyedContainer() -> UnkeyedEncodingContainer {
|
||||
preconditionFailure()
|
||||
}
|
||||
|
||||
func superEncoder() -> Encoder {
|
||||
preconditionFailure()
|
||||
}
|
||||
}
|
||||
|
||||
extension _AdaptedPostboxEncoder.UnkeyedContainer: AdaptedPostboxEncodingContainer {
|
||||
func makeData() -> Data {
|
||||
preconditionFailure()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user