@@ -82,6 +82,24 @@ extension Unidoc.Server
82
82
self . format ( username: nil , locale: nil )
83
83
}
84
84
85
+ private
86
+ func format( for request: Unidoc . IncomingRequest ) -> Unidoc . RenderFormat
87
+ {
88
+ let username : String ?
89
+
90
+ if case . web( let session? , _) = request. authorization
91
+ {
92
+ username = session. symbol
93
+ }
94
+ else
95
+ {
96
+ username = nil
97
+ }
98
+
99
+ return self . format ( username: username, locale: request. origin. guess? . locale)
100
+ }
101
+
102
+ private
85
103
func format( username: String ? , locale: ISO . Locale ? ) -> Unidoc . RenderFormat
86
104
{
87
105
. init(
@@ -198,7 +216,9 @@ extension Unidoc.Server
198
216
return response
199
217
200
218
case . syncHTML ( let renderable) :
201
- let response: HTTP. ServerResponse = renderable. response ( format: self . format)
219
+ let response: HTTP. ServerResponse = renderable. response (
220
+ format: self . format ( for: request. incoming) )
221
+
202
222
self. logger? . log ( request: request. incoming, with: response, time: . zero)
203
223
return response
204
224
@@ -239,25 +259,15 @@ extension Unidoc.Server
239
259
func respond( to request: Unidoc . IncomingRequest ,
240
260
running operation: any Unidoc . InteractiveOperation ) async throws -> HTTP . ServerResponse
241
261
{
262
+ try Task . checkCancellation ( )
263
+
242
264
do
243
265
{
244
- try Task . checkCancellation ( )
245
-
246
266
let initiated : ContinuousClock . Instant = . now
247
- let username : String ?
248
-
249
- if case . web( let session? , _) = request. authorization
250
- {
251
- username = session. symbol
252
- }
253
- else
254
- {
255
- username = nil
256
- }
257
-
267
+ let format : Unidoc . RenderFormat = self . format ( for: request)
258
268
let state : Unidoc . UserSessionState = . init( authorization: request. authorization,
259
269
request: request. uri,
260
- format: self . format ( username : username , locale : request . origin . guess ? . locale ) )
270
+ format: format)
261
271
262
272
let response : HTTP . ServerResponse = try await operation. load ( from: self , with: state)
263
273
?? . notFound( " not found \n " )
@@ -287,7 +297,7 @@ extension Unidoc.Server
287
297
self . logger? . log ( request: request, with: error)
288
298
289
299
let page : Unidoc . ServerErrorPage = . init( error: error)
290
- return . error( page. resource ( format: self . format) )
300
+ return . error( page. resource ( format: self . format ( for : request ) ) )
291
301
}
292
302
}
293
303
}
0 commit comments