diff --git a/addon.go b/addon.go index 32fd701..e492f9a 100644 --- a/addon.go +++ b/addon.go @@ -7,7 +7,6 @@ import ( "io" "log" "net/http" - "net/url" "os" "path/filepath" "regexp" @@ -15,31 +14,21 @@ import ( ) type Addon struct { - Name string `json:"name"` - URL *url.URL `json:"url"` + Name string `json:"name"` + URL string `json:"url"` } + var versionRegex = regexp.MustCompile(`(\d+\.\d+\.\d+)`) -func NewAddon(name, aurl string) *Addon { - a := &Addon{Name: name} - var err error - a.URL, err = url.Parse(aurl) - if err != nil { - Error.Printf("invalid url: %s", aurl) - return nil - } - return a +func (a *Addon) GetRemoteTocURL() string { + return fmt.Sprintf("%s/raw/branch/master/%s.toc", a.URL, a.Name) } - -func (a *Addon) GetRemoteTocURL() *url.URL { - return a.URL.JoinPath("raw", "branch", "master", a.Name+".toc") -} -func (a *Addon) GetRemoteReleaseURL() *url.URL { - return a.URL.JoinPath("media", "branch", "master", a.Name+".zip") +func (a *Addon) GetRemoteReleaseURL() string { + return fmt.Sprintf("%s/media/branch/master/%s.zip", a.URL, a.Name) } func (a *Addon) GetRemoteRelease() (body []byte, err error) { url := a.GetRemoteReleaseURL() - response, err := http.Get(url.String()) + response, err := http.Get(url) if err != nil { return nil, fmt.Errorf("error getting remote release: %w", err) } @@ -139,8 +128,8 @@ func (a *Addon) GetLocalTocPath() string { } func (a *Addon) GetRemoteVersion() (version string, err error) { url := a.GetRemoteTocURL() - log.Printf("Fetching remote version from %s", url.String()) - response, err := http.Get(url.String()) + log.Printf("Fetching remote version from %s", url) + response, err := http.Get(url) if err != nil { return "", fmt.Errorf("error getting remote version: %w", err) } diff --git a/main.go b/main.go index 04084be..608d241 100644 --- a/main.go +++ b/main.go @@ -30,9 +30,15 @@ func init() { //go:embed all:frontend/dist var assets embed.FS +var settingsFilePath string var gamePath string var addonService *AddonService +type Settings struct { + GamePath string `json:"gamePath"` + Addons map[string]*Addon `json:"addons"` +} + func main() { addonService = NewAddonService() gamePath = filepath.Join("C:\\", "Games", "WoWRuski")