ui-assets: Integrate UI assets.

This commit is contained in:
Harshavardhana
2016-02-04 16:00:52 -08:00
parent 53a983659e
commit a066184bed
7 changed files with 40 additions and 14 deletions

View File

@@ -41,6 +41,6 @@ use
...
http.Handle("/",
http.FileServer(
&assetfs.AssetFS{Asset: Asset, AssetDir: AssetDir, Prefix: "data"}))
&assetfs.AssetFS{Asset: Asset, AssetDir: AssetDir, AssetInfo: AssetInfo, Prefix: "data"}))
to serve files embedded from the `data` directory.

View File

@@ -13,7 +13,7 @@ import (
)
var (
fileTimestamp = time.Now()
defaultFileTimestamp = time.Now()
)
// FakeFile implements os.FileInfo interface for a given path and size
@@ -24,6 +24,8 @@ type FakeFile struct {
Dir bool
// Len is the length of the fake file, zero if it is a directory
Len int64
// Timestamp is the ModTime of this file
Timestamp time.Time
}
func (f *FakeFile) Name() string {
@@ -40,7 +42,7 @@ func (f *FakeFile) Mode() os.FileMode {
}
func (f *FakeFile) ModTime() time.Time {
return fileTimestamp
return f.Timestamp
}
func (f *FakeFile) Size() int64 {
@@ -62,11 +64,14 @@ type AssetFile struct {
FakeFile
}
func NewAssetFile(name string, content []byte) *AssetFile {
func NewAssetFile(name string, content []byte, timestamp time.Time) *AssetFile {
if timestamp.IsZero() {
timestamp = defaultFileTimestamp
}
return &AssetFile{
bytes.NewReader(content),
ioutil.NopCloser(nil),
FakeFile{name, false, int64(len(content))}}
FakeFile{name, false, int64(len(content)), timestamp}}
}
func (f *AssetFile) Readdir(count int) ([]os.FileInfo, error) {
@@ -92,13 +97,13 @@ func NewAssetDirectory(name string, children []string, fs *AssetFS) *AssetDirect
fileinfos := make([]os.FileInfo, 0, len(children))
for _, child := range children {
_, err := fs.AssetDir(filepath.Join(name, child))
fileinfos = append(fileinfos, &FakeFile{child, err == nil, 0})
fileinfos = append(fileinfos, &FakeFile{child, err == nil, 0, time.Time{}})
}
return &AssetDirectory{
AssetFile{
bytes.NewReader(nil),
ioutil.NopCloser(nil),
FakeFile{name, true, 0},
FakeFile{name, true, 0, time.Time{}},
},
0,
fileinfos}
@@ -127,6 +132,8 @@ type AssetFS struct {
Asset func(path string) ([]byte, error)
// AssetDir should return list of files in the path
AssetDir func(path string) ([]string, error)
// AssetInfo should return the info of file in path if exists
AssetInfo func(path string) (os.FileInfo, error)
// Prefix would be prepended to http requests
Prefix string
}
@@ -137,7 +144,11 @@ func (fs *AssetFS) Open(name string) (http.File, error) {
name = name[1:]
}
if b, err := fs.Asset(name); err == nil {
return NewAssetFile(name, b), nil
timestamp := defaultFileTimestamp
if info, err := fs.AssetInfo(name); err == nil {
timestamp = info.ModTime()
}
return NewAssetFile(name, b, timestamp), nil
}
if children, err := fs.AssetDir(name); err == nil {
return NewAssetDirectory(name, children, fs), nil

4
vendor/vendor.json vendored
View File

@@ -19,8 +19,8 @@
},
{
"path": "github.com/elazarl/go-bindata-assetfs",
"revision": "d5cac425555ca5cf00694df246e04f05e6a55150",
"revisionTime": "2015-08-13T07:46:22+03:00"
"revision": "57eb5e1fc594ad4b0b1dbea7b286d299e0cb43c2",
"revisionTime": "2015-12-24T06:54:52+02:00"
},
{
"path": "github.com/fatih/color",