mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2025-06-29 04:39:53 +00:00
* ios: SimpleXChat framework to be shared by app/NSE * remove bridging headers from pp/NSE * embed & sign
38 lines
1.1 KiB
Swift
38 lines
1.1 KiB
Swift
//
|
|
// JSON.swift
|
|
// SimpleX
|
|
//
|
|
// Created by Evgeny Poberezkin on 29/01/2022.
|
|
// Copyright © 2022 SimpleX Chat. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public func getJSONDecoder() -> JSONDecoder {
|
|
let jd = JSONDecoder()
|
|
let fracSeconds = getDateFormatter("yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ")
|
|
let noFracSeconds = getDateFormatter("yyyy-MM-dd'T'HH:mm:ssZZZZZ")
|
|
jd.dateDecodingStrategy = .custom { decoder in
|
|
let container = try decoder.singleValueContainer()
|
|
let string = try container.decode(String.self)
|
|
if let date = fracSeconds.date(from: string) ?? noFracSeconds.date(from: string) {
|
|
return date
|
|
}
|
|
throw DecodingError.dataCorruptedError(in: container, debugDescription: "Invalid date: \(string)")
|
|
}
|
|
return jd
|
|
}
|
|
|
|
public func getJSONEncoder() -> JSONEncoder {
|
|
let je = JSONEncoder()
|
|
je.dateEncodingStrategy = .iso8601
|
|
return je
|
|
}
|
|
|
|
private func getDateFormatter(_ format: String) -> DateFormatter {
|
|
let df = DateFormatter()
|
|
df.locale = Locale(identifier: "en_US_POSIX")
|
|
df.dateFormat = format
|
|
df.timeZone = TimeZone(secondsFromGMT: 0)
|
|
return df
|
|
}
|