Skip to content

Commit 132b2b5

Browse files
committed
Fix warnings
1 parent 85882fc commit 132b2b5

4 files changed

Lines changed: 63 additions & 55 deletions

File tree

Sources/App/Controllers/PackageController+routes.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ enum PackageController {
220220
body: ByteBuffer(data: data)
221221
)
222222
return response
223-
} catch let fallbackError {
223+
} catch {
224224
throw Abort(.notFound)
225225
}
226226
} else {

Sources/App/Core/Dependencies/HTTPClient.swift

Lines changed: 37 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -121,61 +121,55 @@ extension HTTPClient {
121121
httpClientProvider: .createNew
122122
)
123123

124-
defer {
125-
Task {
126-
try await awsClient.shutdown()
124+
return try await run {
125+
// Extract region from URL
126+
let urlComponents = URLComponents(string: url.string)
127+
guard let host = urlComponents?.host else {
128+
throw AppError.genericError(nil, "Invalid URL: \(url.string)")
127129
}
128-
}
129-
130-
// Extract region from URL
131-
let urlComponents = URLComponents(string: url.string)
132-
guard let host = urlComponents?.host else {
133-
throw AppError.genericError(nil, "Invalid URL: \(url.string)")
134-
}
135130

136-
let region = extractRegionFromHost(host) ?? .useast2
137-
138-
// Get credentials from the credential provider
139-
let credentials: Credential
140-
do {
141-
credentials = try await awsClient.credentialProvider.getCredential(
142-
on: awsClient.eventLoopGroup.next(),
143-
logger: Logger(label: "aws-credentials")
144-
).get()
145-
} catch {
146-
throw AppError.genericError(nil, "Failed to retrieve AWS credentials: \(error)")
147-
}
131+
let region = extractRegionFromHost(host) ?? .useast2
132+
133+
// Get credentials from the credential provider
134+
let credentials: Credential
135+
do {
136+
credentials = try await awsClient.credentialProvider.getCredential(
137+
on: awsClient.eventLoopGroup.next(),
138+
logger: Logger(label: "aws-credentials")
139+
).get()
140+
} catch {
141+
throw AppError.genericError(nil, "Failed to retrieve AWS credentials: \(error)")
142+
}
148143

149-
// Use Soto's AWSSigner to sign the request headers
150-
let signer = AWSSigner(
151-
credentials: credentials,
152-
name: "execute-api",
153-
region: region.rawValue
154-
)
144+
// Use Soto's AWSSigner to sign the request headers
145+
let signer = AWSSigner(
146+
credentials: credentials,
147+
name: "execute-api",
148+
region: region.rawValue
149+
)
155150

156-
// Create the request URL
157-
guard let requestURL = URL(string: url.string) else {
158-
throw AppError.genericError(nil, "Invalid URL: \(url.string)")
159-
}
151+
// Create the request URL
152+
guard let requestURL = URL(string: url.string) else {
153+
throw AppError.genericError(nil, "Invalid URL: \(url.string)")
154+
}
160155

161-
// Sign the headers for the request
162-
let signedHeaders: HTTPHeaders
163-
do {
164-
signedHeaders = try await signer.signHeaders(
156+
// Sign the headers for the request
157+
let signedHeaders: HTTPHeaders
158+
signedHeaders = signer.signHeaders(
165159
url: requestURL,
166160
method: HTTPMethod.GET,
167161
headers: HTTPHeaders(),
168162
body: nil
169163
)
170-
} catch {
171-
throw AppError.genericError(nil, "Failed to sign request: \(error)")
172-
}
173164

174-
// Create request with signed headers
175-
let request = try Request(url: url.string, method: .GET, headers: signedHeaders)
165+
// Create request with signed headers
166+
let request = try Request(url: url.string, method: .GET, headers: signedHeaders)
176167

177-
// Execute the request
178-
return try await shared.execute(request: request).get()
168+
// Execute the request
169+
return try await shared.execute(request: request).get()
170+
} defer: {
171+
try await awsClient.shutdown()
172+
}
179173
}
180174

181175
private static func extractRegionFromHost(_ host: String) -> Region? {

Sources/App/Core/Gitlab.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ extension Gitlab.Builder {
163163
logger.info("Triggered build: \(res.webUrl)")
164164
return res
165165
} catch {
166-
let responseBody = response.body?.asString() ?? "nil"
167166
return .init(status: response.status, webUrl: nil)
168167
}
169168
}

Sources/S3Store/S3Store.swift

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,19 +69,19 @@ public struct S3Store {
6969
client = AWSClient(credentialProvider: .default,
7070
httpClientProvider: .createNew)
7171
}
72-
defer {
73-
Task {
74-
try await client.shutdown()
75-
}
76-
}
7772

78-
let s3 = S3(client: client, region: self.region)
73+
return try await run {
74+
let s3 = S3(client: client, region: self.region)
7975

80-
// Create the base URL for the S3 object
81-
let baseURL = URL(string: "https://\(key.bucket).s3.\(self.region).amazonaws.com/\(key.path)")!
76+
// Create the base URL for the S3 object
77+
let baseURL = URL(string: "https://\(key.bucket).s3.\(self.region).amazonaws.com/\(key.path)")!
8278

83-
let url = try await s3.signURL(url: baseURL, httpMethod: .PUT, expires: .seconds(Int64(expiration)))
84-
return url.absoluteString
79+
let url = try await s3.signURL(url: baseURL, httpMethod: .PUT, expires: .seconds(Int64(expiration)))
80+
81+
return url.absoluteString
82+
} defer: {
83+
try await client.shutdown()
84+
}
8585
}
8686

8787
public func readString(from key: Key) async throws -> String {
@@ -200,3 +200,18 @@ private extension String {
200200
return String(result)
201201
}
202202
}
203+
204+
205+
// Copied from ErrorHandlingHelpers.swift in the main module
206+
@discardableResult
207+
private func run<T>(_ operation: () async throws -> T,
208+
defer deferredOperation: () async throws -> Void) async throws -> T {
209+
do {
210+
let result = try await operation()
211+
try await deferredOperation()
212+
return result
213+
} catch {
214+
try await deferredOperation()
215+
throw error
216+
}
217+
}

0 commit comments

Comments
 (0)