@ -1,17 +1,7 @@
package browser
import (
"os"
"path/filepath"
"sort"
"strings"
"hack-browser-data/internal/browingdata"
"hack-browser-data/internal/browser/chromium"
"hack-browser-data/internal/browser/firefox"
"hack-browser-data/internal/log"
"hack-browser-data/internal/utils/fileutil"
"hack-browser-data/internal/utils/typeutil"
)
type Browser interface {
@ -20,114 +10,3 @@ type Browser interface {
// BrowsingData returns all browsing data in the browser.
BrowsingData ( ) ( * browingdata . Data , error )
}
func PickBrowser ( name , profile string ) ( [ ] Browser , error ) {
var browsers [ ] Browser
clist := pickChromium ( name , profile )
for _ , b := range clist {
if b != nil {
browsers = append ( browsers , b )
}
}
flist := pickFirefox ( name , profile )
for _ , b := range flist {
if b != nil {
browsers = append ( browsers , b )
}
}
return browsers , nil
}
func pickChromium ( name , profile string ) [ ] Browser {
var browsers [ ] Browser
name = strings . ToLower ( name )
if name == "all" {
for _ , v := range chromiumList {
if ! fileutil . FolderExists ( filepath . Clean ( v . profilePath ) ) {
log . Noticef ( "find browser %s failed, profile folder does not exist" , v . name )
continue
}
if multiChromium , err := chromium . New ( v . name , v . storage , v . profilePath , v . items ) ; err == nil {
log . Noticef ( "find browser %s success" , v . name )
for _ , b := range multiChromium {
log . Noticef ( "find browser %s success" , b . Name ( ) )
browsers = append ( browsers , b )
}
} else {
log . Errorf ( "new chromium error: %s" , err . Error ( ) )
}
}
}
if c , ok := chromiumList [ name ] ; ok {
if profile == "" {
profile = c . profilePath
}
if ! fileutil . FolderExists ( filepath . Clean ( profile ) ) {
log . Fatalf ( "find browser %s failed, profile folder does not exist" , c . name )
}
chromiumList , err := chromium . New ( c . name , c . storage , profile , c . items )
if err != nil {
log . Fatalf ( "new chromium error: %s" , err )
}
for _ , b := range chromiumList {
log . Noticef ( "find browser %s success" , b . Name ( ) )
browsers = append ( browsers , b )
}
}
return browsers
}
func pickFirefox ( name , profile string ) [ ] Browser {
var browsers [ ] Browser
name = strings . ToLower ( name )
if name == "all" || name == "firefox" {
for _ , v := range firefoxList {
if profile == "" {
profile = v . profilePath
} else {
profile = fileutil . ParentDir ( profile )
}
if ! fileutil . FolderExists ( filepath . Clean ( profile ) ) {
log . Noticef ( "find browser firefox %s failed, profile folder does not exist" , v . name )
continue
}
if multiFirefox , err := firefox . New ( v . name , v . storage , profile , v . items ) ; err == nil {
for _ , b := range multiFirefox {
log . Noticef ( "find browser firefox %s success" , b . Name ( ) )
browsers = append ( browsers , b )
}
} else {
log . Error ( err )
}
}
return browsers
}
return nil
}
func ListBrowser ( ) [ ] string {
var l [ ] string
l = append ( l , typeutil . Keys ( chromiumList ) ... )
l = append ( l , typeutil . Keys ( firefoxList ) ... )
sort . Strings ( l )
return l
}
// home dir path for all platforms
var homeDir , _ = os . UserHomeDir ( )
const (
chromeName = "Chrome"
chromeBetaName = "Chrome Beta"
chromiumName = "Chromium"
edgeName = "Microsoft Edge"
braveName = "Brave"
operaName = "Opera"
operaGXName = "OperaGX"
vivaldiName = "Vivaldi"
coccocName = "CocCoc"
yandexName = "Yandex"
firefoxName = "Firefox"
speed360Name = "360speed"
qqBrowserName = "QQ"
)