orchard/internal/controller/api_rpc_resolve_ip.go

32 lines
874 B
Go

package controller
import (
"github.com/cirruslabs/orchard/internal/controller/rendezvous"
"github.com/cirruslabs/orchard/internal/responder"
v1 "github.com/cirruslabs/orchard/pkg/resource/v1"
"github.com/gin-gonic/gin"
"net/http"
)
func (controller *Controller) rpcResolveIP(ctx *gin.Context) responder.Responder {
if responder := controller.authorize(ctx, v1.ServiceAccountRoleComputeWrite); responder != nil {
return responder
}
// Retrieve and parse path and query parameters
session := ctx.Query("session")
ip := ctx.Query("ip")
errorMessage := ctx.Query("errorMessage")
// Respond with the resolved IP address
_, err := controller.ipRendezvous.Respond(session, rendezvous.ResultWithErrorMessage[string]{
Result: ip,
ErrorMessage: errorMessage,
})
if err != nil {
return responder.Error(err)
}
return responder.Code(http.StatusOK)
}