improve chrome web store XML parsing

This commit is contained in:
Vladislav Yarmak
2023-05-30 21:43:36 +03:00
parent 8660c52f26
commit b93ba7718c
2 changed files with 13 additions and 3 deletions

View File

@@ -3,6 +3,7 @@ package main
import (
"context"
"encoding/xml"
"errors"
"fmt"
"io"
"net"
@@ -15,6 +16,10 @@ var (
defaultProdVersion = "113.0"
)
var (
ErrNoVerData = errors.New("no version data returned")
)
type StoreExtUpdateResponse struct {
XMLName xml.Name `xml:"gupdate"`
App *struct {
@@ -85,7 +90,7 @@ func GetExtVer(ctx context.Context,
}
reader := io.LimitReader(resp.Body, 64*1024)
var respData StoreExtUpdateResponse
var respData *StoreExtUpdateResponse
dec := xml.NewDecoder(reader)
err = dec.Decode(&respData)
@@ -93,5 +98,10 @@ func GetExtVer(ctx context.Context,
return "", fmt.Errorf("unmarshaling of chrome web store response failed: %w", err)
}
return respData.App.UpdateCheck.Version, nil
if respData != nil && respData.App != nil &&
respData.App.UpdateCheck != nil && respData.App.UpdateCheck.Version != "" {
return respData.App.UpdateCheck.Version, nil
}
return "", ErrNoVerData
}

View File

@@ -183,7 +183,7 @@ func run() int {
defer cl()
extVer, err := GetExtVer(ctx, nil, HolaExtStoreID, dialer)
if err != nil {
mainLogger.Critical("Can't detect latest API version. Try to specify -ext-ver parameter")
mainLogger.Critical("Can't detect latest API version. Try to specify -ext-ver parameter. Error: %v", err)
return 8
}
args.extVer = extVer