Skip to content
This repository has been archived by the owner on Mar 11, 2024. It is now read-only.

OAuthSwift + ReactiveSwift = ๐Ÿฆ„๐Ÿ’–

License

Notifications You must be signed in to change notification settings

chugunomi/ReactiveOAuth

ย 
ย 

Repository files navigation

ReactiveOAuth

Build Status GitHub Release Carthage Compatible Platform

ReactiveOAuth is a wrapper for OAuthSwift with ReactiveSwift support and some pre-configured services, mostly useful in macOS projects.

  • Elegant api with reactive extensions support.
  • OAuth and re-OAuth (refresh token) commands with or without account details.
  • Customisable account detalisators: full response / json with custom field filtering.
import AppKit
import Foundation
import ReactiveOAuth
import ReactiveSwift

internal class MainViewController: NSViewController
{
    @IBAction private func handleOAuthButtonAction(_ button: NSButton) {
        let storyboard: NSStoryboard = NSStoryboard(name: "main", bundle: Bundle.main)
        let controller: OAuthViewController = storyboard.instantiateController(withIdentifier: "OAuthViewController") as! OAuthViewController
        let configuration: OAuth.Configuration = Dropbox.configure(access: Access(key: "foo", secret: "bar"), url: "https://baz.com/quz")
        let detalisator: Detalisator<String> = DropboxDetalisator()
        let oauth: DetailedOAuth<String> = DetailedOAuth(oauth: OAuth(configuration: configuration), detalisator: detalisator)

        oauth.reactive.authorised.observe(Observer(
            value: { (credential: Credential, string: String) in
                Swift.print(credential, string)
            },
            failed: { (error: ReactiveOAuth.Error) in
                Swift.print(error.description)
            }
        ))

        self.authorise(oauthViewController: controller, oauth: oauth)
    }
}

Install

Add ReactiveOAuth to Cartfile:

github "swifteroid/reactiveoauh" "master"

Testing

ReactiveOAuth uses real accounts for testing provided in test/oauth.json, they are kept blank for security reasons and injected by Travis CI during testing. So, if you want to test your own integrations, simply configure required services, unconfigured ones will be skipped. Travis expects REACTIVEOAUTH_CREDENTIALS environment variable, the following command copies current configuration in acceptable format escaped for shell.

jq --join-output "tojson | @sh" test/oauth.json | pbcopy

About

OAuthSwift + ReactiveSwift = ๐Ÿฆ„๐Ÿ’–

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 92.0%
  • JavaScript 5.3%
  • Ruby 1.9%
  • Shell 0.8%