Skip to content

Commit d85f36b

Browse files
committed
Update dependencies, syntax and usage of Reactive extension
1 parent 9d104aa commit d85f36b

File tree

2 files changed

+49
-86
lines changed

2 files changed

+49
-86
lines changed

Package.swift

+18-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// swift-tools-version:5.3
2+
//
13
// Package.swift
24
/*
35
The MIT License (MIT)
@@ -23,8 +25,21 @@ import PackageDescription
2325

2426
let package = Package(
2527
name: "OAuthRxSwift",
28+
products: [
29+
.library(
30+
name: "OAuthRxSwift",
31+
targets: ["OAuthRxSwift"]
32+
),
33+
],
2634
dependencies: [
27-
.Package(url: "https://github.com/OAuthSwift/OAuthSwift.git", majorVersion: 1),
28-
.Package(url: "https://github.com/ReactiveX/RxSwift.git", majorVersion: 3),
35+
.package(url: "https://github.com/OAuthSwift/OAuthSwift", .upToNextMajor(from: "2.1.2")),
36+
.package(url: "https://github.com/ReactiveX/RxSwift", .upToNextMajor(from: "5.1.1")),
37+
],
38+
targets: [
39+
.target(
40+
name: "OAuthRxSwift",
41+
dependencies: ["OAuthSwift", "RxSwift"],
42+
path: "Sources"
43+
),
2944
]
30-
)
45+
)

Sources/OAuthRxSwift.swift

+31-83
Original file line numberDiff line numberDiff line change
@@ -10,94 +10,42 @@ import Foundation
1010
import OAuthSwift
1111
import RxSwift
1212

13-
extension OAuthSwift {
14-
public typealias ObservableElement = (credential: OAuthSwiftCredential, response: URLResponse?, parameters: Parameters) // see OAuthSwift.TokenSuccessHandler TODO replace with OAuthSwift.TokenSuccess
15-
}
16-
17-
extension OAuth1Swift {
1813

19-
open func rx_authorize(withCallbackURL callbackURL: URL) -> Observable<ObservableElement> {
20-
return Observable<ObservableElement>.create{ (observer: AnyObserver<ObservableElement>) -> Disposable in
21-
let handle = self.authorize(
22-
withCallbackURL: callbackURL,
23-
success: { credential, response, parameters in
24-
observer.onNext((credential, response, parameters))
25-
observer.onCompleted()
26-
},
27-
failure: { error in
28-
observer.onError(error)
29-
}
30-
)
31-
// else an error has been thrown
32-
return Disposables.create {
33-
handle?.cancel()
34-
}
35-
}.share()
36-
}
37-
38-
@nonobjc open func rx_authorize(withCallbackURL callbackURL: String) -> Observable<ObservableElement> {
39-
return Observable<ObservableElement>.create{ (observer: AnyObserver<ObservableElement>) -> Disposable in
40-
let handle = self.authorize(
41-
withCallbackURL: callbackURL,
42-
success: { credential, response, parameters in
43-
observer.onNext((credential, response, parameters))
44-
observer.onCompleted()
45-
},
46-
failure: { error in
47-
observer.onError(error)
48-
}
49-
)
50-
// else an error has been thrown
51-
return Disposables.create {
52-
handle?.cancel()
53-
}
54-
}.share()
14+
extension Reactive where Base == OAuth1Swift {
15+
public func authorize(withCallbackURL url: URLConvertible, headers: OAuthSwift.Headers? = nil) -> Observable<OAuthSwift.TokenSuccess> {
16+
Observable.create { (observer: AnyObserver<OAuthSwift.TokenSuccess>) in
17+
let requestHandle = self.base.authorize(withCallbackURL: url, headers: headers) { result in
18+
observer.on(result.asEvent)
19+
observer.on(.completed)
20+
}
21+
return Disposables.create {
22+
requestHandle?.cancel()
23+
}
5524
}
56-
25+
}
5726
}
5827

59-
extension OAuth2Swift {
60-
61-
open func rx_authorize(withCallbackURL callbackURL: URL, scope: String, state: String, parameters: Parameters = [:], headers: Headers? = nil) -> Observable<ObservableElement> {
62-
63-
return Observable<ObservableElement>.create{ (observer: AnyObserver<ObservableElement>) -> Disposable in
64-
let handle = self.authorize(
65-
withCallbackURL: callbackURL,
66-
scope: scope, state: state, parameters: parameters, headers: headers,
67-
success: { credential, response, parameters in
68-
observer.onNext((credential, response, parameters))
69-
observer.onCompleted()
70-
},
71-
failure: { error in
72-
observer.onError(error)
73-
}
74-
)
75-
// else an error has been thrown
76-
return Disposables.create {
77-
handle?.cancel()
78-
}
79-
}.share()
28+
extension Reactive where Base == OAuth2Swift {
29+
public func authorize(withCallbackURL callbackURL: URLConvertible?, scope: String, state: String, parameters: OAuth2Swift.Parameters = [:], headers: OAuthSwift.Headers? = nil) -> Observable<OAuthSwift.TokenSuccess> {
30+
Observable.create { (observer: AnyObserver<OAuthSwift.TokenSuccess>) in
31+
let requestHandle = self.base.authorize(withCallbackURL: callbackURL, scope: scope, state: state, parameters: parameters, headers: headers) { result in
32+
observer.on(result.asEvent)
33+
observer.on(.completed)
34+
}
35+
return Disposables.create {
36+
requestHandle?.cancel()
37+
}
8038
}
39+
}
40+
}
8141

82-
@nonobjc open func rx_authorize(withCallbackURL callbackURL: String, scope: String, state: String, parameters: Parameters = [:], headers: Headers? = nil) -> Observable<ObservableElement> {
83-
84-
return Observable<ObservableElement>.create{ (observer: AnyObserver<ObservableElement>) -> Disposable in
85-
let handle = self.authorize(
86-
withCallbackURL: callbackURL,
87-
scope: scope, state: state, parameters: parameters, headers: headers,
88-
success: { credential, response, parameters in
89-
observer.onNext((credential, response, parameters))
90-
observer.onCompleted()
91-
},
92-
failure: { error in
93-
observer.onError(error)
94-
}
95-
)
96-
// else an error has been thrown
97-
return Disposables.create {
98-
handle?.cancel()
99-
}
100-
}.share()
42+
extension Result {
43+
var asEvent: Event<Success> {
44+
switch self {
45+
case let .success(element):
46+
return .next(element)
47+
case let .failure(error):
48+
return .error(error)
10149
}
102-
50+
}
10351
}

0 commit comments

Comments
 (0)