Add depot, attendant, jetfire, optimus, ota services with kustomize overlays
This commit is contained in:
77
services/ota_update_go/handlers/car_software_information.go
Normal file
77
services/ota_update_go/handlers/car_software_information.go
Normal file
@@ -0,0 +1,77 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"otaupdate/services"
|
||||
|
||||
"github.com/fiskerinc/cloud-services/pkg/common"
|
||||
"github.com/fiskerinc/cloud-services/pkg/loggerdataresp"
|
||||
"github.com/fiskerinc/cloud-services/pkg/utils"
|
||||
)
|
||||
|
||||
// HandleCarSoftwareInformation godoc
|
||||
// @Summary Get overall software version from a car and its ecu version information
|
||||
// @Description Get overall software version from a car and its ecu version information
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param Authorization header string false "Bearer <ID token>"
|
||||
// @Param Api-Key header string false "<API token>"
|
||||
// @Param vin query string true "VIN"
|
||||
// @Success 200 {object} CarSoftwareInformationResponse
|
||||
// @Failure 400 {object} common.JSONError "Bad request"
|
||||
// @Failure 401 {object} common.JSONError "Unauthorized"
|
||||
// @Failure 503 {object} common.JSONError "Service unavailable"
|
||||
// @Router /car/software_information [get]
|
||||
func HandleCarSoftwareInformation(w http.ResponseWriter, r *http.Request) {
|
||||
qs := r.URL.Query()
|
||||
vin := qs.Get("vin")
|
||||
information, err := carSoftwareInformation(vin)
|
||||
if loggerdataresp.BadDataError(err) {
|
||||
return
|
||||
}
|
||||
utils.RespJSON(w, http.StatusOK, information)
|
||||
}
|
||||
|
||||
func carSoftwareInformation(vin string) (info CarSoftwareInformationResponse, err error) {
|
||||
info.VIN = vin
|
||||
var ecus []common.CarECU
|
||||
ecus, err = services.GetDB().GetCars().GetCarECUs(common.CarECUFilter{VIN: vin, Unique: true}, nil)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
info.ECUVersionInformation = convertCommonCarECUToECUVersionInformationArray(ecus)
|
||||
var carVersion common.CarPKCOSVersion
|
||||
carVersion, err = services.GetDB().GetCars().GetSoftwareVersion(vin)
|
||||
info.OSVersion = carVersion.OSVersion
|
||||
info.SUMsVersion = carVersion.SumsVersion
|
||||
return
|
||||
}
|
||||
|
||||
type CarSoftwareInformationResponse struct {
|
||||
VIN string `json:"vin"`
|
||||
SUMsVersion string `json:"sum_version"`
|
||||
OSVersion string `json:"os_version"`
|
||||
ECUVersionInformation []ECUVersionInformation `json:"ecu_version_information"`
|
||||
}
|
||||
|
||||
type ECUVersionInformation struct {
|
||||
ECU string `json:"ecu"`
|
||||
SoftwareVersion string `json:"software_version"`
|
||||
HardwareVersion string `json:"hardware_version"`
|
||||
}
|
||||
|
||||
func convertCommonCarECUToECUVersionInformationArray(input []common.CarECU) (output []ECUVersionInformation) {
|
||||
output = make([]ECUVersionInformation, len(input))
|
||||
for index, ecuInfo := range input {
|
||||
output[index] = convertCommonCarECUToECUVersionInformation(ecuInfo)
|
||||
}
|
||||
// Probably want to sort the ECU's alphabetically
|
||||
return output
|
||||
}
|
||||
|
||||
func convertCommonCarECUToECUVersionInformation(input common.CarECU) (output ECUVersionInformation) {
|
||||
output.ECU = input.ECU
|
||||
output.SoftwareVersion = input.Version
|
||||
output.HardwareVersion = input.HWVersion
|
||||
return output
|
||||
}
|
||||
Reference in New Issue
Block a user