32 lines
874 B
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)
|
|
}
|