Skip to content

Commit 57109a7

Browse files
committed
Remove use of tsc_await in RegistryManager.discover
1 parent 1ba971a commit 57109a7

File tree

1 file changed

+34
-27
lines changed

1 file changed

+34
-27
lines changed

Diff for: Sources/PackageRegistry/RegistryManager.swift

+34-27
Original file line numberDiff line numberDiff line change
@@ -62,36 +62,43 @@ public final class RegistryManager {
6262
}
6363
}
6464

65-
do {
66-
let manager = try cache.memoize(url) {
67-
let request = HTTPClient.Request(
68-
method: .head,
69-
url: url,
70-
headers: [
71-
"Accept": "application/vnd.swift.registry.v1"
72-
]
73-
)
74-
75-
let client = clientFactory(diagnosticsEngine)
76-
77-
let response = try tsc_await { client.execute(request, callback: $0) }
78-
if response.statusCode == 303,
79-
response.headers.get("Content-Version").first == "1",
80-
let location = response.headers.get("Location").first,
81-
let redirectedURL = URL(string: location, relativeTo: url)
82-
{
83-
return RegistryManager(registryBaseURL: redirectedURL, diagnosticEngine: diagnosticsEngine)
84-
} else {
85-
throw RegistryError.invalidResponse
86-
}
87-
}
88-
65+
if let manager = cache[url] {
8966
queue.async {
9067
completion(.success(manager))
9168
}
92-
} catch {
93-
queue.async {
94-
completion(.failure(error))
69+
} else {
70+
let request = HTTPClient.Request(
71+
method: .head,
72+
url: url,
73+
headers: [
74+
"Accept": "application/vnd.swift.registry.v1"
75+
]
76+
)
77+
78+
let client = clientFactory(diagnosticsEngine)
79+
client.execute(request) { result in
80+
switch result {
81+
case .success(let response):
82+
if response.statusCode == 303,
83+
response.headers.get("Content-Version").first == "1",
84+
let location = response.headers.get("Location").first,
85+
let redirectedURL = URL(string: location, relativeTo: url)
86+
{
87+
let manager = RegistryManager(registryBaseURL: redirectedURL, diagnosticEngine: diagnosticsEngine)
88+
self.cache[url] = manager
89+
queue.async {
90+
completion(.success(manager))
91+
}
92+
} else {
93+
queue.async {
94+
completion(.failure(RegistryError.invalidResponse))
95+
}
96+
}
97+
case .failure(let error):
98+
queue.async {
99+
completion(.failure(error))
100+
}
101+
}
95102
}
96103
}
97104
}

0 commit comments

Comments
 (0)