Files
Steamworks-Collection-Downl…/manifest/manifest.go
T
Neo ec93fc3379 initial commit - working code
new file:   .gitignore
	new file:   .idea/.gitignore
	new file:   .idea/Steamworks-Collection-Downloader.iml
	new file:   .idea/modules.xml
	new file:   .idea/vcs.xml
	new file:   downloader/downloadable.go
	new file:   downloader/downloader.go
	new file:   go.mod
	new file:   go.sum
	new file:   main.go
	new file:   manifest/entry.go
	new file:   manifest/manifest.go
	new file:   webapi/publishedFileDetailsResponse.go
2022-10-13 17:37:52 -07:00

78 lines
1.0 KiB
Go

package manifest
import (
"encoding/json"
"io/ioutil"
"os"
)
type Manifest struct {
filename string
prefix string
Entries map[string]*Entry
*os.File
}
func (m *Manifest) Open(filename string, prefix string) (err error) {
filename = prefix + filename
m.File, err = os.OpenFile(filename, os.O_CREATE|os.O_RDWR, 0664)
if err != nil {
return err
}
buffer, err := ioutil.ReadAll(m)
if err != nil {
return err
}
err = m.Parse(buffer)
if err != nil {
return err
}
return nil
}
func (m *Manifest) Parse(manifest []byte) error {
m.Entries = make(map[string]*Entry)
if len(manifest) == 0 {
return nil
}
err := json.Unmarshal(manifest, &m.Entries)
if err != nil {
return err
}
return nil
}
func (m *Manifest) AddEntry(entry *Entry) error {
m.Entries[entry.ID] = entry
_, err := m.Seek(0, 0)
if err != nil {
return err
}
err = m.Truncate(0)
if err != nil {
return err
}
b, err := json.Marshal(m.Entries)
if err != nil {
return err
}
_, err = m.Write(b)
if err != nil {
return err
}
return nil
}