1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package com.linecorp.centraldogma.server.internal.admin.auth;
17
18 import static java.util.Objects.requireNonNull;
19
20 import com.linecorp.armeria.common.HttpRequest;
21 import com.linecorp.armeria.common.HttpResponse;
22 import com.linecorp.armeria.server.HttpService;
23 import com.linecorp.armeria.server.ServiceRequestContext;
24 import com.linecorp.armeria.server.ServiceRequestContextWrapper;
25 import com.linecorp.armeria.server.file.FileService;
26
27 public final class OrElseDefaultHttpFileService implements HttpService {
28
29 private final HttpService delegate;
30
31 public OrElseDefaultHttpFileService(FileService fileService, String defaultPath) {
32 requireNonNull(fileService, "fileService");
33 requireNonNull(defaultPath, "defaultPath");
34
35
36 delegate = fileService.orElse(
37 (ctx, req) -> fileService.serve(new DefaultHtmlServiceRequestContext(ctx, defaultPath), req));
38 }
39
40 @Override
41 public HttpResponse serve(ServiceRequestContext ctx, HttpRequest req) throws Exception {
42 return delegate.serve(ctx, req);
43 }
44
45
46 private static final class DefaultHtmlServiceRequestContext extends ServiceRequestContextWrapper {
47
48 private final String defaultPath;
49
50 private DefaultHtmlServiceRequestContext(ServiceRequestContext delegate, String defaultPath) {
51 super(delegate);
52 this.defaultPath = defaultPath;
53 }
54
55 @Override
56 public String decodedMappedPath() {
57 return defaultPath;
58 }
59 }
60 }