NetNewsWire/Frameworks/FeedProvider/Twitter/TwitterFeedProvider.swift

61 lines
1.8 KiB
Swift

//
// TwitterFeedProvider.swift
// FeedProvider
//
// Created by Maurice Parker on 4/7/20.
// Copyright © 2020 Ranchero Software, LLC. All rights reserved.
//
import Foundation
import Secrets
import OAuthSwift
public struct TwitterFeedProvider {
private static let server = "api.twitter.com"
public var userID: String
public var screenName: String
private var oauthToken: String
private var oauthTokenSecret: String
public init?(tokenSuccess: OAuthSwift.TokenSuccess) {
guard let userID = tokenSuccess.parameters["user_id"] as? String,
let screenName = tokenSuccess.parameters["screen_name"] as? String else {
return nil
}
self.userID = userID
self.screenName = screenName
self.oauthToken = tokenSuccess.credential.oauthToken
self.oauthTokenSecret = tokenSuccess.credential.oauthTokenSecret
let tokenCredentials = Credentials(type: .oauthAccessToken, username: userID, secret: oauthToken)
try? CredentialsManager.storeCredentials(tokenCredentials, server: Self.server)
let tokenSecretCredentials = Credentials(type: .oauthAccessTokenSecret, username: userID, secret: oauthTokenSecret)
try? CredentialsManager.storeCredentials(tokenSecretCredentials, server: Self.server)
}
public init?(userID: String, screenName: String) {
self.userID = userID
self.screenName = screenName
guard let tokenCredentials = try? CredentialsManager.retrieveCredentials(type: .oauthAccessToken, server: Self.server, username: userID),
let tokenSecretCredentials = try? CredentialsManager.retrieveCredentials(type: .oauthAccessTokenSecret, server: Self.server, username: userID) else {
return nil
}
self.oauthToken = tokenCredentials.secret
self.oauthTokenSecret = tokenSecretCredentials.secret
}
}
// MARK: FeedProvider
extension TwitterFeedProvider: FeedProvider {
}