2020-04-07 22:25:33 +02:00
|
|
|
//
|
|
|
|
// TwitterFeedProvider.swift
|
|
|
|
// FeedProvider
|
|
|
|
//
|
|
|
|
// Created by Maurice Parker on 4/7/20.
|
|
|
|
// Copyright © 2020 Ranchero Software, LLC. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
import Foundation
|
2020-04-14 23:47:05 +02:00
|
|
|
import Secrets
|
|
|
|
import OAuthSwift
|
2020-04-07 22:25:33 +02:00
|
|
|
|
2020-04-14 23:47:05 +02:00
|
|
|
public struct TwitterFeedProvider {
|
2020-04-07 22:25:33 +02:00
|
|
|
|
2020-04-15 06:19:06 +02:00
|
|
|
private static let server = "api.twitter.com"
|
|
|
|
|
2020-04-15 05:33:05 +02:00
|
|
|
public var userID: String
|
|
|
|
public var screenName: String
|
2020-04-15 06:19:06 +02:00
|
|
|
|
|
|
|
private var oauthToken: String
|
|
|
|
private var oauthTokenSecret: String
|
2020-04-15 05:33:05 +02:00
|
|
|
|
2020-04-15 06:19:06 +02:00
|
|
|
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
|
|
|
|
}
|
2020-04-15 05:33:05 +02:00
|
|
|
|
2020-04-15 06:19:06 +02:00
|
|
|
self.userID = userID
|
|
|
|
self.screenName = screenName
|
|
|
|
self.oauthToken = tokenSuccess.credential.oauthToken
|
|
|
|
self.oauthTokenSecret = tokenSuccess.credential.oauthTokenSecret
|
2020-04-15 05:33:05 +02:00
|
|
|
|
2020-04-15 06:19:06 +02:00
|
|
|
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)
|
2020-04-15 05:33:05 +02:00
|
|
|
}
|
2020-04-08 17:12:06 +02:00
|
|
|
|
2020-04-15 06:19:06 +02:00
|
|
|
public init?(userID: String, screenName: String) {
|
2020-04-15 06:03:08 +02:00
|
|
|
self.userID = userID
|
|
|
|
self.screenName = screenName
|
2020-04-15 05:33:05 +02:00
|
|
|
|
2020-04-15 06:19:06 +02:00
|
|
|
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
|
2020-04-07 22:25:33 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2020-04-14 23:47:05 +02:00
|
|
|
|
|
|
|
// MARK: FeedProvider
|
|
|
|
|
|
|
|
extension TwitterFeedProvider: FeedProvider {
|
|
|
|
|
|
|
|
}
|