feat: 完整游戏运维功能
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"browser.local/platform/dto"
|
||||
)
|
||||
|
||||
// remoteAdapters godoc
|
||||
// @Summary List or request scoped remote adapters
|
||||
// @Description Lists declared safe adapters or queues an owner-authorized fenced adapter job.
|
||||
// @Tags remote-adapters
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Success 200 {object} dto.RemoteAdapterDeclarationListResponse
|
||||
// @Success 202 {object} dto.RemoteAdapterResponse
|
||||
// @Failure 400 {object} dto.ErrorResponse
|
||||
// @Failure 401 {object} dto.ErrorResponse
|
||||
// @Failure 403 {object} dto.ErrorResponse
|
||||
// @Router /api/v1/server-instances/{id}/remote-adapters [get]
|
||||
// @Router /api/v1/server-instances/{id}/remote-adapters [post]
|
||||
func (h *coreHandlers) remoteAdapters(w http.ResponseWriter, r *http.Request) {
|
||||
serverInstanceID := r.PathValue("id")
|
||||
switch r.Method {
|
||||
case http.MethodGet:
|
||||
declarations, err := h.core.ListRemoteAdapterDeclarationsForSession(bearerToken(r), serverInstanceID)
|
||||
if err != nil {
|
||||
writeServiceError(w, err)
|
||||
return
|
||||
}
|
||||
writeJSON(w, http.StatusOK, dto.RemoteAdapterDeclarationsFromDomain(declarations))
|
||||
case http.MethodPost:
|
||||
request, err := decodeJSON[dto.RemoteAdapterRequestBody](r)
|
||||
if err != nil {
|
||||
writeDecodeError(w, err)
|
||||
return
|
||||
}
|
||||
result, err := h.core.RequestRemoteAdapterForSession(bearerToken(r), request.ToDomain(serverInstanceID))
|
||||
if err != nil {
|
||||
writeServiceError(w, err)
|
||||
return
|
||||
}
|
||||
writeJSON(w, http.StatusAccepted, dto.RemoteAdapterFromDomain(result))
|
||||
default:
|
||||
writeMethodNotAllowed(w, "GET, POST")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user