From d7ac3f943c350adabe480a726f7fcd90543ccdc9 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Mon, 14 Oct 2024 21:29:25 -0700 Subject: [PATCH] =?UTF-8?q?Add=20logging=20to=20HTMLMetadataDownloader.=20?= =?UTF-8?q?Make=20it=20not=20@MainActor,=20since=20it=20doesn=E2=80=99t=20?= =?UTF-8?q?need=20to=20be.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HTMLMetadata/HTMLMetadataDownloader.swift | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/Shared/HTMLMetadata/HTMLMetadataDownloader.swift b/Shared/HTMLMetadata/HTMLMetadataDownloader.swift index fd59fa0f3..d5ac35405 100644 --- a/Shared/HTMLMetadata/HTMLMetadataDownloader.swift +++ b/Shared/HTMLMetadata/HTMLMetadataDownloader.swift @@ -7,12 +7,20 @@ // import Foundation +import os import Web import Parser struct HTMLMetadataDownloader { - @MainActor static func downloadMetadata(for url: String) async -> HTMLMetadata? { + nonisolated(unsafe) private static let logger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "HTMLMetadataDownloader") + private static let debugLoggingEnabled = true + + static func downloadMetadata(for url: String) async -> HTMLMetadata? { + + if debugLoggingEnabled { + logger.debug("HTMLMetadataDownloader download for \(url)") + } guard let actualURL = URL(string: url) else { return nil @@ -25,18 +33,23 @@ struct HTMLMetadataDownloader { if let data, !data.isEmpty, let response, response.statusIsOK { let urlToUse = response.url ?? actualURL let parserData = ParserData(url: urlToUse.absoluteString, data: data) + + if debugLoggingEnabled { + logger.debug("HTMLMetadataDownloader parsing metadata for \(url)") + } + return await parseMetadata(with: parserData) } + if debugLoggingEnabled { + logger.debug("HTMLMetadataDownloader failed download for \(url)") + } + return nil } - @MainActor private static func parseMetadata(with parserData: ParserData) async -> HTMLMetadata? { + private static func parseMetadata(with parserData: ParserData) async -> HTMLMetadata? { - let task = Task.detached { () -> HTMLMetadata? in - HTMLMetadataParser.metadata(with: parserData) - } - - return await task.value + return HTMLMetadataParser.metadata(with: parserData) } }