Browse Source

fix parsing index (minsdk, permissions, etc.)

related issue: #64
pull/70/head
Linus789 3 years ago
parent
commit
e514efc909
  1. 52
      fdroid/index.go
  2. 14
      show.go

52
fdroid/index.go

@ -49,7 +49,7 @@ type App struct {
Donate string `json:"donate"`
Bitcoin string `json:"bitcoin"`
Litecoin string `json:"litecoin"`
FlattrID string `json:"flattr"`
FlattrID string `json:"flattrID"`
SugVersName string `json:"suggestedVersionName"`
SugVersCode int `json:"suggestedVersionCode,string"`
@ -193,26 +193,46 @@ func (a *App) TextDesc(w io.Writer) {
// Apk is an Android package
type Apk struct {
VersName string `json:"versionName"`
VersCode int `json:"versionCode"`
Size int64 `json:"size"`
MinSdk int `json:"sdkver"`
MaxSdk int `json:"maxsdkver"`
ABIs []string `json:"nativecode"`
ApkName string `json:"apkname"`
SrcName string `json:"srcname"`
Sig HexVal `json:"sig"`
Signer HexVal `json:"signer"`
Added UnixDate `json:"added"`
Perms []string `json:"permissions"`
Feats []string `json:"features"`
Hash HexVal `json:"hash"`
HashType string `json:"hashType"`
VersName string `json:"versionName"`
VersCode int `json:"versionCode"`
Size int64 `json:"size"`
MinSdk int `json:"minSdkVersion"`
MaxSdk int `json:"maxSdkVersion"`
ABIs []string `json:"nativecode"`
ApkName string `json:"apkName"`
SrcName string `json:"srcname"`
Sig HexVal `json:"sig"`
Signer HexVal `json:"signer"`
Added UnixDate `json:"added"`
Perms []Permission `json:"uses-permission"`
Feats []string `json:"features"`
Hash HexVal `json:"hash"`
HashType string `json:"hashType"`
AppID string `json:"-"`
RepoURL string `json:"-"`
}
type Permission struct {
Name string
MaxSdk string
}
func (p *Permission) UnmarshalJSON(data []byte) error {
var v []interface{}
if err := json.Unmarshal(data, &v); err != nil {
fmt.Printf("Error while decoding %v\n", err)
return err
}
p.Name = string(v[0].(string))
if v[1] == nil {
p.MaxSdk = ""
} else {
p.MaxSdk = fmt.Sprint(v[1].(float64))
}
return nil
}
func (a *Apk) URL() string {
return fmt.Sprintf("%s/%s", a.RepoURL, a.ApkName)
}

14
show.go

@ -140,8 +140,18 @@ func printAppDetailed(app fdroid.App) {
if apk.ABIs != nil {
fmt.Printf(" ABIs : %s\n", strings.Join(apk.ABIs, ", "))
}
if apk.Perms != nil {
fmt.Printf(" Perms : %s\n", strings.Join(apk.Perms, ", "))
if apk.Perms != nil && len(apk.Perms) > 0 {
fmt.Printf(" Perms : ")
for i, value := range apk.Perms {
fmt.Print(value.Name)
if value.MaxSdk != "" {
fmt.Printf(" (MaxSdk %s)", value.MaxSdk)
}
if i != len(apk.Perms)-1 {
fmt.Print(", ")
}
}
fmt.Println()
}
}
}

Loading…
Cancel
Save