You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.0 KiB
52 lines
1.0 KiB
3 years ago
|
package extension
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
|
||
|
"github.com/tidwall/gjson"
|
||
|
|
||
|
"hack-browser-data/internal/item"
|
||
|
"hack-browser-data/internal/log"
|
||
|
"hack-browser-data/internal/utils/fileutil"
|
||
|
)
|
||
|
|
||
|
type ChromiumExtension []*extension
|
||
|
|
||
|
type extension struct {
|
||
|
Name string
|
||
|
Description string
|
||
|
Version string
|
||
|
HomepageURL string
|
||
|
}
|
||
|
|
||
|
const (
|
||
|
manifest = "manifest.json"
|
||
|
)
|
||
|
|
||
|
func (c *ChromiumExtension) Parse(masterKey []byte) error {
|
||
|
files, err := fileutil.FilesInFolder(item.TempChromiumExtension, manifest)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
defer os.RemoveAll(item.TempChromiumExtension)
|
||
|
for _, f := range files {
|
||
|
file, err := fileutil.ReadFile(f)
|
||
|
if err != nil {
|
||
|
log.Error("Failed to read file: %s", err)
|
||
|
continue
|
||
|
}
|
||
|
b := gjson.Parse(file)
|
||
|
*c = append(*c, &extension{
|
||
|
Name: b.Get("name").String(),
|
||
|
Description: b.Get("description").String(),
|
||
|
Version: b.Get("version").String(),
|
||
|
HomepageURL: b.Get("homepage_url").String(),
|
||
|
})
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (c *ChromiumExtension) Name() string {
|
||
|
return "extension"
|
||
|
}
|