Skip to content

Commit

Permalink
Merge pull request #12 from Hexaville/fix-bug
Browse files Browse the repository at this point in the history
Fix query params for callback url doesn't through blockForCallbackURL…
  • Loading branch information
noppoMan committed Sep 1, 2017
2 parents d7cc1d1 + 1ea18e9 commit ecb6a12
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 14 deletions.
5 changes: 2 additions & 3 deletions Sources/HexavilleAuth/HexavilleAuth+Router.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
]
)
}
Expand Down
3 changes: 2 additions & 1 deletion Sources/HexavilleAuth/OAuth/OAuth1.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
6 changes: 4 additions & 2 deletions Sources/HexavilleAuth/OAuth/OAuth2.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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)",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit ecb6a12

Please sign in to comment.