-
Notifications
You must be signed in to change notification settings - Fork 37
/
Copy pathload.go
32 lines (30 loc) · 883 Bytes
/
load.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
package asset
import (
"context"
"github.com/viant/afs/storage"
"github.com/viant/afs/url"
"github.com/viant/afs/walker"
"io"
"io/ioutil"
"os"
"path"
)
//Load loads location resources for supplied manager
func Load(manager storage.Manager, URL string) (map[string]*Resource, error) {
URL = url.Normalize(URL, manager.Scheme())
managerWalker, ok := manager.(storage.Walker)
if !ok {
managerWalker = walker.New(manager)
}
var result = make(map[string]*Resource)
err := managerWalker.Walk(context.Background(), URL, func(ctx context.Context, baseURL string, parent string, info os.FileInfo, reader io.Reader) (toContinue bool, err error) {
key := path.Join(parent, info.Name())
var data []byte
if !info.IsDir() {
data, err = ioutil.ReadAll(reader)
}
result[key] = New(key, info.Mode(), info.IsDir(), "", data)
return true, nil
})
return result, err
}