Files
downloadhub/data/data.go
2024-11-01 22:41:06 +01:00

62 lines
1.1 KiB
Go

package data
import (
"encoding/json"
"os"
"github.com/google/uuid"
)
type (
Service struct {
Softwares []Software
}
Software struct {
UUID string
Name string `json:"name"`
Description string `json:"description"`
Version string `json:"version"`
IconURL string `json:"icon_url"`
ScreenshotURLs []string `json:"screenshot_urls"`
DownloadLinks []DownloadLink `json:"download_links"`
}
DownloadLink struct {
OS string `json:"os"`
Arch string `json:"arch"`
URL string `json:"url"`
}
document struct {
Softwares []Software `json:"softwares"`
}
)
func Load(path string) Service {
f, err := os.OpenFile(path, os.O_RDONLY, 0744)
if err != nil {
panic("failed to open data file: " + err.Error())
}
defer f.Close()
var s document
d := json.NewDecoder(f)
err = d.Decode(&s)
if err != nil {
panic("failed to parse data file: " + err.Error())
}
s = generateUUID(s)
return Service{
Softwares: s.Softwares,
}
}
func generateUUID(d document) document {
for i, s := range d.Softwares {
s.UUID = uuid.New().String()
d.Softwares[i] = s
}
return d
}