Cybersecurity-Projects/PROJECTS/intermediate/security-news-scraper/internal/tui/browser.go

36 lines
753 B
Go

// ©AngelaMos | 2026
// browser.go
package tui
import (
"fmt"
"net/url"
"os/exec"
"runtime"
"github.com/CarterPerez-dev/nadezhda/internal/setup"
)
func openURL(target string) error {
u, err := url.Parse(target)
if err != nil || (u.Scheme != "http" && u.Scheme != "https") {
return fmt.Errorf("refusing to open non-http url: %q", target)
}
name, args := openerCommand(target)
cmd := exec.Command(name, args...)
cmd.Env = setup.NonSecretEnviron()
return cmd.Start()
}
func openerCommand(target string) (string, []string) {
switch runtime.GOOS {
case "windows":
return "rundll32", []string{"url.dll,FileProtocolHandler", target}
case "darwin":
return "open", []string{target}
default:
return "xdg-open", []string{target}
}
}