forked from alicebob/ssp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstatic.go
266 lines (233 loc) · 8.02 KB
/
static.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
// This file is automatically generated using github.com/mjibson/esc.
package main
import (
"bytes"
"compress/gzip"
"encoding/base64"
"io/ioutil"
"net/http"
"os"
"path"
"sync"
"time"
)
type _escLocalFS struct{}
var _escLocal _escLocalFS
type _escStaticFS struct{}
var _escStatic _escStaticFS
type _escDirectory struct {
fs http.FileSystem
name string
}
type _escFile struct {
compressed string
size int64
modtime int64
local string
isDir bool
once sync.Once
data []byte
name string
}
func (_escLocalFS) Open(name string) (http.File, error) {
f, present := _escData[path.Clean(name)]
if !present {
return nil, os.ErrNotExist
}
return os.Open(f.local)
}
func (_escStaticFS) prepare(name string) (*_escFile, error) {
f, present := _escData[path.Clean(name)]
if !present {
return nil, os.ErrNotExist
}
var err error
f.once.Do(func() {
f.name = path.Base(name)
if f.size == 0 {
return
}
var gr *gzip.Reader
b64 := base64.NewDecoder(base64.StdEncoding, bytes.NewBufferString(f.compressed))
gr, err = gzip.NewReader(b64)
if err != nil {
return
}
f.data, err = ioutil.ReadAll(gr)
})
if err != nil {
return nil, err
}
return f, nil
}
func (fs _escStaticFS) Open(name string) (http.File, error) {
f, err := fs.prepare(name)
if err != nil {
return nil, err
}
return f.File()
}
func (dir _escDirectory) Open(name string) (http.File, error) {
return dir.fs.Open(dir.name + name)
}
func (f *_escFile) File() (http.File, error) {
type httpFile struct {
*bytes.Reader
*_escFile
}
return &httpFile{
Reader: bytes.NewReader(f.data),
_escFile: f,
}, nil
}
func (f *_escFile) Close() error {
return nil
}
func (f *_escFile) Readdir(count int) ([]os.FileInfo, error) {
return nil, nil
}
func (f *_escFile) Stat() (os.FileInfo, error) {
return f, nil
}
func (f *_escFile) Name() string {
return f.name
}
func (f *_escFile) Size() int64 {
return f.size
}
func (f *_escFile) Mode() os.FileMode {
return 0
}
func (f *_escFile) ModTime() time.Time {
return time.Unix(f.modtime, 0)
}
func (f *_escFile) IsDir() bool {
return f.isDir
}
func (f *_escFile) Sys() interface{} {
return f
}
// FS returns a http.Filesystem for the embedded assets. If useLocal is true,
// the filesystem's contents are instead used.
func FS(useLocal bool) http.FileSystem {
if useLocal {
return _escLocal
}
return _escStatic
}
// Dir returns a http.Filesystem for the embedded assets on a given prefix dir.
// If useLocal is true, the filesystem's contents are instead used.
func Dir(useLocal bool, name string) http.FileSystem {
if useLocal {
return _escDirectory{fs: _escLocal, name: name}
}
return _escDirectory{fs: _escStatic, name: name}
}
// FSByte returns the named file from the embedded assets. If useLocal is
// true, the filesystem's contents are instead used.
func FSByte(useLocal bool, name string) ([]byte, error) {
if useLocal {
f, err := _escLocal.Open(name)
if err != nil {
return nil, err
}
b, err := ioutil.ReadAll(f)
_ = f.Close()
return b, err
}
f, err := _escStatic.prepare(name)
if err != nil {
return nil, err
}
return f.data, nil
}
// FSMustByte is the same as FSByte, but panics if name is not present.
func FSMustByte(useLocal bool, name string) []byte {
b, err := FSByte(useLocal, name)
if err != nil {
panic(err)
}
return b
}
// FSString is the string version of FSByte.
func FSString(useLocal bool, name string) (string, error) {
b, err := FSByte(useLocal, name)
return string(b), err
}
// FSMustString is the string version of FSMustByte.
func FSMustString(useLocal bool, name string) string {
return string(FSMustByte(useLocal, name))
}
var _escData = map[string]*_escFile{
"/html5vast.css": {
local: "static/html5vast.css",
size: 295,
modtime: 1497184022,
compressed: `
H4sIAAAAAAAA/1zOMW7DMAwF0FkFeorOKpygWZipR2Es2iaqigJFJ2mL3L2QFGcIBw3vf1B07n05nC+K
OZP+vb4457IUNpYEShGNz3R0rga3+tT2iLnmT208FYmr0bHxhYMtsBuGfO2wEM+Lwf4BJxy/ZpU1BT9K
FIW3oU1P7zS16TRJMl/4l2C335Y0m/Cb4w98KmPsbHQ1j5HnBCMlI71/KRpIvWLgtcBhW2KS4eNxV8YQ
OM2+6la5/QcAAP//SgrTmScBAAA=
`,
},
"/html5vast.js": {
local: "static/html5vast.js",
size: 15073,
modtime: 1497526731,
compressed: `
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
3WXNqtT6bwAAAP//9YX6W+E6AAA=
`,
},
"/": {
isDir: true,
local: "static",
},
}