Initial cloud-services repo - gateway service + pkg modules

This commit is contained in:
Chris Rai
2026-01-30 23:14:52 -05:00
commit fbb820d7b3
1037 changed files with 171318 additions and 0 deletions

108
pkg/common/flashpack.go Normal file
View File

@@ -0,0 +1,108 @@
package common
import (
"encoding/xml"
"time"
)
type FlashpackDataRequest struct {
XMLName xml.Name `xml:"SerializationData"`
Header FlashPackHeaderArea `xml:"HeaderArea" validate:"required"`
VehicleData VehicleData `xml:"DataArea>VehicleData" validate:"required"`
SerializationDataIndices SerializationDataIndices `xml:"DataArea>SerializationDataIndices" validate:"required"`
}
type FlashPackHeaderArea struct {
CreationDateTime CreationDateTimeWithSeconds `xml:"CreationDateTime" json:"creation_date_time"`
MessageIdentifier string `xml:"MessageIdentifier" json:"message_identifier"`
InterfaceID int `xml:"InterfaceId" json:"interface_id"`
SourceSystem string `xml:"Sender>SourceSystem" json:"source_system"`
TargetSystem string `xml:"Sender>TargetSystem" json:"target_system"`
}
type CreationDateTimeWithSeconds struct {
time.Time
}
func (t *CreationDateTimeWithSeconds) UnmarshalText(data []byte) error {
// Fractional seconds are handled implicitly by Parse.
var err error
t.Time, err = time.Parse("2006-01-02T15:04:05", string(data))
return err
}
func (t CreationDateTimeWithSeconds) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
s := t.Format("2006-01-02T15:04:05")
return e.EncodeElement(s, start)
}
type VehicleData struct {
VIN string `xml:"VIN"`
FlashPackNumber string `xml:"FlashPackNumber"`
PDXData string `xml:"PDXData"`
}
type SerializationDataIndices struct {
SerializationDataIndices []SerializationDataIndex `xml:"SerializationDataIndex"`
}
type SerializationDataIndex struct {
IndexNr string `xml:"IndexNr"`
IndexName string `xml:"IndexName"`
ECUName string `xml:"ECUName"`
DataType string `xml:"DataType"`
SerialNumber string `xml:"SerialNumber"`
F108_CodingData string `xml:"F108_CodingData"`
F111_VehicleOrderData string `xml:"F111_VehicleOrderData"`
F183_BootloaderVersion string `xml:"F183_BootloaderVersion"`
F187_VehicleManufacturerSparePartNumber string `xml:"F187_VehicleManufacturerSparePartNumber"`
F188_ECUSoftwareNumber string `xml:"F188_ECUSoftwareNumber"`
F191_ECUHardwareNumber string `xml:"F191_ECUHardwareNumber"`
F195_ECUSoftwareVersionNumber string `xml:"F195_ECUSoftwareVersionNumber"`
F18C_ECUSerialNumber string `xml:"F18C_ECUSerialNumber"`
MaterialNr string `xml:"MaterialNr"`
SoftwareBranch string `xml:"SoftwareBranch"`
SourcingType string `xml:"SourcingType"`
SourcingTypeName string `xml:"SourcingTypeName"`
}
// FlashpackDataRequestSwag is used ONLY to represent FlashpackDataRequest in swagger.
type FlashpackDataRequestSwag struct {
Header struct {
CreationDateTime CreationDateTime `json:"CreationDateTime" swaggertype:"string"`
MessageIdentifier string `json:"MessageIdentifier"`
InterfaceID int `json:"InterfaceId"`
Sender struct {
SourceSystem string `json:"SourceSystem"`
TargetSystem string `json:"TargetSystem"`
} `json:"Sender"`
} `json:"HeaderArea" validate:"required"`
DataArea struct {
VehicleData struct {
VIN string `json:"vin"`
FlashpackNumber string `json:"flashpack_number"`
PDXNumber string `json:"pdx_number"`
} `json:"VehicleData" validate:"required"`
SerializationDataIndices struct {
SerializationDataIndices []struct {
IndexNr string `json:"index_nr"`
IndexName string `json:"index_name"`
DataType string `json:"data_type"`
SerialNumber string `json:"serial_number"`
F108_CodingData string `json:"f108_coding_data"`
F111_VehicleOrderData string `json:"f111_vehicle_order_data"`
F183_BootloaderVersion string `json:"f183_boot_loader_version"`
F187_VehicleManufacturerSparePartNumber string `json:"f187_vehicle_manufacturer_spare_part_number"`
F188_ECUSoftwareNumber string `json:"f188_ecu_software_number"`
F191_ECUHardwareNumber string `json:"f191_ecu_hardware_number"`
F195_ECUSoftwareVersionNumber string `json:"f195_ecu_software_version_number"`
F18C_ECUSerialNumber string `json:"f18c_ecu_serial_number"`
MaterialNr string `json:"material_nr"`
SoftwareBranch string `json:"software_branch"`
SourcingType string `json:"sourcing_type"`
SourcingTypeName string `json:"sourcing_type_name"`
}
} `json:"SerializationDataIndices" validate:"required"`
} `json:"DataArea"`
} // @name SerializationData