• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

heathcliff26 / simple-fileserver / 12596500244

03 Jan 2025 10:43AM UTC coverage: 76.404% (+1.3%) from 75.148%
12596500244

push

github

heathcliff26
Move from log to slog

Signed-off-by: Heathcliff <heathcliff@heathcliff.eu>

15 of 23 new or added lines in 3 files covered. (65.22%)

1 existing line in 1 file now uncovered.

136 of 178 relevant lines covered (76.4%)

3.53 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

57.5
/pkg/fileserver/server.go
1
package fileserver
2

3
import (
4
        "errors"
5
        "fmt"
6
        "log/slog"
7
        "net/http"
8

9
        "github.com/heathcliff26/simple-fileserver/pkg/filesystem"
10
)
11

12
type SSLConfig struct {
13
        Enabled          bool
14
        Certificate, Key string
15
}
16

17
type Fileserver struct {
18
        SSL    SSLConfig
19
        server http.Handler
20
}
21

22
func NewFileserver(webroot string, index bool) *Fileserver {
2✔
23
        fs := filesystem.CreateFilesystem(webroot, index)
2✔
24
        server := http.FileServer(fs)
2✔
25
        return &Fileserver{
2✔
26
                server: server,
2✔
27
        }
2✔
28
}
2✔
29

30
type StatusResponseWriter struct {
31
        http.ResponseWriter
32
        Status int
33
}
34

35
func (rw *StatusResponseWriter) WriteHeader(statusCode int) {
2✔
36
        rw.Status = statusCode
2✔
37
        rw.ResponseWriter.WriteHeader(statusCode)
2✔
38
}
2✔
39

40
func (s *Fileserver) loggingWrapper(res http.ResponseWriter, req *http.Request) {
2✔
41
        srw := &StatusResponseWriter{ResponseWriter: res}
2✔
42
        s.server.ServeHTTP(srw, req)
2✔
43
        slog.Debug(fmt.Sprintf("Received Request: source=\"%s\", status=%d, path=\"%s\"\n", ReadUserIP(req), srw.Status, req.RequestURI))
2✔
44
}
2✔
45

46
func (s *Fileserver) Handle(path string) {
×
47
        http.HandleFunc("/", s.loggingWrapper)
×
48
}
×
49

50
func (s *Fileserver) UseSSL(cert, key string) {
1✔
51
        s.SSL = SSLConfig{
1✔
52
                Enabled:     true,
1✔
53
                Certificate: cert,
1✔
54
                Key:         key,
1✔
55
        }
1✔
56
}
1✔
57

58
func (s *Fileserver) ListenAndServe(addr string) error {
×
NEW
59
        slog.Info("Starting server", slog.String("addr", addr))
×
NEW
60

×
61
        var err error
×
62
        if s.SSL.Enabled {
×
63
                err = http.ListenAndServeTLS(addr, s.SSL.Certificate, s.SSL.Key, nil)
×
64

×
65
        } else {
×
66
                err = http.ListenAndServe(addr, nil)
×
67
        }
×
68

69
        // This just means the server was closed after running
70
        if errors.Is(err, http.ErrServerClosed) {
×
71
                return nil
×
72
        }
×
73
        return err
×
74
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc