@@ -4,27 +4,17 @@ import (
4
4
"fmt"
5
5
"io/fs"
6
6
"net/http"
7
+ "path/filepath"
8
+ "strings"
7
9
8
10
"github.com/go-chi/chi/v5"
9
11
)
10
12
11
- func serveFile (router chi.Router , fileSystem fs.FS , fileName string ) {
12
-
13
- handler := func (w http.ResponseWriter , r * http.Request ) {
14
- fmt .Println ("Requesting file: " + fileName )
15
- bytes , err := fs .ReadFile (fileSystem , fileName )
16
-
17
- if err != nil {
18
- http .Error (w , http .StatusText (404 ), 404 )
19
- }
20
- _ , err = w .Write (bytes )
21
-
22
- if err != nil {
23
- http .Error (w , http .StatusText (404 ), 404 )
24
- }
25
- }
26
-
27
- router .Get ("/" + fileName , handler )
13
+ // Handler returns an HTTP handler for serving a next-based static site
14
+ func Handler (fileSystem fs.FS ) (http.Handler , error ) {
15
+ rtr := chi .NewRouter ()
16
+ buildRouter (rtr , fileSystem , "" )
17
+ return rtr , nil
28
18
}
29
19
30
20
func buildRouter (rtr chi.Router , fileSystem fs.FS , name string ) {
@@ -54,9 +44,35 @@ func buildRouter(rtr chi.Router, fileSystem fs.FS, name string) {
54
44
}
55
45
}
56
46
57
- // Handler returns an HTTP handler for serving a next-based static site
58
- func Handler (fileSystem fs.FS ) (http.Handler , error ) {
59
- rtr := chi .NewRouter ()
60
- buildRouter (rtr , fileSystem , "" )
61
- return rtr , nil
47
+ func serveFile (router chi.Router , fileSystem fs.FS , fileName string ) {
48
+
49
+ // We only handle .html files for now
50
+ ext := filepath .Ext (fileName )
51
+ if ext != ".html" {
52
+ return
53
+ }
54
+
55
+ fmt .Println ("Requesting file: " + fileName )
56
+ bytes , err := fs .ReadFile (fileSystem , fileName )
57
+
58
+ handler := func (w http.ResponseWriter , r * http.Request ) {
59
+
60
+ if err != nil {
61
+ http .Error (w , http .StatusText (404 ), 404 )
62
+ }
63
+ _ , err = w .Write (bytes )
64
+
65
+ if err != nil {
66
+ http .Error (w , http .StatusText (404 ), 404 )
67
+ }
68
+ }
69
+
70
+ fileNameWithoutExtension := removeFileExtension (fileName )
71
+
72
+ router .Get ("/" + fileName , handler )
73
+ router .Get ("/" + fileNameWithoutExtension , handler )
74
+ }
75
+
76
+ func removeFileExtension (fileName string ) string {
77
+ return strings .TrimSuffix (fileName , filepath .Ext (fileName ))
62
78
}
0 commit comments