Skip to content

Commit 2e6abe0

Browse files
committed
oauth1.1a, oauth2.0
1 parent e5f8e46 commit 2e6abe0

16 files changed

Lines changed: 91 additions & 64 deletions

Sources/TwitterAPIKit/APIv1/TwitterAPIv1.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ public typealias TwitterAPIv1 =
33
// sorted
44
& AccountAPIv1
55
& ApplicationAPIv1
6-
& AuthAPIv1
76
& BlockAndMuteAPIv1
87
& CollectionAPIv1
98
& DirectMessageAPIv1
@@ -23,7 +22,6 @@ public typealias TwitterAPIv1 =
2322
public protocol TwitterAPIResourceV1 {
2423
var account: AccountAPIv1 { get }
2524
var application: ApplicationAPIv1 { get }
26-
var auth: AuthAPIv1 { get }
2725
var blockAndMute: BlockAndMuteAPIv1 { get }
2826
var collection: CollectionAPIv1 { get }
2927
var directMessage: DirectMessageAPIv1 { get }
@@ -45,7 +43,6 @@ public protocol TwitterAPIResourceV1 {
4543
extension TwitterAPIKit.TwitterAPIImplV1: TwitterAPIResourceV1 {
4644
var account: AccountAPIv1 { return self }
4745
var application: ApplicationAPIv1 { return self }
48-
var auth: AuthAPIv1 { return self }
4946
var blockAndMute: BlockAndMuteAPIv1 { return self }
5047
var collection: CollectionAPIv1 { return self }
5148
var directMessage: DirectMessageAPIv1 { return self }
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
public typealias TwitterAuthAPI =
2+
TwitterAuthAPIResource
3+
& OAuth11aAPI
4+
& OAuth20API
5+
6+
public protocol TwitterAuthAPIResource {
7+
var oauth11a: OAuth11aAPI { get }
8+
var oauth20: OAuth20API { get }
9+
}
10+
11+
extension TwitterAPIKit.TwitterAuthAPIImpl: TwitterAuthAPIResource {
12+
var oauth11a: OAuth11aAPI { return self }
13+
var oauth20: OAuth20API { return self }
14+
}

Sources/TwitterAPIKit/AuthAPI/AuthAPIv1.swift renamed to Sources/TwitterAPIKit/AuthAPI/OAuth11aAPI.swift

Lines changed: 2 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import Foundation
22

3-
public protocol AuthAPIv1 {
4-
3+
public protocol OAuth11aAPI {
54
/// https://developer.twitter.com/en/docs/authentication/api-reference/request_token
65
func postOAuthRequestTokenData(
76
_ request: PostOAuthRequestTokenRequestV1
@@ -32,29 +31,9 @@ public protocol AuthAPIv1 {
3231
func postInvalidateAccessToken(
3332
_ request: PostOAuthInvalidateTokenRequestV1
3433
) -> TwitterAPISessionJSONTask
35-
36-
/// https://developer.twitter.com/en/docs/authentication/api-reference/token
37-
func postOAuth2BearerTokenData(
38-
_ request: PostOAuth2TokenRequestV1
39-
) -> TwitterAPISessionDataTask
40-
41-
/// https://developer.twitter.com/en/docs/authentication/api-reference/token
42-
func postOAuth2BearerToken(
43-
_ request: PostOAuth2TokenRequestV1
44-
) -> TwitterAPISessionSpecializedTask<TwitterOAuth2BearerToken>
45-
46-
/// https://developer.twitter.com/en/docs/authentication/api-reference/invalidate_bearer_token
47-
///
48-
///May not work. {"errors":[{"code":348,"message":"Client application is not permitted to to invalidate this token."}]}
49-
/// https://twittercommunity.com/t/oauth2-invalidate-token-not-working-for-app-only-authentication-tokens/133108
50-
/// https://twittercommunity.com/t/invalidate-bearer-client-application-not-permitted/162761
51-
func postInvalidateOAuth2BearerToken(
52-
_ request: PostOAuth2InvalidateTokenRequestV1
53-
) -> TwitterAPISessionJSONTask
5434
}
5535

56-
extension TwitterAPIKit.TwitterAPIImplV1: AuthAPIv1 {
57-
36+
extension TwitterAPIKit.TwitterAuthAPIImpl: OAuth11aAPI {
5837
public func postOAuthRequestTokenData(
5938
_ request: PostOAuthRequestTokenRequestV1
6039
) -> TwitterAPISessionDataTask {
@@ -110,36 +89,4 @@ extension TwitterAPIKit.TwitterAPIImplV1: AuthAPIv1 {
11089
) -> TwitterAPISessionJSONTask {
11190
return session.send(request)
11291
}
113-
114-
public func postOAuth2BearerTokenData(
115-
_ request: PostOAuth2TokenRequestV1
116-
) -> TwitterAPISessionDataTask {
117-
return session.send(request)
118-
}
119-
120-
func postOAuth2BearerToken(
121-
_ request: PostOAuth2TokenRequestV1
122-
) -> TwitterAPISessionSpecializedTask<TwitterOAuth2BearerToken> {
123-
return session.send(request)
124-
.specialized { data in
125-
do {
126-
guard let token = try TwitterOAuth2BearerToken(jsonData: data) else {
127-
throw TwitterAPIKitError.responseSerializeFailed(
128-
reason: .cannotConvert(data: data, toTypeName: "TwitterOAuth2BearerToken")
129-
)
130-
}
131-
return token
132-
} catch let error {
133-
throw TwitterAPIKitError.responseSerializeFailed(
134-
reason: .jsonSerializationFailed(error: error)
135-
)
136-
}
137-
}
138-
}
139-
140-
public func postInvalidateOAuth2BearerToken(
141-
_ request: PostOAuth2InvalidateTokenRequestV1
142-
) -> TwitterAPISessionJSONTask {
143-
return session.send(request)
144-
}
14592
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import Foundation
2+
3+
public protocol OAuth20API {
4+
5+
/// https://developer.twitter.com/en/docs/authentication/api-reference/token
6+
func postOAuth2BearerTokenData(
7+
_ request: PostOAuth2TokenRequestV1
8+
) -> TwitterAPISessionDataTask
9+
10+
/// https://developer.twitter.com/en/docs/authentication/api-reference/token
11+
func postOAuth2BearerToken(
12+
_ request: PostOAuth2TokenRequestV1
13+
) -> TwitterAPISessionSpecializedTask<TwitterOAuth2BearerToken>
14+
15+
/// https://developer.twitter.com/en/docs/authentication/api-reference/invalidate_bearer_token
16+
///
17+
///May not work. {"errors":[{"code":348,"message":"Client application is not permitted to to invalidate this token."}]}
18+
/// https://twittercommunity.com/t/oauth2-invalidate-token-not-working-for-app-only-authentication-tokens/133108
19+
/// https://twittercommunity.com/t/invalidate-bearer-client-application-not-permitted/162761
20+
func postInvalidateOAuth2BearerToken(
21+
_ request: PostOAuth2InvalidateTokenRequestV1
22+
) -> TwitterAPISessionJSONTask
23+
}
24+
25+
extension TwitterAPIKit.TwitterAuthAPIImpl: OAuth20API {
26+
public func postOAuth2BearerTokenData(
27+
_ request: PostOAuth2TokenRequestV1
28+
) -> TwitterAPISessionDataTask {
29+
return session.send(request)
30+
}
31+
32+
func postOAuth2BearerToken(
33+
_ request: PostOAuth2TokenRequestV1
34+
) -> TwitterAPISessionSpecializedTask<TwitterOAuth2BearerToken> {
35+
return session.send(request)
36+
.specialized { data in
37+
do {
38+
guard let token = try TwitterOAuth2BearerToken(jsonData: data) else {
39+
throw TwitterAPIKitError.responseSerializeFailed(
40+
reason: .cannotConvert(data: data, toTypeName: "TwitterOAuth2BearerToken")
41+
)
42+
}
43+
return token
44+
} catch let error {
45+
throw TwitterAPIKitError.responseSerializeFailed(
46+
reason: .jsonSerializationFailed(error: error)
47+
)
48+
}
49+
}
50+
}
51+
52+
public func postInvalidateOAuth2BearerToken(
53+
_ request: PostOAuth2InvalidateTokenRequestV1
54+
) -> TwitterAPISessionJSONTask {
55+
return session.send(request)
56+
}
57+
}

Sources/TwitterAPIKit/TwitterAPIKit.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ open class TwitterAPIKit {
3939
return decoder
4040
}()
4141

42+
public let auth: TwitterAuthAPI
4243
public let v1: TwitterAPIv1
4344
public let v2: TwitterAPIv2
4445

@@ -57,6 +58,7 @@ open class TwitterAPIKit {
5758
configuration: configuration,
5859
environment: environment
5960
)
61+
self.auth = TwitterAuthAPIImpl(session: session)
6062
v1 = TwitterAPIImplV1(session: session)
6163
v2 = TwitterAPIImplV2(session: session)
6264
}
@@ -81,6 +83,13 @@ open class TwitterAPIKit {
8183

8284
extension TwitterAPIKit {
8385

86+
class TwitterAuthAPIImpl {
87+
let session: TwitterAPISession
88+
init(session: TwitterAPISession) {
89+
self.session = session
90+
}
91+
}
92+
8493
class TwitterAPIImplV1 {
8594
let session: TwitterAPISession
8695
init(session: TwitterAPISession) {

Tests/TwitterAPIKitTests/APIv1/Auth/GetOAuthAuthenticateRequestV1Tests.swift renamed to Tests/TwitterAPIKitTests/AuthAPI/GetOAuthAuthenticateRequestV1Tests.swift

File renamed without changes.

Tests/TwitterAPIKitTests/APIv1/Auth/GetOAuthAuthorizeRequestV1Tests.swift renamed to Tests/TwitterAPIKitTests/AuthAPI/GetOAuthAuthorizeRequestV1Tests.swift

File renamed without changes.

Tests/TwitterAPIKitTests/APIv1/Auth/PostOAuth2InvalidateTokenRequestV1Tests.swift renamed to Tests/TwitterAPIKitTests/AuthAPI/PostOAuth2InvalidateTokenRequestV1Tests.swift

File renamed without changes.

Tests/TwitterAPIKitTests/APIv1/Auth/PostOAuth2TokenRequestV1Tests.swift renamed to Tests/TwitterAPIKitTests/AuthAPI/PostOAuth2TokenRequestV1Tests.swift

File renamed without changes.

Tests/TwitterAPIKitTests/APIv1/Auth/PostOAuthAccessTokenRequestV1Tests.swift renamed to Tests/TwitterAPIKitTests/AuthAPI/PostOAuthAccessTokenRequestV1Tests.swift

File renamed without changes.

0 commit comments

Comments
 (0)