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
This commit is contained in:
13 files changed
+833
No files matched your search
@@ -0,0 +1,19 @@
|
||||
package manifest
|
||||
|
||||
type Entry struct {
|
||||
ID string
|
||||
TimeCreated string
|
||||
TimeUpdated string
|
||||
HContentFile string
|
||||
HContentFileSize string
|
||||
HContentPreview string
|
||||
HContentPreviewSize string
|
||||
}
|
||||
|
||||
func (w Entry) FileNamePrefixed(prefix string) string {
|
||||
return prefix + w.ID + ".vpk"
|
||||
}
|
||||
|
||||
func (w Entry) PreviewFileNamePrefixed(prefix string) string {
|
||||
return prefix + w.ID + ".jpg"
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
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
|
||||
}
|
||||
Reference in new issue
Block a user