package domain import ( "fmt" pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" ) func ToDomainAgentRequest(request *pb.RegisterAgentRequest) (RegisterAgentRequest, error) { if request == nil { return RegisterAgentRequest{}, fmt.Errorf("request is empty") } return RegisterAgentRequest{ AgentVersion: request.Version, AgentID: request.AgentId, AgentName: request.AgentName, Host: HostInfo{ System: request.Host.System, Hostname: request.Host.Hostname, Arch: request.Host.Arch, }, Capabilities: ToDomainCapabilities(request.Capability), }, nil } func ToDomainAgentResponse(response *pb.RegisterAgentResponse) (RegisterAgentResponse, error) { if response == nil { return RegisterAgentResponse{}, fmt.Errorf("request is empty") } return RegisterAgentResponse{ AgentID: response.AgentId, Heartbeat: int(response.HeartbeatIntervalSecond), }, nil } func ToDomainCapabilities(capability []*pb.Capability) []Capability { var caps []Capability for _, capa := range capability { if capa == nil { continue } caps = append(caps, Capability{ Name: capa.Name, Version: capa.Version, Reason: capa.Reason, Available: capa.Available, }) } return caps } func ToGRPCAgentRequest(request RegisterAgentRequest) pb.RegisterAgentRequest { return pb.RegisterAgentRequest{ AgentId: request.AgentID, AgentName: request.AgentName, Host: &pb.HostInfo{ Hostname: request.Host.Hostname, Arch: request.Host.Arch, System: request.Host.System, }, Version: request.AgentVersion, Capability: ToGRPCCapability(request.Capabilities), } } func ToGRPCAgentResponse(response RegisterAgentResponse) *pb.RegisterAgentResponse { return &pb.RegisterAgentResponse{AgentId: response.AgentID, HeartbeatIntervalSecond: int64(response.Heartbeat)} } func ToGRPCCapability(caps []Capability) []*pb.Capability { var capability []*pb.Capability for _, capi := range caps { capability = append(capability, &pb.Capability{ Name: capi.Name, Available: capi.Available, Version: capi.Version, Reason: capi.Reason, }) } return capability }