36 lines
756 B
Go
36 lines
756 B
Go
|
package static_test
|
||
|
|
||
|
import (
|
||
|
"embed"
|
||
|
"fmt"
|
||
|
"io"
|
||
|
"net/http"
|
||
|
"net/http/httptest"
|
||
|
|
||
|
"git.bivouac.wiki/use/static"
|
||
|
)
|
||
|
|
||
|
//go:embed example_static
|
||
|
var static_files embed.FS
|
||
|
|
||
|
func ExampleStatic() {
|
||
|
s := static.NewStatic("example_static/", static_files)
|
||
|
mux := http.NewServeMux()
|
||
|
// for files outside a static directory:
|
||
|
mux.HandleFunc("/robots.txt", s.WrapStatic("/robots.txt", "robots.txt"))
|
||
|
// for an entire subdirectory:
|
||
|
mux.HandleFunc("/static/{filename}", s.StaticRoute)
|
||
|
w := httptest.NewRecorder()
|
||
|
ts := httptest.NewServer(mux)
|
||
|
ts.URL = "robots.txt"
|
||
|
ts.Start()
|
||
|
res := w.Result()
|
||
|
defer res.Body.Close()
|
||
|
data, err := io.ReadAll(res.Body)
|
||
|
if err != nil {
|
||
|
fmt.Errorf("expected error to be nil got %v", err)
|
||
|
}
|
||
|
fmt.Println(string(data))
|
||
|
|
||
|
}
|