From b8c0f2ecf72902f082f7969ef6741789da94c9e6 Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 5 Aug 2024 15:07:00 -0700 Subject: [PATCH 1/2] Added error for JSON serialization errors --- Sources/Hub/Hub.swift | 19 +++++++++++++++++-- Sources/Hub/HubApi.swift | 11 ++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/Sources/Hub/Hub.swift b/Sources/Hub/Hub.swift index 8deeee82..8eb63529 100644 --- a/Sources/Hub/Hub.swift +++ b/Sources/Hub/Hub.swift @@ -10,13 +10,28 @@ import Foundation public struct Hub {} public extension Hub { - enum HubClientError: Error { + enum HubClientError: LocalizedError { case parse + case jsonSerialization(fileURL: URL, message: String) case authorizationRequired case unexpectedError case httpStatusCode(Int) + + public var errorDescription: String? { + switch self { + case .parse: + return NSLocalizedString("Failed to parse the configuration.", comment: "Parse Error") + case .jsonSerialization(_, let message): + return message + case .authorizationRequired: + return NSLocalizedString("Authorization is required.", comment: "Authorization Error") + case .unexpectedError: + return NSLocalizedString("An unexpected error occurred.", comment: "Unexpected Error") + case .httpStatusCode(let statusCode): + return String(format: NSLocalizedString("HTTP error with status code: %d", comment: "HTTP Status Code Error"), statusCode) + } + } } - enum RepoType: String { case models case datasets diff --git a/Sources/Hub/HubApi.swift b/Sources/Hub/HubApi.swift index 37b7496d..9a20be31 100644 --- a/Sources/Hub/HubApi.swift +++ b/Sources/Hub/HubApi.swift @@ -106,9 +106,14 @@ public extension HubApi { /// `fileURL` is a complete local file path for the given model func configuration(fileURL: URL) throws -> Config { let data = try Data(contentsOf: fileURL) - let parsed = try JSONSerialization.jsonObject(with: data, options: []) - guard let dictionary = parsed as? [String: Any] else { throw Hub.HubClientError.parse } - return Config(dictionary) + + do { + let parsed = try JSONSerialization.jsonObject(with: data, options: []) + guard let dictionary = parsed as? [String: Any] else { throw Hub.HubClientError.parse } + return Config(dictionary) + } catch { + throw Hub.HubClientError.jsonSerialization(fileURL: fileURL, message: "JSON Serialization failed for \(fileURL). Please verify that you have set the HUGGING_FACE_HUB_TOKEN environment variable.") + } } } From 58885672bae5c892ede9c59e79c7228d2a2394f7 Mon Sep 17 00:00:00 2001 From: Pedro Cuenca Date: Mon, 19 Aug 2024 13:03:46 +0200 Subject: [PATCH 2/2] Fix merge commit --- Sources/Hub/HubApi.swift | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Sources/Hub/HubApi.swift b/Sources/Hub/HubApi.swift index 49b9132d..eec19f3f 100644 --- a/Sources/Hub/HubApi.swift +++ b/Sources/Hub/HubApi.swift @@ -108,14 +108,11 @@ public extension HubApi { let data = try Data(contentsOf: fileURL) do { let parsed = try JSONSerialization.jsonObject(with: data, options: []) - guard let dictionary = parsed as? [String: Any] else { throw Hub.HubClientError.parse } + guard let dictionary = parsed as? [NSString: Any] else { throw Hub.HubClientError.parse } return Config(dictionary) } catch { throw Hub.HubClientError.jsonSerialization(fileURL: fileURL, message: "JSON Serialization failed for \(fileURL). Please verify that you have set the HUGGING_FACE_HUB_TOKEN environment variable.") } - let parsed = try JSONSerialization.jsonObject(with: data, options: []) - guard let dictionary = parsed as? [NSString: Any] else { throw Hub.HubClientError.parse } - return Config(dictionary) } }