Add depot, attendant, jetfire, optimus, ota services with kustomize overlays
This commit is contained in:
99
services/depot/handlers/hmi_init.go
Normal file
99
services/depot/handlers/hmi_init.go
Normal file
@@ -0,0 +1,99 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/fiskerinc/cloud-services/services/depot/services"
|
||||
|
||||
"github.com/fiskerinc/cloud-services/pkg/common"
|
||||
"github.com/fiskerinc/cloud-services/pkg/logger"
|
||||
"github.com/fiskerinc/cloud-services/pkg/redis"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func HMIInit(db *services.DB, id string, data []byte) error {
|
||||
fmt.Printf("HMIInit()")
|
||||
client := services.RedisClientPool().GetFromPool()
|
||||
defer client.Close()
|
||||
|
||||
var sessionPayload common.HMISessionData
|
||||
err := json.Unmarshal(data, &sessionPayload)
|
||||
if err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
|
||||
logger.Info().Msgf("Initialize HMI session in Redis for %s with ID %s", id, sessionPayload.SessionID)
|
||||
err = addHMISession(client, id)
|
||||
if err != nil {
|
||||
logger.Warn().Str("id", id).Err(err).Send()
|
||||
}
|
||||
|
||||
err = addHMISessionID(client, id, sessionPayload.SessionID)
|
||||
if err != nil {
|
||||
logger.Warn().Str("id", id).Err(err).Send()
|
||||
}
|
||||
|
||||
if sessionPayload.Salt != "" {
|
||||
err = addHMISaltID(client, id, sessionPayload.Salt)
|
||||
if err != nil {
|
||||
logger.Warn().Str("id", id).Err(err).Send()
|
||||
}
|
||||
}
|
||||
|
||||
err = sendSettingsHMI(client, db, id)
|
||||
if err != nil {
|
||||
logger.Warn().Str("id", id).Err(err).Send()
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func addHMISession(client redis.Client, id string) error {
|
||||
_, err := client.Execute("SADD", redis.HMISessionsKey(), id)
|
||||
return err
|
||||
}
|
||||
|
||||
func addHMISessionID(client redis.Client, id string, sessionID string) error {
|
||||
_, err := client.Execute("SET", redis.HMISessionKey(id), sessionID)
|
||||
return err
|
||||
}
|
||||
|
||||
func addHMISaltID(client redis.Client, id string, salt string) error {
|
||||
_, err := client.Execute("SET", redis.HMISaltKey(id), salt)
|
||||
return err
|
||||
}
|
||||
|
||||
func sendSettingsHMI(client redis.Client, db *services.DB, vin string) error {
|
||||
|
||||
settings, err := getSettings(db, vin)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(settings) == 0 {
|
||||
logger.Info().Msgf("no settings to send for car %s", vin)
|
||||
return nil
|
||||
}
|
||||
|
||||
return client.SafePublishMessage(common.HMI.Key(vin),
|
||||
common.Message{
|
||||
Handler: "car_settings",
|
||||
Data: settings,
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
func clearSettings(settings []common.CarSetting) {
|
||||
cTime := time.Now()
|
||||
for i, s := range settings {
|
||||
s.CreatedAt = nil
|
||||
if s.UpdatedAt == nil {
|
||||
s.UpdatedAt = &cTime
|
||||
}
|
||||
settings[i] = s
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user