Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 32 additions & 15 deletions drivers/115/appver.go
Original file line number Diff line number Diff line change
@@ -1,43 +1,60 @@
package _115

import (
"errors"
driver115 "github.com/SheltonZhu/115driver/pkg/driver"
"github.com/alist-org/alist/v3/drivers/base"
"github.com/alist-org/alist/v3/pkg/utils"
log "github.com/sirupsen/logrus"
)

var (
md5Salt = "Qclm8MGWUv59TnrR0XPg"
appVer = "27.0.5.7"
appVer = "35.6.0.3"
)

func (d *Pan115) getAppVersion() ([]driver115.AppVersion, error) {
result := driver115.VersionResp{}
resp, err := base.RestyClient.R().Get(driver115.ApiGetVersion)

err = driver115.CheckErr(err, &result, resp)
func (d *Pan115) getAppVersion() (string, error) {
result := VersionResp{}
res, err := base.RestyClient.R().Get(driver115.ApiGetVersion)
if err != nil {
return nil, err
return "", err
}

return result.Data.GetAppVersions(), nil
err = utils.Json.Unmarshal(res.Body(), &result)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ensure that the JSON unmarshalling handles all possible fields and errors correctly. If the response structure changes, this could lead to runtime errors.

if err != nil {
return "", err
}
if len(result.Error) > 0 {
return "", errors.New(result.Error)
}
return result.Data.Win.Version, nil
}

func (d *Pan115) getAppVer() string {
// todo add some cache?
vers, err := d.getAppVersion()
ver, err := d.getAppVersion()
if err != nil {
log.Warnf("[115] get app version failed: %v", err)
return appVer
}
for _, ver := range vers {
if ver.AppName == "win" {
return ver.Version
}
if len(ver) > 0 {
return ver
}
return appVer
}

func (d *Pan115) initAppVer() {
appVer = d.getAppVer()
log.Infof("use app version: %v", appVer)
}

type VersionResp struct {
Error string `json:"error,omitempty"`
Data Versions `json:"data"`
}

type Versions struct {
Win Version `json:"win"`
}

type Version struct {
Version string `json:"version_code"`
}