frenzy-ios/Reader/FervorController.swift

48 lines
1.4 KiB
Swift

//
// FervorController.swift
// Reader
//
// Created by Shadowfacts on 11/25/21.
//
import Foundation
import Fervor
class FervorController {
static let oauthRedirectURI = URL(string: "frenzy://oauth-callback")!
let instanceURL: URL
private let client: FervorClient
private(set) var clientID: String?
private(set) var clientSecret: String?
private(set) var accessToken: String?
init(instanceURL: URL) {
self.instanceURL = instanceURL
self.client = FervorClient(instanceURL: instanceURL, accessToken: nil)
}
convenience init(account: LocalData.Account) {
self.init(instanceURL: account.instanceURL)
self.clientID = account.clientID
self.clientSecret = account.clientSecret
self.accessToken = account.accessToken
}
func register() async throws -> ClientRegistration {
let registration = try await client.register(clientName: "Frenzy iOS", website: nil, redirectURI: FervorController.oauthRedirectURI)
clientID = registration.clientID
clientSecret = registration.clientSecret
return registration
}
func getToken(authCode: String) async throws {
let token = try await client.token(authCode: authCode, redirectURI: FervorController.oauthRedirectURI, clientID: clientID!, clientSecret: clientSecret!)
client.accessToken = token.accessToken
accessToken = token.accessToken
}
}