5
5
//
6
6
7
7
import Foundation
8
- import GCDWebServer
9
8
import R2Shared
9
+ import ReadiumGCDWebServer
10
10
import UIKit
11
11
12
12
/// Errors thrown by the `PublicationServer`.
@@ -26,7 +26,7 @@ public enum PublicationServerError: Error {
26
26
@available ( * , deprecated, message: " See the 2.5.0 migration guide to migrate the HTTP server " )
27
27
public class PublicationServer : ResourcesServer , Loggable {
28
28
/// The HTTP server.
29
- var webServer : GCDWebServer
29
+ var webServer : ReadiumGCDWebServer
30
30
31
31
// Mapping between endpoint and the matching publication.
32
32
public private( set) var publications : [ String : Publication ] = [ : ]
@@ -46,11 +46,11 @@ public class PublicationServer: ResourcesServer, Loggable {
46
46
47
47
public init ? ( ) {
48
48
#if DEBUG
49
- GCDWebServer . setLogLevel ( 2 )
49
+ ReadiumGCDWebServer . setLogLevel ( 2 )
50
50
#else
51
- GCDWebServer . setLogLevel ( 3 )
51
+ ReadiumGCDWebServer . setLogLevel ( 3 )
52
52
#endif
53
- webServer = GCDWebServer ( )
53
+ webServer = ReadiumGCDWebServer ( )
54
54
if startWebServer ( ) == false {
55
55
return nil
56
56
}
@@ -100,11 +100,11 @@ public class PublicationServer: ResourcesServer, Loggable {
100
100
// Check if it's supported by WKWebView first.
101
101
webServer. stop ( )
102
102
try webServer. start ( options: [
103
- GCDWebServerOption_Port : port,
104
- GCDWebServerOption_BindToLocalhost : true ,
103
+ ReadiumGCDWebServerOption_Port : port,
104
+ ReadiumGCDWebServerOption_BindToLocalhost : true ,
105
105
// We disable automatically suspending the server in the background, to be able to play
106
106
// audiobooks even with the screen locked.
107
- GCDWebServerOption_AutomaticallySuspendInBackground : false ,
107
+ ReadiumGCDWebServerOption_AutomaticallySuspendInBackground : false ,
108
108
] )
109
109
}
110
110
@@ -208,11 +208,11 @@ public class PublicationServer: ResourcesServer, Loggable {
208
208
webServer. addHandler (
209
209
forMethod: " GET " ,
210
210
pathRegex: " / \( endpoint) /.* " ,
211
- request: GCDWebServerRequest . self,
211
+ request: ReadiumGCDWebServerRequest . self,
212
212
processBlock: { [ weak self, weak publication] request in
213
213
guard let publication = publication else {
214
214
self ? . log ( . error, " The publication was deallocated. " )
215
- return GCDWebServerErrorResponse ( statusCode: 500 )
215
+ return ReadiumGCDWebServerErrorResponse ( statusCode: 500 )
216
216
}
217
217
218
218
// Remove the prefix from the URI.
@@ -237,17 +237,17 @@ public class PublicationServer: ResourcesServer, Loggable {
237
237
webServer. addHandler (
238
238
forMethod: " GET " ,
239
239
pathRegex: " / \( endpoint) /manifest.json " ,
240
- request: GCDWebServerRequest . self,
240
+ request: ReadiumGCDWebServerRequest . self,
241
241
processBlock: { [ weak self, weak publication] _ in
242
242
guard let publication = publication else {
243
243
self ? . log ( . error, " The publication was deallocated. " )
244
- return GCDWebServerErrorResponse ( statusCode: 500 )
244
+ return ReadiumGCDWebServerErrorResponse ( statusCode: 500 )
245
245
}
246
246
guard let manifestData = publication. jsonManifest? . data ( using: . utf8) else {
247
- return GCDWebServerResponse ( statusCode: 404 )
247
+ return ReadiumGCDWebServerResponse ( statusCode: 404 )
248
248
}
249
249
let type = " \( MediaType . readiumWebPubManifest. string) ; charset=utf-8 "
250
- return GCDWebServerDataResponse ( data: manifestData, contentType: type)
250
+ return ReadiumGCDWebServerDataResponse ( data: manifestData, contentType: type)
251
251
}
252
252
)
253
253
}
@@ -314,7 +314,7 @@ public class PublicationServer: ResourcesServer, Loggable {
314
314
webServer. addHandler (
315
315
forMethod: " GET " ,
316
316
pathRegex: " \( path) (/.*)? " ,
317
- request: GCDWebServerRequest . self,
317
+ request: ReadiumGCDWebServerRequest . self,
318
318
processBlock: resourceHandler
319
319
)
320
320
}
@@ -324,7 +324,7 @@ public class PublicationServer: ResourcesServer, Loggable {
324
324
return baseURL. appendingPathComponent ( String ( path. dropFirst ( ) ) )
325
325
}
326
326
327
- private func resourceHandler( _ request: GCDWebServerRequest ? ) -> GCDWebServerResponse ? {
327
+ private func resourceHandler( _ request: ReadiumGCDWebServerRequest ? ) -> ReadiumGCDWebServerResponse ? {
328
328
guard let request = request else {
329
329
return nil
330
330
}
@@ -333,13 +333,13 @@ public class PublicationServer: ResourcesServer, Loggable {
333
333
guard let basePath = paths. first ( where: { path. hasPrefix ( $0) } ) ,
334
334
var file = resources [ basePath]
335
335
else {
336
- return GCDWebServerResponse ( statusCode: 404 )
336
+ return ReadiumGCDWebServerResponse ( statusCode: 404 )
337
337
}
338
338
path = String ( path. dropFirst ( basePath. count + 1 ) )
339
339
file. appendPathComponent ( path)
340
340
341
341
guard let data = try ? Data ( contentsOf: file) else {
342
- return GCDWebServerResponse ( statusCode: 404 )
342
+ return ReadiumGCDWebServerResponse ( statusCode: 404 )
343
343
}
344
344
345
345
let contentType = MediaType . of ( file) ? . string
@@ -348,7 +348,7 @@ public class PublicationServer: ResourcesServer, Loggable {
348
348
// log(.debug, "Serve resource `\(path)` (\(contentType))")
349
349
350
350
assert ( file. pathExtension. lowercased ( ) != " css " || contentType == " text/css " )
351
- return GCDWebServerDataResponse ( data: data, contentType: contentType)
351
+ return ReadiumGCDWebServerDataResponse ( data: data, contentType: contentType)
352
352
}
353
353
354
354
@available ( * , unavailable, message: " Passing a `Container` is not needed anymore " )
0 commit comments