package api import ( "net/http" "browser.local/platform/dto" ) func (h *coreHandlers) gameClientBridgeCompanionClaim(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { writeMethodNotAllowed(w, http.MethodPost) return } request, err := decodeJSON[dto.GameClientBridgeClaimRequest](r) if err != nil { writeDecodeError(w, err) return } commands, err := h.core.ClaimGameClientBridgeCommands(request.ToDomain()) if err != nil { writeServiceError(w, err) return } writeJSON(w, http.StatusOK, dto.GameClientBridgeClaimResponseFromDomain(commands)) } func (h *coreHandlers) gameClientBridgeCompanionAck(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { writeMethodNotAllowed(w, http.MethodPost) return } request, err := decodeJSON[dto.GameClientBridgeAckRequest](r) if err != nil { writeDecodeError(w, err) return } command, err := h.core.AckGameClientBridgeCommand(request.ToDomain(r.PathValue("commandId"))) if err != nil { writeServiceError(w, err) return } writeJSON(w, http.StatusOK, dto.GameClientBridgeAckFromDomain(command)) } func (h *coreHandlers) gameClientBridgeCompanionResult(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { writeMethodNotAllowed(w, http.MethodPost) return } request, err := decodeJSON[dto.GameClientBridgeResultRequest](r) if err != nil { writeDecodeError(w, err) return } command, err := h.core.CompleteGameClientBridgeCommand(request.ToDomain(r.PathValue("commandId"))) if err != nil { writeServiceError(w, err) return } writeJSON(w, http.StatusOK, dto.GameClientBridgeResultFromDomain(command)) } func (h *coreHandlers) gameClientBridgeCompanionSnapshot(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { writeMethodNotAllowed(w, http.MethodPost) return } request, err := decodeJSON[dto.GameClientBridgeSnapshotIngestRequest](r) if err != nil { writeDecodeError(w, err) return } snapshot, err := h.core.UploadGameClientBridgeSnapshot(request.ToDomain()) if err != nil { writeServiceError(w, err) return } writeJSON(w, http.StatusAccepted, dto.GameClientBridgeSnapshotIngestFromDomain(snapshot)) } func (h *coreHandlers) gameClientBridgeCompanionDiagnostics(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { writeMethodNotAllowed(w, http.MethodPost) return } request, err := decodeJSON[dto.GameClientBridgeSnapshotIngestRequest](r) if err != nil { writeDecodeError(w, err) return } if request.Type != "companion.health" && request.Type != "bridge.diagnostics" { writeAPIError(w, http.StatusBadRequest, errorCodeValidation, "validation failed", []string{"diagnostic snapshot type is invalid"}) return } snapshot, err := h.core.UploadGameClientBridgeSnapshot(request.ToDomain()) if err != nil { writeServiceError(w, err) return } writeJSON(w, http.StatusAccepted, dto.GameClientBridgeSnapshotIngestFromDomain(snapshot)) }