@@ -10,94 +10,42 @@ import Foundation
10
10
import OAuthSwift
11
11
import RxSwift
12
12
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 {
18
13
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
+ }
55
24
}
56
-
25
+ }
57
26
}
58
27
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
+ }
80
38
}
39
+ }
40
+ }
81
41
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)
101
49
}
102
-
50
+ }
103
51
}
0 commit comments