From fbb37567460b689f01eb8a8717b9ac8673652c28 Mon Sep 17 00:00:00 2001 From: Shav Kinderlehrer Date: Tue, 12 Dec 2023 17:09:15 -0500 Subject: Implement signIn flow --- Jel/Models/JellyfinDateFormatter.swift | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Jel/Models/JellyfinDateFormatter.swift (limited to 'Jel/Models') diff --git a/Jel/Models/JellyfinDateFormatter.swift b/Jel/Models/JellyfinDateFormatter.swift new file mode 100644 index 0000000..74b89d1 --- /dev/null +++ b/Jel/Models/JellyfinDateFormatter.swift @@ -0,0 +1,33 @@ +// +// JellyfinDateFormatter.swift +// Jel +// +// Created by zerocool on 12/12/23. +// + +import Foundation + +// from: https://stackoverflow.com/a/46458771 +extension Formatter { + static let iso8601withFractionalSeconds: ISO8601DateFormatter = { + let formatter = ISO8601DateFormatter() + formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds] + return formatter + }() + static let iso8601: ISO8601DateFormatter = { + let formatter = ISO8601DateFormatter() + formatter.formatOptions = [.withInternetDateTime] + return formatter + }() +} + +extension JSONDecoder.DateDecodingStrategy { + static let iso8601withFractionalSeconds = custom { + let container = try $0.singleValueContainer() + let string = try container.decode(String.self) + if let date = Formatter.iso8601withFractionalSeconds.date(from: string) ?? Formatter.iso8601.date(from: string) { + return date + } + throw DecodingError.dataCorruptedError(in: container, debugDescription: "Invalid date: \(string)") + } +} -- cgit v1.2.3