Reimplement fs.FileInfo interface (#13315)
Co-authored-by: R.B. Boyer <4903+rboyer@users.noreply.github.com>
This commit is contained in:
parent
b0e5573f30
commit
44a318ef73
|
@ -1,20 +1,31 @@
|
|||
package uiserver
|
||||
|
||||
import (
|
||||
"io"
|
||||
"bytes"
|
||||
"io/fs"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
// bufferedFile implements fs.File and allows us to modify a file from disk by
|
||||
// writing out the new version into a buffer and then serving file reads from
|
||||
// that.
|
||||
type bufferedFile struct {
|
||||
buf io.Reader
|
||||
buf *bytes.Buffer
|
||||
info fs.FileInfo
|
||||
}
|
||||
|
||||
var _ fs.FileInfo = (*bufferedFile)(nil)
|
||||
|
||||
func newBufferedFile(buf *bytes.Buffer, info fs.FileInfo) *bufferedFile {
|
||||
return &bufferedFile{
|
||||
buf: buf,
|
||||
info: info,
|
||||
}
|
||||
}
|
||||
|
||||
func (b *bufferedFile) Stat() (fs.FileInfo, error) {
|
||||
return b.info, nil
|
||||
return b, nil
|
||||
}
|
||||
|
||||
func (b *bufferedFile) Read(bytes []byte) (int, error) {
|
||||
|
@ -25,9 +36,26 @@ func (b *bufferedFile) Close() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func newBufferedFile(buf io.Reader, info fs.FileInfo) *bufferedFile {
|
||||
return &bufferedFile{
|
||||
buf: buf,
|
||||
info: info,
|
||||
}
|
||||
func (b *bufferedFile) Name() string {
|
||||
return b.info.Name()
|
||||
}
|
||||
|
||||
func (b *bufferedFile) Size() int64 {
|
||||
return int64(b.buf.Len())
|
||||
}
|
||||
|
||||
func (b *bufferedFile) Mode() os.FileMode {
|
||||
return b.info.Mode()
|
||||
}
|
||||
|
||||
func (b *bufferedFile) ModTime() time.Time {
|
||||
return b.info.ModTime()
|
||||
}
|
||||
|
||||
func (b *bufferedFile) IsDir() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (b *bufferedFile) Sys() any {
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue