diff --git a/Pulse/Vault.swift b/Pulse/Vault.swift new file mode 100644 index 0000000..6db5e25 --- /dev/null +++ b/Pulse/Vault.swift @@ -0,0 +1,32 @@ +import Foundation +import Valet + +enum Vault { + static let shared = Valet.valet(with: Identifier(nonEmpty: Bundle.main.bundleIdentifier)!, accessibility: .whenUnlocked) + + static var githubToken: String { + get { + do { + return try shared.string(forKey: "githubToken") + } catch KeychainError.itemNotFound { + // Nothing to do + } catch { + Logger.shared.error("failed to get githubToken from Valet: \(error)") + } + + return "" + } + + set(token) { + do { + if token.isEmpty { + try shared.removeObject(forKey: "githubToken") + } else { + try shared.setString(token, forKey: "githubToken") + } + } catch { + Logger.shared.error("failed to set githubToken to Valet: \(error)") + } + } + } +}