package dto import ( "time" "browser.local/platform/domain" ) type RunCapabilityReport struct { Capabilities []string `json:"capabilities"` Fingerprint string `json:"fingerprint"` } type RunControlHelloRequest struct { RegistrationToken string `json:"registrationToken"` RunEndpointID string `json:"runEndpointId"` DisplayName string `json:"displayName"` Version string `json:"version"` Status domain.RunEndpointStatus `json:"status"` Platform string `json:"platform,omitempty"` CapabilityReport RunCapabilityReport `json:"capabilityReport"` Capacity RunCapacityResponse `json:"capacity"` } type RunControlHelloResponse struct { Accepted bool `json:"accepted"` RunEndpointID string `json:"runEndpointId"` SessionToken string `json:"sessionToken"` ServerTime time.Time `json:"serverTime"` HeartbeatIntervalSeconds int `json:"heartbeatIntervalSeconds"` FeatureFlags []string `json:"featureFlags,omitempty"` } type RunControlHeartbeatRequest struct { RunEndpointID string `json:"runEndpointId"` SessionToken string `json:"sessionToken"` Version string `json:"version"` Status domain.RunEndpointStatus `json:"status"` CapabilityFingerprint string `json:"capabilityFingerprint"` Capacity RunCapacityResponse `json:"capacity"` } type RunControlHeartbeatResponse struct { Accepted bool `json:"accepted"` RunEndpointID string `json:"runEndpointId"` NextHeartbeatSeconds int `json:"nextHeartbeatSeconds"` RefreshCapabilities bool `json:"refreshCapabilities"` ServerTime time.Time `json:"serverTime"` } func (request RunControlHelloRequest) ToDomain() domain.RunControlHello { return domain.RunControlHello{ RegistrationToken: request.RegistrationToken, RunEndpointID: request.RunEndpointID, DisplayName: request.DisplayName, Version: request.Version, Status: request.Status, Platform: request.Platform, CapabilityReport: domain.RunCapabilityReport{ Capabilities: domain.CopyStringSlice(request.CapabilityReport.Capabilities), Fingerprint: request.CapabilityReport.Fingerprint, }, Capacity: capacityToDomain(request.Capacity), } } func (request RunControlHeartbeatRequest) ToDomain() domain.RunControlHeartbeat { return domain.RunControlHeartbeat{ RunEndpointID: request.RunEndpointID, SessionToken: request.SessionToken, Version: request.Version, Status: request.Status, CapabilityFingerprint: request.CapabilityFingerprint, Capacity: capacityToDomain(request.Capacity), } } func RunControlHelloFromDomain(result domain.RunControlHelloResult) RunControlHelloResponse { result = domain.CopyRunControlHelloResult(result) return RunControlHelloResponse{ Accepted: result.Accepted, RunEndpointID: result.RunEndpointID, SessionToken: result.SessionToken, ServerTime: result.ServerTime, HeartbeatIntervalSeconds: result.HeartbeatIntervalSeconds, FeatureFlags: result.FeatureFlags, } } func RunControlHeartbeatFromDomain(result domain.RunControlHeartbeatResult) RunControlHeartbeatResponse { return RunControlHeartbeatResponse{ Accepted: result.Accepted, RunEndpointID: result.RunEndpointID, NextHeartbeatSeconds: result.NextHeartbeatSeconds, RefreshCapabilities: result.RefreshCapabilities, ServerTime: result.ServerTime, } }