-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.go
More file actions
61 lines (55 loc) · 1.25 KB
/
utils.go
File metadata and controls
61 lines (55 loc) · 1.25 KB
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
package gohttp
import (
"net/http"
"os"
"path/filepath"
"strings"
)
// If s starts with one of suffixs; return ture
func hasSuffixs(s string, suffixs ...string) bool {
for _, suffix := range suffixs {
if ok := strings.HasSuffix(s, suffix); ok {
return true
}
}
return false
}
func hasPrefixs(s string, prefixs ...string) bool {
for _, prefix := range prefixs {
if ok := strings.HasPrefix(s, prefix); ok {
return true
}
}
return false
}
func toHTTPError(err error) (string, int) {
if os.IsNotExist(err) {
return http.StatusText(http.StatusNotFound), http.StatusNotFound
}
if os.IsPermission(err) {
return http.StatusText(http.StatusForbidden), http.StatusForbidden
}
// Default:
return http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError
}
// WalkDir walk dir path
func WalkDir(path string, matchs ...func(path string) bool) ([]string, error) {
match := func(string) bool { return true }
if len(matchs) > 0 && matchs[0] != nil {
match = matchs[0]
}
var files []string
err := filepath.Walk(path, func(path string, f os.FileInfo, err error) error {
if f == nil {
return err
}
if f.IsDir() {
return nil
}
if match(path) {
files = append(files, path)
}
return nil
})
return files, err
}