diff --git a/Sources/HexavilleAuth/HexavilleAuth+Router.swift b/Sources/HexavilleAuth/HexavilleAuth+Router.swift index c915d9f..75b19e7 100644 --- a/Sources/HexavilleAuth/HexavilleAuth+Router.swift +++ b/Sources/HexavilleAuth/HexavilleAuth+Router.swift @@ -16,8 +16,7 @@ extension HexavilleAuth { switch type { case .oauth1(let provider): router.use(.get, provider.path) { request, context in - let queryItems: [URLQueryItem] = provider.oauth.blockForCallbackURLQueryParams?(request) ?? [] - let requestToken = try provider.getRequestToken(withCallbackURLQueryItems: queryItems) + let requestToken = try provider.getRequestToken(for: request) context.session?["hexaville.oauth_token_secret"] = requestToken.oauthTokenSecret context.session?["hexaville.oauth_token"] = requestToken.oauthToken let location = try provider.createAuthorizeURL(requestToken: requestToken).absoluteString @@ -53,7 +52,7 @@ extension HexavilleAuth { return Response( status: .found, headers: [ - "Location": try provider.createAuthorizeURL(withCallbackURLQueryItems: request.queryItems).absoluteString + "Location": try provider.createAuthorizeURL(for: request).absoluteString ] ) } diff --git a/Sources/HexavilleAuth/OAuth/OAuth1.swift b/Sources/HexavilleAuth/OAuth/OAuth1.swift index e631230..0bcbdca 100644 --- a/Sources/HexavilleAuth/OAuth/OAuth1.swift +++ b/Sources/HexavilleAuth/OAuth/OAuth1.swift @@ -118,7 +118,8 @@ public class OAuth1 { return dict.map({ "\($0.key)=\($0.value)" }).joined(separator: "&") } - public func getRequestToken(withCallbackURLQueryItems queryItems: [URLQueryItem]) throws -> RequestToken { + public func getRequestToken(for request: Request) throws -> RequestToken { + let queryItems = blockForCallbackURLQueryParams?(request) ?? [] var params = [ "oauth_callback": callbackURL.absoluteURL(withQueryItems: queryItems)!.absoluteString, "oauth_consumer_key": consumerKey, diff --git a/Sources/HexavilleAuth/OAuth/OAuth2.swift b/Sources/HexavilleAuth/OAuth/OAuth2.swift index 6d50b68..94d53a4 100644 --- a/Sources/HexavilleAuth/OAuth/OAuth2.swift +++ b/Sources/HexavilleAuth/OAuth/OAuth2.swift @@ -38,7 +38,8 @@ public class OAuth2 { return dict.map({ "\($0.key)=\($0.value)" }).joined(separator: "&") } - public func createAuthorizeURL(withCallbackURLQueryItems queryItems: [URLQueryItem]) throws -> URL { + public func createAuthorizeURL(for request: Request) throws -> URL { + let queryItems = blockForCallbackURLQueryParams?(request) ?? [] let params = [ "client_id": consumerKey, "redirect_uri": callbackURL.absoluteURL(withQueryItems: queryItems)!.absoluteString, @@ -61,7 +62,8 @@ public class OAuth2 { } let urlString = self.accessTokenURL! let url = URL(string: urlString)! - let redirectURL = callbackURL.absoluteURL(withQueryItems: request.queryItems)!.absoluteString + let queryItems = blockForCallbackURLQueryParams?(request) ?? [] + let redirectURL = callbackURL.absoluteURL(withQueryItems: queryItems)!.absoluteString let body: [String] = [ "client_id=\(self.consumerKey)", diff --git a/Sources/HexavilleAuth/Providers/OAuth1/TwitterAuthorizationProvider.swift b/Sources/HexavilleAuth/Providers/OAuth1/TwitterAuthorizationProvider.swift index 6e8a8ca..4fb6781 100644 --- a/Sources/HexavilleAuth/Providers/OAuth1/TwitterAuthorizationProvider.swift +++ b/Sources/HexavilleAuth/Providers/OAuth1/TwitterAuthorizationProvider.swift @@ -43,7 +43,7 @@ public struct TwitterAuthorizationProvider: OAuth1AuthorizationProvidable { } public func authorize(request: Request, requestToken: RequestToken) throws -> (Credential, LoginUser) { - let credential = try self.getAccessToken(request: request, requestToken: requestToken) + let credential = try self.getAccessToken(for: request, requestToken: requestToken) let info = try self.oauth.verify(credential: credential, verifyURL: "https://api.twitter.com/1.1/account/verify_credentials.json") let user = LoginUser( diff --git a/Sources/HexavilleAuth/Providers/OAuth1AuthorizationProvidable.swift b/Sources/HexavilleAuth/Providers/OAuth1AuthorizationProvidable.swift index 7c5075c..ec0664e 100644 --- a/Sources/HexavilleAuth/Providers/OAuth1AuthorizationProvidable.swift +++ b/Sources/HexavilleAuth/Providers/OAuth1AuthorizationProvidable.swift @@ -14,22 +14,22 @@ public protocol OAuth1AuthorizationProvidable { var oauth: OAuth1 { get } var callback: RespodWithCredential { get } init(path: String, consumerKey: String, consumerSecret: String, callbackURL: CallbackURL, blockForCallbackURLQueryParams: ((Request) -> [URLQueryItem])?, scope: String, callback: @escaping RespodWithCredential) - func getRequestToken(withCallbackURLQueryItems queryItems: [URLQueryItem]) throws -> RequestToken + func getRequestToken(for request: Request) throws -> RequestToken func createAuthorizeURL(requestToken: RequestToken) throws -> URL - func getAccessToken(request: Request, requestToken: RequestToken) throws -> Credential + func getAccessToken(for request: Request, requestToken: RequestToken) throws -> Credential func authorize(request: Request, requestToken: RequestToken) throws -> (Credential, LoginUser) } extension OAuth1AuthorizationProvidable { - public func getRequestToken(withCallbackURLQueryItems queryItems: [URLQueryItem]) throws -> RequestToken { - return try oauth.getRequestToken(withCallbackURLQueryItems: queryItems) + public func getRequestToken(for request: Request) throws -> RequestToken { + return try oauth.getRequestToken(for : request) } public func createAuthorizeURL(requestToken: RequestToken) throws -> URL { return try oauth.createAuthorizeURL(requestToken: requestToken) } - public func getAccessToken(request: Request, requestToken: RequestToken) throws -> Credential { + public func getAccessToken(for request: Request, requestToken: RequestToken) throws -> Credential { return try self.oauth.getAccessToken(request: request, requestToken: requestToken) } } diff --git a/Sources/HexavilleAuth/Providers/OAuth2AuthorizationProvidable.swift b/Sources/HexavilleAuth/Providers/OAuth2AuthorizationProvidable.swift index 48e20a2..75a6044 100644 --- a/Sources/HexavilleAuth/Providers/OAuth2AuthorizationProvidable.swift +++ b/Sources/HexavilleAuth/Providers/OAuth2AuthorizationProvidable.swift @@ -21,8 +21,8 @@ public protocol OAuth2AuthorizationProvidable { } extension OAuth2AuthorizationProvidable { - public func createAuthorizeURL(withCallbackURLQueryItems queryItems: [URLQueryItem]) throws -> URL { - return try oauth.createAuthorizeURL(withCallbackURLQueryItems: queryItems) + public func createAuthorizeURL(for request: Request) throws -> URL { + return try oauth.createAuthorizeURL(for: request) } public func getAccessToken(for request: Request) throws -> Credential {