From a0a74ed5bf18422e744f69d2dd3c1d3c7bc1e129 Mon Sep 17 00:00:00 2001 From: Matt Kiazyk Date: Thu, 17 Nov 2022 22:39:38 -0600 Subject: [PATCH] Switch Xcode releases back to using Apple Auth :( --- Xcodes/Backend/AppState+Install.swift | 20 ++++++++++---------- Xcodes/Backend/AppState.swift | 3 ++- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Xcodes/Backend/AppState+Install.swift b/Xcodes/Backend/AppState+Install.swift index 8f3650e..ccf637d 100644 --- a/Xcodes/Backend/AppState+Install.swift +++ b/Xcodes/Backend/AppState+Install.swift @@ -43,7 +43,10 @@ extension AppState { Logger.appState.info("Using \(downloader) downloader") - return self.getXcodeArchive(installationType, downloader: downloader) + return validateSession() + .flatMap { _ in + self.getXcodeArchive(installationType, downloader: downloader) + } .flatMap { xcode, url -> AnyPublisher in self.installArchivedXcode(xcode, at: url) } @@ -93,15 +96,12 @@ extension AppState { } private func downloadXcode(availableXcode: AvailableXcode, downloader: Downloader) -> AnyPublisher<(AvailableXcode, URL), Error> { - return validateADCSession(path: availableXcode.downloadPath) - .flatMap { _ in - return self.downloadOrUseExistingArchive(for: availableXcode, downloader: downloader, progressChanged: { [unowned self] progress in - DispatchQueue.main.async { - self.setInstallationStep(of: availableXcode.version, to: .downloading(progress: progress)) - } - }) - .map { return (availableXcode, $0) } - } + self.downloadOrUseExistingArchive(for: availableXcode, downloader: downloader, progressChanged: { [unowned self] progress in + DispatchQueue.main.async { + self.setInstallationStep(of: availableXcode.version, to: .downloading(progress: progress)) + } + }) + .map { return (availableXcode, $0) } .eraseToAnyPublisher() } diff --git a/Xcodes/Backend/AppState.swift b/Xcodes/Backend/AppState.swift index a098642..bf25352 100644 --- a/Xcodes/Backend/AppState.swift +++ b/Xcodes/Backend/AppState.swift @@ -381,7 +381,7 @@ class AppState: ObservableObject { case .apple: install(id: id) case .xcodeReleases: - installWithoutLogin(id: id) + install(id: id) } } @@ -454,6 +454,7 @@ class AppState: ObservableObject { } /// Skips using the username/password to log in to Apple, and simply gets a Auth Cookie used in downloading + /// As of Nov 2022 this was returning a 403 forbidden func installWithoutLogin(id: Xcode.ID) { guard let availableXcode = availableXcodes.first(where: { $0.version == id }) else { return }