rogueserver/db/s3.go

62 lines
1.2 KiB
Go
Raw Normal View History

package db
import (
"bytes"
"context"
"encoding/json"
"os"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/pagefaultgames/rogueserver/defs"
)
func (s *store) GetSystemSaveFromS3(uuid []byte) (defs.SystemSaveData, error) {
var system defs.SystemSaveData
username, err := Store.FetchUsernameFromUUID(uuid)
if err != nil {
return system, err
}
resp, err := s3client.GetObject(context.TODO(), &s3.GetObjectInput{
Bucket: aws.String(os.Getenv("S3_SYSTEM_BUCKET_NAME")),
Key: aws.String(username),
})
if err != nil {
return system, err
}
err = json.NewDecoder(resp.Body).Decode(&system)
if err != nil {
return system, err
}
return system, nil
}
func (s *store) StoreSystemSaveDataS3(uuid []byte, data defs.SystemSaveData) error {
username, err := s.FetchUsernameFromUUID(uuid)
if err != nil {
return err
}
buf := new(bytes.Buffer)
err = json.NewEncoder(buf).Encode(data)
if err != nil {
return err
}
_, err = s3client.PutObject(context.Background(), &s3.PutObjectInput{
Bucket: aws.String(os.Getenv("S3_SYSTEM_BUCKET_NAME")),
Key: aws.String(username),
Body: buf,
})
if err != nil {
return err
}
return nil
}