diff --git a/kernel/api/search.go b/kernel/api/search.go index 0b4feab8e..0c29d130e 100644 --- a/kernel/api/search.go +++ b/kernel/api/search.go @@ -101,7 +101,15 @@ func searchAsset(c *gin.Context) { } k := arg["k"].(string) - ret.Data = model.SearchAssetsByName(k) + + var exts []string + if extsArg := arg["exts"]; nil != extsArg { + for _, ext := range extsArg.([]interface{}) { + exts = append(exts, ext.(string)) + } + } + + ret.Data = model.SearchAssetsByName(k, exts) return } diff --git a/kernel/model/assets.go b/kernel/model/assets.go index 709171a53..72f29aebd 100644 --- a/kernel/model/assets.go +++ b/kernel/model/assets.go @@ -220,11 +220,26 @@ func NetImg2LocalAssets(rootID, originalURL string) (err error) { return } -func SearchAssetsByName(keyword string) (ret []*cache.Asset) { +func SearchAssetsByName(keyword string, exts []string) (ret []*cache.Asset) { ret = []*cache.Asset{} count := 0 + filterByExt := 0 < len(exts) for _, asset := range cache.GetAssets() { + if filterByExt { + ext := filepath.Ext(asset.HName) + includeExt := false + for _, e := range exts { + if strings.ToLower(ext) == strings.ToLower(e) { + includeExt = true + break + } + } + if !includeExt { + continue + } + } + if !strings.Contains(strings.ToLower(asset.HName), strings.ToLower(keyword)) { continue }