Files
netris-nestri/packages/maitred/internal/resource/resource.go
Wanjohi de80f3e6ab feat(maitred): Update maitred - hookup to the API (#198)
## Description
We are attempting to hookup maitred to the API
Maitred duties will be:
- [ ] Hookup to the API
- [ ]  Wait for signal (from the API) to start Steam
- [ ] Stop signal to stop the gaming session, clean up Steam... and
maybe do the backup

## Summary by CodeRabbit

- **New Features**
- Introduced Docker-based deployment configurations for both the main
and relay applications.
- Added new API endpoints enabling real-time machine messaging and
enhanced IoT operations.
- Expanded database schema and actor types to support improved machine
tracking.

- **Improvements**
- Enhanced real-time communication and relay management with streamlined
room handling.
- Upgraded dependencies, logging, and error handling for greater
stability and performance.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
Co-authored-by: Kristian Ollikainen <14197772+DatCaptainHorse@users.noreply.github.com>
2025-04-07 23:23:53 +03:00

47 lines
1018 B
Go

package resource
import (
"encoding/json"
"fmt"
"os"
"reflect"
)
type Resource struct {
Api struct {
Url string `json:"url"`
}
Auth struct {
Url string `json:"url"`
}
AuthFingerprintKey struct {
Value string `json:"value"`
}
Realtime struct {
Endpoint string `json:"endpoint"`
Authorizer string `json:"authorizer"`
}
App struct {
Name string `json:"name"`
Stage string `json:"stage"`
}
}
func NewResource() (*Resource, error) {
resource := Resource{}
val := reflect.ValueOf(&resource).Elem()
for i := 0; i < val.NumField(); i++ {
field := val.Field(i)
typeField := val.Type().Field(i)
envVarName := fmt.Sprintf("SST_RESOURCE_%s", typeField.Name)
envValue, exists := os.LookupEnv(envVarName)
if !exists {
return nil, fmt.Errorf("missing environment variable %s", envVarName)
}
if err := json.Unmarshal([]byte(envValue), field.Addr().Interface()); err != nil {
return nil, fmt.Errorf("error unmarshalling %s: %w", envVarName, err)
}
}
return &resource, nil
}