diff --git a/Sources/StravaSwift/StravaClient.swift b/Sources/StravaSwift/StravaClient.swift index 3eee652..3f368cb 100644 --- a/Sources/StravaSwift/StravaClient.swift +++ b/Sources/StravaSwift/StravaClient.swift @@ -29,6 +29,9 @@ open class StravaClient: NSObject { fileprivate var stravaAccessUsage: [Int]? fileprivate var stravaAccessLimit: [Int]? + // 'Scope' string returned from Stava with authorised permissions + fileprivate var stravaScope: String? + fileprivate override init() {} fileprivate var config: StravaConfig? @@ -80,6 +83,12 @@ extension StravaClient { } } +// MARK: Access authorised scope +extension StravaClient { + public func authorisedScope() -> [Scope] { + return stravaScope?.split(separator: ",").compactMap { scopeString in Scope(rawValue: String(scopeString)) } ?? [] + } +} //MARK:varConfig @@ -165,7 +174,6 @@ extension StravaClient: ASWebAuthenticationPresentationContextProviding { public func handleAuthorizationRedirect(_ url: URL) -> Bool { if let redirectUri = config?.redirectUri, url.absoluteString.starts(with: redirectUri), let params = url.getQueryParameters(), params["code"] != nil, params["scope"] != nil, params["state"] == "ios" { - self.handleAuthorizationRedirect(url) { result in if let currentAuthorizationHandler = self.currentAuthorizationHandler { currentAuthorizationHandler(result) @@ -186,6 +194,7 @@ extension StravaClient: ASWebAuthenticationPresentationContextProviding { **/ private func handleAuthorizationRedirect(_ url: URL, result: @escaping AuthorizationHandler) { if let code = url.getQueryParameters()?["code"] { + self.stravaScope = url.getQueryParameters()?["scope"] self.getAccessToken(code, result: result) } else { result(.failure(generateError(failureReason: "Invalid authorization code", response: nil)))