@@ -3,7 +3,8 @@ import Vapor
33
44/// Defines a type that implements the routing to get an access token from an OAuth provider.
55/// See implementations in the `Services/(Google|GitHub)/$0Router.swift` files
6- package protocol FederatedServiceRouter : Sendable {
6+ /// Marked as public so that custom routers can be built
7+ public protocol FederatedServiceRouter : Sendable {
78 /// An object that gets the client ID and secret from environment variables.
89 var tokens : any FederatedServiceTokens { get }
910
@@ -78,11 +79,11 @@ package protocol FederatedServiceRouter: Sendable {
7879}
7980
8081extension FederatedServiceRouter {
81- package var codeKey : String { " code " }
82- package var errorKey : String { " error " }
82+ public var codeKey : String { " code " }
83+ public var errorKey : String { " error " }
8384 package var callbackHeaders : HTTPHeaders { [ : ] }
8485
85- package func configureRoutes(
86+ public func configureRoutes(
8687 withAuthURL authURL: String , authenticateCallback: ( @Sendable ( Request) async throws -> Void ) ? , on router: some RoutesBuilder
8788 ) throws {
8889 router. get ( callbackURL. pathSegments, use: callback)
@@ -96,7 +97,7 @@ extension FederatedServiceRouter {
9697 }
9798 }
9899
99- package func fetchToken( from request: Request ) async throws -> String {
100+ public func fetchToken( from request: Request ) async throws -> String {
100101 let code : String
101102 if let queryCode: String = try request. query. get ( at: codeKey) {
102103 code = queryCode
@@ -114,7 +115,7 @@ extension FederatedServiceRouter {
114115 return try response. content. get ( String . self, at: [ " access_token " ] )
115116 }
116117
117- package func callback( _ request: Request ) async throws -> Response {
118+ public func callback( _ request: Request ) async throws -> Response {
118119 let accessToken = try await self . fetchToken ( from: request)
119120 let session = request. session
120121 try session. setAccessToken ( accessToken)
@@ -124,20 +125,21 @@ extension FederatedServiceRouter {
124125}
125126
126127/// Convenience URLQueryItems
128+ /// Marked as public so that custom routers can be built
127129extension FederatedServiceRouter {
128- package var clientIDItem : URLQueryItem {
130+ public var clientIDItem : URLQueryItem {
129131 . init( name: " client_id " , value: tokens. clientID)
130132 }
131133
132- package var redirectURIItem : URLQueryItem {
134+ public var redirectURIItem : URLQueryItem {
133135 . init( name: " redirect_uri " , value: callbackURL)
134136 }
135137
136- package var scopeItem : URLQueryItem {
138+ public var scopeItem : URLQueryItem {
137139 . init( name: " scope " , value: scope. joined ( separator: " " ) )
138140 }
139141
140- package var codeResponseTypeItem : URLQueryItem {
142+ public var codeResponseTypeItem : URLQueryItem {
141143 . init( name: " response_type " , value: " code " )
142144 }
143145}
0 commit comments