package livekit
import context "context"
import fmt "fmt"
import http "net/http"
import io "io"
import json "encoding/json"
import strconv "strconv"
import strings "strings"
import protojson "google.golang.org/protobuf/encoding/protojson"
import proto "google.golang.org/protobuf/proto"
import twirp "github.com/twitchtv/twirp"
import ctxsetters "github.com/twitchtv/twirp/ctxsetters"
const _ = twirp.TwirpPackageMinVersion_8_1_0
type CloudAgent interface {
CreateAgent(context.Context, *CreateAgentRequest) (*CreateAgentResponse, error)
ListAgents(context.Context, *ListAgentsRequest) (*ListAgentsResponse, error)
ListAgentVersions(context.Context, *ListAgentVersionsRequest) (*ListAgentVersionsResponse, error)
ListAgentSecrets(context.Context, *ListAgentSecretsRequest) (*ListAgentSecretsResponse, error)
UpdateAgent(context.Context, *UpdateAgentRequest) (*UpdateAgentResponse, error)
RestartAgent(context.Context, *RestartAgentRequest) (*RestartAgentResponse, error)
DeployAgent(context.Context, *DeployAgentRequest) (*DeployAgentResponse, error)
UpdateAgentSecrets(context.Context, *UpdateAgentSecretsRequest) (*UpdateAgentSecretsResponse, error)
RollbackAgent(context.Context, *RollbackAgentRequest) (*RollbackAgentResponse, error)
DeleteAgent(context.Context, *DeleteAgentRequest) (*DeleteAgentResponse, error)
GetClientSettings(context.Context, *ClientSettingsRequest) (*ClientSettingsResponse, error)
CreatePrivateLink(context.Context, *CreatePrivateLinkRequest) (*CreatePrivateLinkResponse, error)
DestroyPrivateLink(context.Context, *DestroyPrivateLinkRequest) (*DestroyPrivateLinkResponse, error)
ListPrivateLinks(context.Context, *ListPrivateLinksRequest) (*ListPrivateLinksResponse, error)
GetPrivateLinkStatus(context.Context, *GetPrivateLinkStatusRequest) (*GetPrivateLinkStatusResponse, error)
}
type cloudAgentProtobufClient struct {
client HTTPClient
urls [15]string
interceptor twirp.Interceptor
opts twirp.ClientOptions
}
func NewCloudAgentProtobufClient(baseURL string, client HTTPClient, opts ...twirp.ClientOption) CloudAgent {
if c, ok := client.(*http.Client); ok {
client = withoutRedirects(c)
}
clientOpts := twirp.ClientOptions{}
for _, o := range opts {
o(&clientOpts)
}
literalURLs := false
_ = clientOpts.ReadOpt("literalURLs", &literalURLs)
var pathPrefix string
if ok := clientOpts.ReadOpt("pathPrefix", &pathPrefix); !ok {
pathPrefix = "/twirp" }
serviceURL := sanitizeBaseURL(baseURL)
serviceURL += baseServicePath(pathPrefix, "livekit", "CloudAgent")
urls := [15]string{
serviceURL + "CreateAgent",
serviceURL + "ListAgents",
serviceURL + "ListAgentVersions",
serviceURL + "ListAgentSecrets",
serviceURL + "UpdateAgent",
serviceURL + "RestartAgent",
serviceURL + "DeployAgent",
serviceURL + "UpdateAgentSecrets",
serviceURL + "RollbackAgent",
serviceURL + "DeleteAgent",
serviceURL + "GetClientSettings",
serviceURL + "CreatePrivateLink",
serviceURL + "DestroyPrivateLink",
serviceURL + "ListPrivateLinks",
serviceURL + "GetPrivateLinkStatus",
}
return &cloudAgentProtobufClient{
client: client,
urls: urls,
interceptor: twirp.ChainInterceptors(clientOpts.Interceptors...),
opts: clientOpts,
}
}
func (c *cloudAgentProtobufClient) CreateAgent(ctx context.Context, in *CreateAgentRequest) (*CreateAgentResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "CreateAgent")
caller := c.callCreateAgent
if c.interceptor != nil {
caller = func(ctx context.Context, req *CreateAgentRequest) (*CreateAgentResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*CreateAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*CreateAgentRequest) when calling interceptor")
}
return c.callCreateAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*CreateAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*CreateAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callCreateAgent(ctx context.Context, in *CreateAgentRequest) (*CreateAgentResponse, error) {
out := new(CreateAgentResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[0], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) ListAgents(ctx context.Context, in *ListAgentsRequest) (*ListAgentsResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "ListAgents")
caller := c.callListAgents
if c.interceptor != nil {
caller = func(ctx context.Context, req *ListAgentsRequest) (*ListAgentsResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListAgentsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListAgentsRequest) when calling interceptor")
}
return c.callListAgents(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListAgentsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListAgentsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callListAgents(ctx context.Context, in *ListAgentsRequest) (*ListAgentsResponse, error) {
out := new(ListAgentsResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[1], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) ListAgentVersions(ctx context.Context, in *ListAgentVersionsRequest) (*ListAgentVersionsResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "ListAgentVersions")
caller := c.callListAgentVersions
if c.interceptor != nil {
caller = func(ctx context.Context, req *ListAgentVersionsRequest) (*ListAgentVersionsResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListAgentVersionsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListAgentVersionsRequest) when calling interceptor")
}
return c.callListAgentVersions(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListAgentVersionsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListAgentVersionsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callListAgentVersions(ctx context.Context, in *ListAgentVersionsRequest) (*ListAgentVersionsResponse, error) {
out := new(ListAgentVersionsResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[2], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) ListAgentSecrets(ctx context.Context, in *ListAgentSecretsRequest) (*ListAgentSecretsResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "ListAgentSecrets")
caller := c.callListAgentSecrets
if c.interceptor != nil {
caller = func(ctx context.Context, req *ListAgentSecretsRequest) (*ListAgentSecretsResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListAgentSecretsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListAgentSecretsRequest) when calling interceptor")
}
return c.callListAgentSecrets(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListAgentSecretsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListAgentSecretsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callListAgentSecrets(ctx context.Context, in *ListAgentSecretsRequest) (*ListAgentSecretsResponse, error) {
out := new(ListAgentSecretsResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) UpdateAgent(ctx context.Context, in *UpdateAgentRequest) (*UpdateAgentResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "UpdateAgent")
caller := c.callUpdateAgent
if c.interceptor != nil {
caller = func(ctx context.Context, req *UpdateAgentRequest) (*UpdateAgentResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*UpdateAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*UpdateAgentRequest) when calling interceptor")
}
return c.callUpdateAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*UpdateAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*UpdateAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callUpdateAgent(ctx context.Context, in *UpdateAgentRequest) (*UpdateAgentResponse, error) {
out := new(UpdateAgentResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) RestartAgent(ctx context.Context, in *RestartAgentRequest) (*RestartAgentResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "RestartAgent")
caller := c.callRestartAgent
if c.interceptor != nil {
caller = func(ctx context.Context, req *RestartAgentRequest) (*RestartAgentResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*RestartAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*RestartAgentRequest) when calling interceptor")
}
return c.callRestartAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*RestartAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*RestartAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callRestartAgent(ctx context.Context, in *RestartAgentRequest) (*RestartAgentResponse, error) {
out := new(RestartAgentResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) DeployAgent(ctx context.Context, in *DeployAgentRequest) (*DeployAgentResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "DeployAgent")
caller := c.callDeployAgent
if c.interceptor != nil {
caller = func(ctx context.Context, req *DeployAgentRequest) (*DeployAgentResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*DeployAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*DeployAgentRequest) when calling interceptor")
}
return c.callDeployAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*DeployAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*DeployAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callDeployAgent(ctx context.Context, in *DeployAgentRequest) (*DeployAgentResponse, error) {
out := new(DeployAgentResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[6], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) UpdateAgentSecrets(ctx context.Context, in *UpdateAgentSecretsRequest) (*UpdateAgentSecretsResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "UpdateAgentSecrets")
caller := c.callUpdateAgentSecrets
if c.interceptor != nil {
caller = func(ctx context.Context, req *UpdateAgentSecretsRequest) (*UpdateAgentSecretsResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*UpdateAgentSecretsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*UpdateAgentSecretsRequest) when calling interceptor")
}
return c.callUpdateAgentSecrets(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*UpdateAgentSecretsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*UpdateAgentSecretsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callUpdateAgentSecrets(ctx context.Context, in *UpdateAgentSecretsRequest) (*UpdateAgentSecretsResponse, error) {
out := new(UpdateAgentSecretsResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[7], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) RollbackAgent(ctx context.Context, in *RollbackAgentRequest) (*RollbackAgentResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "RollbackAgent")
caller := c.callRollbackAgent
if c.interceptor != nil {
caller = func(ctx context.Context, req *RollbackAgentRequest) (*RollbackAgentResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*RollbackAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*RollbackAgentRequest) when calling interceptor")
}
return c.callRollbackAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*RollbackAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*RollbackAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callRollbackAgent(ctx context.Context, in *RollbackAgentRequest) (*RollbackAgentResponse, error) {
out := new(RollbackAgentResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[8], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) DeleteAgent(ctx context.Context, in *DeleteAgentRequest) (*DeleteAgentResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "DeleteAgent")
caller := c.callDeleteAgent
if c.interceptor != nil {
caller = func(ctx context.Context, req *DeleteAgentRequest) (*DeleteAgentResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*DeleteAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*DeleteAgentRequest) when calling interceptor")
}
return c.callDeleteAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*DeleteAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*DeleteAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callDeleteAgent(ctx context.Context, in *DeleteAgentRequest) (*DeleteAgentResponse, error) {
out := new(DeleteAgentResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[9], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) GetClientSettings(ctx context.Context, in *ClientSettingsRequest) (*ClientSettingsResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "GetClientSettings")
caller := c.callGetClientSettings
if c.interceptor != nil {
caller = func(ctx context.Context, req *ClientSettingsRequest) (*ClientSettingsResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ClientSettingsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ClientSettingsRequest) when calling interceptor")
}
return c.callGetClientSettings(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ClientSettingsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ClientSettingsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callGetClientSettings(ctx context.Context, in *ClientSettingsRequest) (*ClientSettingsResponse, error) {
out := new(ClientSettingsResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) CreatePrivateLink(ctx context.Context, in *CreatePrivateLinkRequest) (*CreatePrivateLinkResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "CreatePrivateLink")
caller := c.callCreatePrivateLink
if c.interceptor != nil {
caller = func(ctx context.Context, req *CreatePrivateLinkRequest) (*CreatePrivateLinkResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*CreatePrivateLinkRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*CreatePrivateLinkRequest) when calling interceptor")
}
return c.callCreatePrivateLink(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*CreatePrivateLinkResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*CreatePrivateLinkResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callCreatePrivateLink(ctx context.Context, in *CreatePrivateLinkRequest) (*CreatePrivateLinkResponse, error) {
out := new(CreatePrivateLinkResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) DestroyPrivateLink(ctx context.Context, in *DestroyPrivateLinkRequest) (*DestroyPrivateLinkResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "DestroyPrivateLink")
caller := c.callDestroyPrivateLink
if c.interceptor != nil {
caller = func(ctx context.Context, req *DestroyPrivateLinkRequest) (*DestroyPrivateLinkResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*DestroyPrivateLinkRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*DestroyPrivateLinkRequest) when calling interceptor")
}
return c.callDestroyPrivateLink(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*DestroyPrivateLinkResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*DestroyPrivateLinkResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callDestroyPrivateLink(ctx context.Context, in *DestroyPrivateLinkRequest) (*DestroyPrivateLinkResponse, error) {
out := new(DestroyPrivateLinkResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) ListPrivateLinks(ctx context.Context, in *ListPrivateLinksRequest) (*ListPrivateLinksResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "ListPrivateLinks")
caller := c.callListPrivateLinks
if c.interceptor != nil {
caller = func(ctx context.Context, req *ListPrivateLinksRequest) (*ListPrivateLinksResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListPrivateLinksRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListPrivateLinksRequest) when calling interceptor")
}
return c.callListPrivateLinks(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListPrivateLinksResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListPrivateLinksResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callListPrivateLinks(ctx context.Context, in *ListPrivateLinksRequest) (*ListPrivateLinksResponse, error) {
out := new(ListPrivateLinksResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[13], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentProtobufClient) GetPrivateLinkStatus(ctx context.Context, in *GetPrivateLinkStatusRequest) (*GetPrivateLinkStatusResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "GetPrivateLinkStatus")
caller := c.callGetPrivateLinkStatus
if c.interceptor != nil {
caller = func(ctx context.Context, req *GetPrivateLinkStatusRequest) (*GetPrivateLinkStatusResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*GetPrivateLinkStatusRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*GetPrivateLinkStatusRequest) when calling interceptor")
}
return c.callGetPrivateLinkStatus(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*GetPrivateLinkStatusResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*GetPrivateLinkStatusResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentProtobufClient) callGetPrivateLinkStatus(ctx context.Context, in *GetPrivateLinkStatusRequest) (*GetPrivateLinkStatusResponse, error) {
out := new(GetPrivateLinkStatusResponse)
ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[14], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
type cloudAgentJSONClient struct {
client HTTPClient
urls [15]string
interceptor twirp.Interceptor
opts twirp.ClientOptions
}
func NewCloudAgentJSONClient(baseURL string, client HTTPClient, opts ...twirp.ClientOption) CloudAgent {
if c, ok := client.(*http.Client); ok {
client = withoutRedirects(c)
}
clientOpts := twirp.ClientOptions{}
for _, o := range opts {
o(&clientOpts)
}
literalURLs := false
_ = clientOpts.ReadOpt("literalURLs", &literalURLs)
var pathPrefix string
if ok := clientOpts.ReadOpt("pathPrefix", &pathPrefix); !ok {
pathPrefix = "/twirp" }
serviceURL := sanitizeBaseURL(baseURL)
serviceURL += baseServicePath(pathPrefix, "livekit", "CloudAgent")
urls := [15]string{
serviceURL + "CreateAgent",
serviceURL + "ListAgents",
serviceURL + "ListAgentVersions",
serviceURL + "ListAgentSecrets",
serviceURL + "UpdateAgent",
serviceURL + "RestartAgent",
serviceURL + "DeployAgent",
serviceURL + "UpdateAgentSecrets",
serviceURL + "RollbackAgent",
serviceURL + "DeleteAgent",
serviceURL + "GetClientSettings",
serviceURL + "CreatePrivateLink",
serviceURL + "DestroyPrivateLink",
serviceURL + "ListPrivateLinks",
serviceURL + "GetPrivateLinkStatus",
}
return &cloudAgentJSONClient{
client: client,
urls: urls,
interceptor: twirp.ChainInterceptors(clientOpts.Interceptors...),
opts: clientOpts,
}
}
func (c *cloudAgentJSONClient) CreateAgent(ctx context.Context, in *CreateAgentRequest) (*CreateAgentResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "CreateAgent")
caller := c.callCreateAgent
if c.interceptor != nil {
caller = func(ctx context.Context, req *CreateAgentRequest) (*CreateAgentResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*CreateAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*CreateAgentRequest) when calling interceptor")
}
return c.callCreateAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*CreateAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*CreateAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callCreateAgent(ctx context.Context, in *CreateAgentRequest) (*CreateAgentResponse, error) {
out := new(CreateAgentResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[0], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) ListAgents(ctx context.Context, in *ListAgentsRequest) (*ListAgentsResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "ListAgents")
caller := c.callListAgents
if c.interceptor != nil {
caller = func(ctx context.Context, req *ListAgentsRequest) (*ListAgentsResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListAgentsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListAgentsRequest) when calling interceptor")
}
return c.callListAgents(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListAgentsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListAgentsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callListAgents(ctx context.Context, in *ListAgentsRequest) (*ListAgentsResponse, error) {
out := new(ListAgentsResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[1], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) ListAgentVersions(ctx context.Context, in *ListAgentVersionsRequest) (*ListAgentVersionsResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "ListAgentVersions")
caller := c.callListAgentVersions
if c.interceptor != nil {
caller = func(ctx context.Context, req *ListAgentVersionsRequest) (*ListAgentVersionsResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListAgentVersionsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListAgentVersionsRequest) when calling interceptor")
}
return c.callListAgentVersions(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListAgentVersionsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListAgentVersionsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callListAgentVersions(ctx context.Context, in *ListAgentVersionsRequest) (*ListAgentVersionsResponse, error) {
out := new(ListAgentVersionsResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[2], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) ListAgentSecrets(ctx context.Context, in *ListAgentSecretsRequest) (*ListAgentSecretsResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "ListAgentSecrets")
caller := c.callListAgentSecrets
if c.interceptor != nil {
caller = func(ctx context.Context, req *ListAgentSecretsRequest) (*ListAgentSecretsResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListAgentSecretsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListAgentSecretsRequest) when calling interceptor")
}
return c.callListAgentSecrets(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListAgentSecretsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListAgentSecretsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callListAgentSecrets(ctx context.Context, in *ListAgentSecretsRequest) (*ListAgentSecretsResponse, error) {
out := new(ListAgentSecretsResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) UpdateAgent(ctx context.Context, in *UpdateAgentRequest) (*UpdateAgentResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "UpdateAgent")
caller := c.callUpdateAgent
if c.interceptor != nil {
caller = func(ctx context.Context, req *UpdateAgentRequest) (*UpdateAgentResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*UpdateAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*UpdateAgentRequest) when calling interceptor")
}
return c.callUpdateAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*UpdateAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*UpdateAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callUpdateAgent(ctx context.Context, in *UpdateAgentRequest) (*UpdateAgentResponse, error) {
out := new(UpdateAgentResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) RestartAgent(ctx context.Context, in *RestartAgentRequest) (*RestartAgentResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "RestartAgent")
caller := c.callRestartAgent
if c.interceptor != nil {
caller = func(ctx context.Context, req *RestartAgentRequest) (*RestartAgentResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*RestartAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*RestartAgentRequest) when calling interceptor")
}
return c.callRestartAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*RestartAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*RestartAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callRestartAgent(ctx context.Context, in *RestartAgentRequest) (*RestartAgentResponse, error) {
out := new(RestartAgentResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) DeployAgent(ctx context.Context, in *DeployAgentRequest) (*DeployAgentResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "DeployAgent")
caller := c.callDeployAgent
if c.interceptor != nil {
caller = func(ctx context.Context, req *DeployAgentRequest) (*DeployAgentResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*DeployAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*DeployAgentRequest) when calling interceptor")
}
return c.callDeployAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*DeployAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*DeployAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callDeployAgent(ctx context.Context, in *DeployAgentRequest) (*DeployAgentResponse, error) {
out := new(DeployAgentResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[6], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) UpdateAgentSecrets(ctx context.Context, in *UpdateAgentSecretsRequest) (*UpdateAgentSecretsResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "UpdateAgentSecrets")
caller := c.callUpdateAgentSecrets
if c.interceptor != nil {
caller = func(ctx context.Context, req *UpdateAgentSecretsRequest) (*UpdateAgentSecretsResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*UpdateAgentSecretsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*UpdateAgentSecretsRequest) when calling interceptor")
}
return c.callUpdateAgentSecrets(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*UpdateAgentSecretsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*UpdateAgentSecretsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callUpdateAgentSecrets(ctx context.Context, in *UpdateAgentSecretsRequest) (*UpdateAgentSecretsResponse, error) {
out := new(UpdateAgentSecretsResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[7], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) RollbackAgent(ctx context.Context, in *RollbackAgentRequest) (*RollbackAgentResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "RollbackAgent")
caller := c.callRollbackAgent
if c.interceptor != nil {
caller = func(ctx context.Context, req *RollbackAgentRequest) (*RollbackAgentResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*RollbackAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*RollbackAgentRequest) when calling interceptor")
}
return c.callRollbackAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*RollbackAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*RollbackAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callRollbackAgent(ctx context.Context, in *RollbackAgentRequest) (*RollbackAgentResponse, error) {
out := new(RollbackAgentResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[8], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) DeleteAgent(ctx context.Context, in *DeleteAgentRequest) (*DeleteAgentResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "DeleteAgent")
caller := c.callDeleteAgent
if c.interceptor != nil {
caller = func(ctx context.Context, req *DeleteAgentRequest) (*DeleteAgentResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*DeleteAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*DeleteAgentRequest) when calling interceptor")
}
return c.callDeleteAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*DeleteAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*DeleteAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callDeleteAgent(ctx context.Context, in *DeleteAgentRequest) (*DeleteAgentResponse, error) {
out := new(DeleteAgentResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[9], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) GetClientSettings(ctx context.Context, in *ClientSettingsRequest) (*ClientSettingsResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "GetClientSettings")
caller := c.callGetClientSettings
if c.interceptor != nil {
caller = func(ctx context.Context, req *ClientSettingsRequest) (*ClientSettingsResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ClientSettingsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ClientSettingsRequest) when calling interceptor")
}
return c.callGetClientSettings(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ClientSettingsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ClientSettingsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callGetClientSettings(ctx context.Context, in *ClientSettingsRequest) (*ClientSettingsResponse, error) {
out := new(ClientSettingsResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[10], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) CreatePrivateLink(ctx context.Context, in *CreatePrivateLinkRequest) (*CreatePrivateLinkResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "CreatePrivateLink")
caller := c.callCreatePrivateLink
if c.interceptor != nil {
caller = func(ctx context.Context, req *CreatePrivateLinkRequest) (*CreatePrivateLinkResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*CreatePrivateLinkRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*CreatePrivateLinkRequest) when calling interceptor")
}
return c.callCreatePrivateLink(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*CreatePrivateLinkResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*CreatePrivateLinkResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callCreatePrivateLink(ctx context.Context, in *CreatePrivateLinkRequest) (*CreatePrivateLinkResponse, error) {
out := new(CreatePrivateLinkResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[11], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) DestroyPrivateLink(ctx context.Context, in *DestroyPrivateLinkRequest) (*DestroyPrivateLinkResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "DestroyPrivateLink")
caller := c.callDestroyPrivateLink
if c.interceptor != nil {
caller = func(ctx context.Context, req *DestroyPrivateLinkRequest) (*DestroyPrivateLinkResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*DestroyPrivateLinkRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*DestroyPrivateLinkRequest) when calling interceptor")
}
return c.callDestroyPrivateLink(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*DestroyPrivateLinkResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*DestroyPrivateLinkResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callDestroyPrivateLink(ctx context.Context, in *DestroyPrivateLinkRequest) (*DestroyPrivateLinkResponse, error) {
out := new(DestroyPrivateLinkResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[12], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) ListPrivateLinks(ctx context.Context, in *ListPrivateLinksRequest) (*ListPrivateLinksResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "ListPrivateLinks")
caller := c.callListPrivateLinks
if c.interceptor != nil {
caller = func(ctx context.Context, req *ListPrivateLinksRequest) (*ListPrivateLinksResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListPrivateLinksRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListPrivateLinksRequest) when calling interceptor")
}
return c.callListPrivateLinks(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListPrivateLinksResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListPrivateLinksResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callListPrivateLinks(ctx context.Context, in *ListPrivateLinksRequest) (*ListPrivateLinksResponse, error) {
out := new(ListPrivateLinksResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[13], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
func (c *cloudAgentJSONClient) GetPrivateLinkStatus(ctx context.Context, in *GetPrivateLinkStatusRequest) (*GetPrivateLinkStatusResponse, error) {
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithMethodName(ctx, "GetPrivateLinkStatus")
caller := c.callGetPrivateLinkStatus
if c.interceptor != nil {
caller = func(ctx context.Context, req *GetPrivateLinkStatusRequest) (*GetPrivateLinkStatusResponse, error) {
resp, err := c.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*GetPrivateLinkStatusRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*GetPrivateLinkStatusRequest) when calling interceptor")
}
return c.callGetPrivateLinkStatus(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*GetPrivateLinkStatusResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*GetPrivateLinkStatusResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
return caller(ctx, in)
}
func (c *cloudAgentJSONClient) callGetPrivateLinkStatus(ctx context.Context, in *GetPrivateLinkStatusRequest) (*GetPrivateLinkStatusResponse, error) {
out := new(GetPrivateLinkStatusResponse)
ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[14], in, out)
if err != nil {
twerr, ok := err.(twirp.Error)
if !ok {
twerr = twirp.InternalErrorWith(err)
}
callClientError(ctx, c.opts.Hooks, twerr)
return nil, err
}
callClientResponseReceived(ctx, c.opts.Hooks)
return out, nil
}
type cloudAgentServer struct {
CloudAgent
interceptor twirp.Interceptor
hooks *twirp.ServerHooks
pathPrefix string jsonSkipDefaults bool jsonCamelCase bool }
func NewCloudAgentServer(svc CloudAgent, opts ...interface{}) TwirpServer {
serverOpts := newServerOpts(opts)
jsonSkipDefaults := false
_ = serverOpts.ReadOpt("jsonSkipDefaults", &jsonSkipDefaults)
jsonCamelCase := false
_ = serverOpts.ReadOpt("jsonCamelCase", &jsonCamelCase)
var pathPrefix string
if ok := serverOpts.ReadOpt("pathPrefix", &pathPrefix); !ok {
pathPrefix = "/twirp" }
return &cloudAgentServer{
CloudAgent: svc,
hooks: serverOpts.Hooks,
interceptor: twirp.ChainInterceptors(serverOpts.Interceptors...),
pathPrefix: pathPrefix,
jsonSkipDefaults: jsonSkipDefaults,
jsonCamelCase: jsonCamelCase,
}
}
func (s *cloudAgentServer) writeError(ctx context.Context, resp http.ResponseWriter, err error) {
writeError(ctx, resp, err, s.hooks)
}
func (s *cloudAgentServer) handleRequestBodyError(ctx context.Context, resp http.ResponseWriter, msg string, err error) {
if context.Canceled == ctx.Err() {
s.writeError(ctx, resp, twirp.NewError(twirp.Canceled, "failed to read request: context canceled"))
return
}
if context.DeadlineExceeded == ctx.Err() {
s.writeError(ctx, resp, twirp.NewError(twirp.DeadlineExceeded, "failed to read request: deadline exceeded"))
return
}
s.writeError(ctx, resp, twirp.WrapError(malformedRequestError(msg), err))
}
const CloudAgentPathPrefix = "/twirp/livekit.CloudAgent/"
func (s *cloudAgentServer) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
ctx := req.Context()
ctx = ctxsetters.WithPackageName(ctx, "livekit")
ctx = ctxsetters.WithServiceName(ctx, "CloudAgent")
ctx = ctxsetters.WithResponseWriter(ctx, resp)
var err error
ctx, err = callRequestReceived(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
if req.Method != "POST" {
msg := fmt.Sprintf("unsupported method %q (only POST is allowed)", req.Method)
s.writeError(ctx, resp, badRouteError(msg, req.Method, req.URL.Path))
return
}
prefix, pkgService, method := parseTwirpPath(req.URL.Path)
if pkgService != "livekit.CloudAgent" {
msg := fmt.Sprintf("no handler for path %q", req.URL.Path)
s.writeError(ctx, resp, badRouteError(msg, req.Method, req.URL.Path))
return
}
if prefix != s.pathPrefix {
msg := fmt.Sprintf("invalid path prefix %q, expected %q, on path %q", prefix, s.pathPrefix, req.URL.Path)
s.writeError(ctx, resp, badRouteError(msg, req.Method, req.URL.Path))
return
}
switch method {
case "CreateAgent":
s.serveCreateAgent(ctx, resp, req)
return
case "ListAgents":
s.serveListAgents(ctx, resp, req)
return
case "ListAgentVersions":
s.serveListAgentVersions(ctx, resp, req)
return
case "ListAgentSecrets":
s.serveListAgentSecrets(ctx, resp, req)
return
case "UpdateAgent":
s.serveUpdateAgent(ctx, resp, req)
return
case "RestartAgent":
s.serveRestartAgent(ctx, resp, req)
return
case "DeployAgent":
s.serveDeployAgent(ctx, resp, req)
return
case "UpdateAgentSecrets":
s.serveUpdateAgentSecrets(ctx, resp, req)
return
case "RollbackAgent":
s.serveRollbackAgent(ctx, resp, req)
return
case "DeleteAgent":
s.serveDeleteAgent(ctx, resp, req)
return
case "GetClientSettings":
s.serveGetClientSettings(ctx, resp, req)
return
case "CreatePrivateLink":
s.serveCreatePrivateLink(ctx, resp, req)
return
case "DestroyPrivateLink":
s.serveDestroyPrivateLink(ctx, resp, req)
return
case "ListPrivateLinks":
s.serveListPrivateLinks(ctx, resp, req)
return
case "GetPrivateLinkStatus":
s.serveGetPrivateLinkStatus(ctx, resp, req)
return
default:
msg := fmt.Sprintf("no handler for path %q", req.URL.Path)
s.writeError(ctx, resp, badRouteError(msg, req.Method, req.URL.Path))
return
}
}
func (s *cloudAgentServer) serveCreateAgent(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveCreateAgentJSON(ctx, resp, req)
case "application/protobuf":
s.serveCreateAgentProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveCreateAgentJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "CreateAgent")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(CreateAgentRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.CreateAgent
if s.interceptor != nil {
handler = func(ctx context.Context, req *CreateAgentRequest) (*CreateAgentResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*CreateAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*CreateAgentRequest) when calling interceptor")
}
return s.CloudAgent.CreateAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*CreateAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*CreateAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *CreateAgentResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *CreateAgentResponse and nil error while calling CreateAgent. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveCreateAgentProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "CreateAgent")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(CreateAgentRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.CreateAgent
if s.interceptor != nil {
handler = func(ctx context.Context, req *CreateAgentRequest) (*CreateAgentResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*CreateAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*CreateAgentRequest) when calling interceptor")
}
return s.CloudAgent.CreateAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*CreateAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*CreateAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *CreateAgentResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *CreateAgentResponse and nil error while calling CreateAgent. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveListAgents(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveListAgentsJSON(ctx, resp, req)
case "application/protobuf":
s.serveListAgentsProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveListAgentsJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "ListAgents")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(ListAgentsRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.ListAgents
if s.interceptor != nil {
handler = func(ctx context.Context, req *ListAgentsRequest) (*ListAgentsResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListAgentsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListAgentsRequest) when calling interceptor")
}
return s.CloudAgent.ListAgents(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListAgentsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListAgentsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *ListAgentsResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *ListAgentsResponse and nil error while calling ListAgents. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveListAgentsProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "ListAgents")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(ListAgentsRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.ListAgents
if s.interceptor != nil {
handler = func(ctx context.Context, req *ListAgentsRequest) (*ListAgentsResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListAgentsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListAgentsRequest) when calling interceptor")
}
return s.CloudAgent.ListAgents(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListAgentsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListAgentsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *ListAgentsResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *ListAgentsResponse and nil error while calling ListAgents. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveListAgentVersions(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveListAgentVersionsJSON(ctx, resp, req)
case "application/protobuf":
s.serveListAgentVersionsProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveListAgentVersionsJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "ListAgentVersions")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(ListAgentVersionsRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.ListAgentVersions
if s.interceptor != nil {
handler = func(ctx context.Context, req *ListAgentVersionsRequest) (*ListAgentVersionsResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListAgentVersionsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListAgentVersionsRequest) when calling interceptor")
}
return s.CloudAgent.ListAgentVersions(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListAgentVersionsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListAgentVersionsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *ListAgentVersionsResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *ListAgentVersionsResponse and nil error while calling ListAgentVersions. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveListAgentVersionsProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "ListAgentVersions")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(ListAgentVersionsRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.ListAgentVersions
if s.interceptor != nil {
handler = func(ctx context.Context, req *ListAgentVersionsRequest) (*ListAgentVersionsResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListAgentVersionsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListAgentVersionsRequest) when calling interceptor")
}
return s.CloudAgent.ListAgentVersions(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListAgentVersionsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListAgentVersionsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *ListAgentVersionsResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *ListAgentVersionsResponse and nil error while calling ListAgentVersions. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveListAgentSecrets(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveListAgentSecretsJSON(ctx, resp, req)
case "application/protobuf":
s.serveListAgentSecretsProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveListAgentSecretsJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "ListAgentSecrets")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(ListAgentSecretsRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.ListAgentSecrets
if s.interceptor != nil {
handler = func(ctx context.Context, req *ListAgentSecretsRequest) (*ListAgentSecretsResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListAgentSecretsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListAgentSecretsRequest) when calling interceptor")
}
return s.CloudAgent.ListAgentSecrets(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListAgentSecretsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListAgentSecretsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *ListAgentSecretsResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *ListAgentSecretsResponse and nil error while calling ListAgentSecrets. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveListAgentSecretsProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "ListAgentSecrets")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(ListAgentSecretsRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.ListAgentSecrets
if s.interceptor != nil {
handler = func(ctx context.Context, req *ListAgentSecretsRequest) (*ListAgentSecretsResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListAgentSecretsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListAgentSecretsRequest) when calling interceptor")
}
return s.CloudAgent.ListAgentSecrets(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListAgentSecretsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListAgentSecretsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *ListAgentSecretsResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *ListAgentSecretsResponse and nil error while calling ListAgentSecrets. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveUpdateAgent(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveUpdateAgentJSON(ctx, resp, req)
case "application/protobuf":
s.serveUpdateAgentProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveUpdateAgentJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "UpdateAgent")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(UpdateAgentRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.UpdateAgent
if s.interceptor != nil {
handler = func(ctx context.Context, req *UpdateAgentRequest) (*UpdateAgentResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*UpdateAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*UpdateAgentRequest) when calling interceptor")
}
return s.CloudAgent.UpdateAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*UpdateAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*UpdateAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *UpdateAgentResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *UpdateAgentResponse and nil error while calling UpdateAgent. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveUpdateAgentProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "UpdateAgent")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(UpdateAgentRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.UpdateAgent
if s.interceptor != nil {
handler = func(ctx context.Context, req *UpdateAgentRequest) (*UpdateAgentResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*UpdateAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*UpdateAgentRequest) when calling interceptor")
}
return s.CloudAgent.UpdateAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*UpdateAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*UpdateAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *UpdateAgentResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *UpdateAgentResponse and nil error while calling UpdateAgent. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveRestartAgent(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveRestartAgentJSON(ctx, resp, req)
case "application/protobuf":
s.serveRestartAgentProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveRestartAgentJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "RestartAgent")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(RestartAgentRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.RestartAgent
if s.interceptor != nil {
handler = func(ctx context.Context, req *RestartAgentRequest) (*RestartAgentResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*RestartAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*RestartAgentRequest) when calling interceptor")
}
return s.CloudAgent.RestartAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*RestartAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*RestartAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *RestartAgentResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *RestartAgentResponse and nil error while calling RestartAgent. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveRestartAgentProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "RestartAgent")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(RestartAgentRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.RestartAgent
if s.interceptor != nil {
handler = func(ctx context.Context, req *RestartAgentRequest) (*RestartAgentResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*RestartAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*RestartAgentRequest) when calling interceptor")
}
return s.CloudAgent.RestartAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*RestartAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*RestartAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *RestartAgentResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *RestartAgentResponse and nil error while calling RestartAgent. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveDeployAgent(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveDeployAgentJSON(ctx, resp, req)
case "application/protobuf":
s.serveDeployAgentProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveDeployAgentJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "DeployAgent")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(DeployAgentRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.DeployAgent
if s.interceptor != nil {
handler = func(ctx context.Context, req *DeployAgentRequest) (*DeployAgentResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*DeployAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*DeployAgentRequest) when calling interceptor")
}
return s.CloudAgent.DeployAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*DeployAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*DeployAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *DeployAgentResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *DeployAgentResponse and nil error while calling DeployAgent. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveDeployAgentProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "DeployAgent")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(DeployAgentRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.DeployAgent
if s.interceptor != nil {
handler = func(ctx context.Context, req *DeployAgentRequest) (*DeployAgentResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*DeployAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*DeployAgentRequest) when calling interceptor")
}
return s.CloudAgent.DeployAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*DeployAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*DeployAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *DeployAgentResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *DeployAgentResponse and nil error while calling DeployAgent. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveUpdateAgentSecrets(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveUpdateAgentSecretsJSON(ctx, resp, req)
case "application/protobuf":
s.serveUpdateAgentSecretsProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveUpdateAgentSecretsJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "UpdateAgentSecrets")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(UpdateAgentSecretsRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.UpdateAgentSecrets
if s.interceptor != nil {
handler = func(ctx context.Context, req *UpdateAgentSecretsRequest) (*UpdateAgentSecretsResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*UpdateAgentSecretsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*UpdateAgentSecretsRequest) when calling interceptor")
}
return s.CloudAgent.UpdateAgentSecrets(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*UpdateAgentSecretsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*UpdateAgentSecretsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *UpdateAgentSecretsResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *UpdateAgentSecretsResponse and nil error while calling UpdateAgentSecrets. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveUpdateAgentSecretsProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "UpdateAgentSecrets")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(UpdateAgentSecretsRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.UpdateAgentSecrets
if s.interceptor != nil {
handler = func(ctx context.Context, req *UpdateAgentSecretsRequest) (*UpdateAgentSecretsResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*UpdateAgentSecretsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*UpdateAgentSecretsRequest) when calling interceptor")
}
return s.CloudAgent.UpdateAgentSecrets(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*UpdateAgentSecretsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*UpdateAgentSecretsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *UpdateAgentSecretsResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *UpdateAgentSecretsResponse and nil error while calling UpdateAgentSecrets. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveRollbackAgent(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveRollbackAgentJSON(ctx, resp, req)
case "application/protobuf":
s.serveRollbackAgentProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveRollbackAgentJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "RollbackAgent")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(RollbackAgentRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.RollbackAgent
if s.interceptor != nil {
handler = func(ctx context.Context, req *RollbackAgentRequest) (*RollbackAgentResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*RollbackAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*RollbackAgentRequest) when calling interceptor")
}
return s.CloudAgent.RollbackAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*RollbackAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*RollbackAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *RollbackAgentResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *RollbackAgentResponse and nil error while calling RollbackAgent. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveRollbackAgentProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "RollbackAgent")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(RollbackAgentRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.RollbackAgent
if s.interceptor != nil {
handler = func(ctx context.Context, req *RollbackAgentRequest) (*RollbackAgentResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*RollbackAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*RollbackAgentRequest) when calling interceptor")
}
return s.CloudAgent.RollbackAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*RollbackAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*RollbackAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *RollbackAgentResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *RollbackAgentResponse and nil error while calling RollbackAgent. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveDeleteAgent(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveDeleteAgentJSON(ctx, resp, req)
case "application/protobuf":
s.serveDeleteAgentProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveDeleteAgentJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "DeleteAgent")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(DeleteAgentRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.DeleteAgent
if s.interceptor != nil {
handler = func(ctx context.Context, req *DeleteAgentRequest) (*DeleteAgentResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*DeleteAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*DeleteAgentRequest) when calling interceptor")
}
return s.CloudAgent.DeleteAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*DeleteAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*DeleteAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *DeleteAgentResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *DeleteAgentResponse and nil error while calling DeleteAgent. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveDeleteAgentProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "DeleteAgent")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(DeleteAgentRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.DeleteAgent
if s.interceptor != nil {
handler = func(ctx context.Context, req *DeleteAgentRequest) (*DeleteAgentResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*DeleteAgentRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*DeleteAgentRequest) when calling interceptor")
}
return s.CloudAgent.DeleteAgent(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*DeleteAgentResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*DeleteAgentResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *DeleteAgentResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *DeleteAgentResponse and nil error while calling DeleteAgent. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveGetClientSettings(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveGetClientSettingsJSON(ctx, resp, req)
case "application/protobuf":
s.serveGetClientSettingsProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveGetClientSettingsJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "GetClientSettings")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(ClientSettingsRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.GetClientSettings
if s.interceptor != nil {
handler = func(ctx context.Context, req *ClientSettingsRequest) (*ClientSettingsResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ClientSettingsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ClientSettingsRequest) when calling interceptor")
}
return s.CloudAgent.GetClientSettings(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ClientSettingsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ClientSettingsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *ClientSettingsResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *ClientSettingsResponse and nil error while calling GetClientSettings. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveGetClientSettingsProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "GetClientSettings")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(ClientSettingsRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.GetClientSettings
if s.interceptor != nil {
handler = func(ctx context.Context, req *ClientSettingsRequest) (*ClientSettingsResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ClientSettingsRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ClientSettingsRequest) when calling interceptor")
}
return s.CloudAgent.GetClientSettings(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ClientSettingsResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ClientSettingsResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *ClientSettingsResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *ClientSettingsResponse and nil error while calling GetClientSettings. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveCreatePrivateLink(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveCreatePrivateLinkJSON(ctx, resp, req)
case "application/protobuf":
s.serveCreatePrivateLinkProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveCreatePrivateLinkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "CreatePrivateLink")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(CreatePrivateLinkRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.CreatePrivateLink
if s.interceptor != nil {
handler = func(ctx context.Context, req *CreatePrivateLinkRequest) (*CreatePrivateLinkResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*CreatePrivateLinkRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*CreatePrivateLinkRequest) when calling interceptor")
}
return s.CloudAgent.CreatePrivateLink(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*CreatePrivateLinkResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*CreatePrivateLinkResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *CreatePrivateLinkResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *CreatePrivateLinkResponse and nil error while calling CreatePrivateLink. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveCreatePrivateLinkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "CreatePrivateLink")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(CreatePrivateLinkRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.CreatePrivateLink
if s.interceptor != nil {
handler = func(ctx context.Context, req *CreatePrivateLinkRequest) (*CreatePrivateLinkResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*CreatePrivateLinkRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*CreatePrivateLinkRequest) when calling interceptor")
}
return s.CloudAgent.CreatePrivateLink(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*CreatePrivateLinkResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*CreatePrivateLinkResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *CreatePrivateLinkResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *CreatePrivateLinkResponse and nil error while calling CreatePrivateLink. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveDestroyPrivateLink(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveDestroyPrivateLinkJSON(ctx, resp, req)
case "application/protobuf":
s.serveDestroyPrivateLinkProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveDestroyPrivateLinkJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "DestroyPrivateLink")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(DestroyPrivateLinkRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.DestroyPrivateLink
if s.interceptor != nil {
handler = func(ctx context.Context, req *DestroyPrivateLinkRequest) (*DestroyPrivateLinkResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*DestroyPrivateLinkRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*DestroyPrivateLinkRequest) when calling interceptor")
}
return s.CloudAgent.DestroyPrivateLink(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*DestroyPrivateLinkResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*DestroyPrivateLinkResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *DestroyPrivateLinkResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *DestroyPrivateLinkResponse and nil error while calling DestroyPrivateLink. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveDestroyPrivateLinkProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "DestroyPrivateLink")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(DestroyPrivateLinkRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.DestroyPrivateLink
if s.interceptor != nil {
handler = func(ctx context.Context, req *DestroyPrivateLinkRequest) (*DestroyPrivateLinkResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*DestroyPrivateLinkRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*DestroyPrivateLinkRequest) when calling interceptor")
}
return s.CloudAgent.DestroyPrivateLink(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*DestroyPrivateLinkResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*DestroyPrivateLinkResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *DestroyPrivateLinkResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *DestroyPrivateLinkResponse and nil error while calling DestroyPrivateLink. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveListPrivateLinks(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveListPrivateLinksJSON(ctx, resp, req)
case "application/protobuf":
s.serveListPrivateLinksProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveListPrivateLinksJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "ListPrivateLinks")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(ListPrivateLinksRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.ListPrivateLinks
if s.interceptor != nil {
handler = func(ctx context.Context, req *ListPrivateLinksRequest) (*ListPrivateLinksResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListPrivateLinksRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListPrivateLinksRequest) when calling interceptor")
}
return s.CloudAgent.ListPrivateLinks(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListPrivateLinksResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListPrivateLinksResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *ListPrivateLinksResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *ListPrivateLinksResponse and nil error while calling ListPrivateLinks. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveListPrivateLinksProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "ListPrivateLinks")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(ListPrivateLinksRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.ListPrivateLinks
if s.interceptor != nil {
handler = func(ctx context.Context, req *ListPrivateLinksRequest) (*ListPrivateLinksResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*ListPrivateLinksRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*ListPrivateLinksRequest) when calling interceptor")
}
return s.CloudAgent.ListPrivateLinks(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*ListPrivateLinksResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*ListPrivateLinksResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *ListPrivateLinksResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *ListPrivateLinksResponse and nil error while calling ListPrivateLinks. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveGetPrivateLinkStatus(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
header := req.Header.Get("Content-Type")
i := strings.Index(header, ";")
if i == -1 {
i = len(header)
}
switch strings.TrimSpace(strings.ToLower(header[:i])) {
case "application/json":
s.serveGetPrivateLinkStatusJSON(ctx, resp, req)
case "application/protobuf":
s.serveGetPrivateLinkStatusProtobuf(ctx, resp, req)
default:
msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type"))
twerr := badRouteError(msg, req.Method, req.URL.Path)
s.writeError(ctx, resp, twerr)
}
}
func (s *cloudAgentServer) serveGetPrivateLinkStatusJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "GetPrivateLinkStatus")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
d := json.NewDecoder(req.Body)
rawReqBody := json.RawMessage{}
if err := d.Decode(&rawReqBody); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
reqContent := new(GetPrivateLinkStatusRequest)
unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true}
if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil {
s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err)
return
}
handler := s.CloudAgent.GetPrivateLinkStatus
if s.interceptor != nil {
handler = func(ctx context.Context, req *GetPrivateLinkStatusRequest) (*GetPrivateLinkStatusResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*GetPrivateLinkStatusRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*GetPrivateLinkStatusRequest) when calling interceptor")
}
return s.CloudAgent.GetPrivateLinkStatus(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*GetPrivateLinkStatusResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*GetPrivateLinkStatusResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *GetPrivateLinkStatusResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *GetPrivateLinkStatusResponse and nil error while calling GetPrivateLinkStatus. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults}
respBytes, err := marshaler.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/json")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) serveGetPrivateLinkStatusProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) {
var err error
ctx = ctxsetters.WithMethodName(ctx, "GetPrivateLinkStatus")
ctx, err = callRequestRouted(ctx, s.hooks)
if err != nil {
s.writeError(ctx, resp, err)
return
}
buf, err := io.ReadAll(req.Body)
if err != nil {
s.handleRequestBodyError(ctx, resp, "failed to read request body", err)
return
}
reqContent := new(GetPrivateLinkStatusRequest)
if err = proto.Unmarshal(buf, reqContent); err != nil {
s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded"))
return
}
handler := s.CloudAgent.GetPrivateLinkStatus
if s.interceptor != nil {
handler = func(ctx context.Context, req *GetPrivateLinkStatusRequest) (*GetPrivateLinkStatusResponse, error) {
resp, err := s.interceptor(
func(ctx context.Context, req interface{}) (interface{}, error) {
typedReq, ok := req.(*GetPrivateLinkStatusRequest)
if !ok {
return nil, twirp.InternalError("failed type assertion req.(*GetPrivateLinkStatusRequest) when calling interceptor")
}
return s.CloudAgent.GetPrivateLinkStatus(ctx, typedReq)
},
)(ctx, req)
if resp != nil {
typedResp, ok := resp.(*GetPrivateLinkStatusResponse)
if !ok {
return nil, twirp.InternalError("failed type assertion resp.(*GetPrivateLinkStatusResponse) when calling interceptor")
}
return typedResp, err
}
return nil, err
}
}
var respContent *GetPrivateLinkStatusResponse
func() {
defer ensurePanicResponses(ctx, resp, s.hooks)
respContent, err = handler(ctx, reqContent)
}()
if err != nil {
s.writeError(ctx, resp, err)
return
}
if respContent == nil {
s.writeError(ctx, resp, twirp.InternalError("received a nil *GetPrivateLinkStatusResponse and nil error while calling GetPrivateLinkStatus. nil responses are not supported"))
return
}
ctx = callResponsePrepared(ctx, s.hooks)
respBytes, err := proto.Marshal(respContent)
if err != nil {
s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response"))
return
}
ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK)
resp.Header().Set("Content-Type", "application/protobuf")
resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes)))
resp.WriteHeader(http.StatusOK)
if n, err := resp.Write(respBytes); err != nil {
msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error())
twerr := twirp.NewError(twirp.Unknown, msg)
ctx = callError(ctx, s.hooks, twerr)
}
callResponseSent(ctx, s.hooks)
}
func (s *cloudAgentServer) ServiceDescriptor() ([]byte, int) {
return twirpFileDescriptor5, 0
}
func (s *cloudAgentServer) ProtocGenTwirpVersion() string {
return "v8.1.3"
}
func (s *cloudAgentServer) PathPrefix() string {
return baseServicePath(s.pathPrefix, "livekit", "CloudAgent")
}
var twirpFileDescriptor5 = []byte{
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xcb, 0x73, 0x1b, 0x49,
0x19, 0xf7, 0xe8, 0x65, 0xe9, 0x93, 0xed, 0xd8, 0x6d, 0xc7, 0x19, 0xcb, 0x76, 0x62, 0x4f, 0x36,
0x94, 0x49, 0x52, 0xca, 0x26, 0x54, 0xc1, 0x3a, 0xd4, 0x56, 0xa1, 0xd8, 0x8a, 0xad, 0xd8, 0x96,
0x55, 0x2d, 0xd9, 0x4b, 0x16, 0xaa, 0x86, 0xb1, 0xd4, 0x11, 0x53, 0xd6, 0x3c, 0x32, 0xd3, 0x72,
0xd6, 0x7f, 0x02, 0x14, 0x9c, 0xb8, 0xc0, 0x9e, 0x38, 0x71, 0xe0, 0x4f, 0x80, 0x13, 0x37, 0xfe,
0x07, 0xce, 0x5c, 0xa8, 0xbd, 0x71, 0x86, 0xa2, 0xba, 0x7b, 0x66, 0xd4, 0x23, 0x8d, 0xfc, 0x4c,
0x8a, 0x4b, 0xa2, 0xee, 0xef, 0xeb, 0xef, 0xd5, 0xbf, 0xef, 0x31, 0x6d, 0x58, 0xea, 0x99, 0x67,
0xe4, 0xd4, 0xa4, 0x7a, 0xbb, 0xe7, 0xf4, 0x3b, 0xba, 0xd1, 0x25, 0x36, 0x2d, 0xbb, 0x9e, 0x43,
0x1d, 0x34, 0x19, 0x90, 0x4a, 0x0f, 0xba, 0x8e, 0xd3, 0xed, 0x91, 0x67, 0x7c, 0xfb, 0xa4, 0xff,
0xee, 0x19, 0x35, 0x2d, 0xe2, 0x53, 0xc3, 0x72, 0x05, 0x67, 0x69, 0xa1, 0xe7, 0x74, 0xbb, 0xc4,
0x7b, 0xe6, 0xb8, 0xd4, 0x74, 0x6c, 0x5f, 0xec, 0x6a, 0xbf, 0x52, 0x00, 0x2a, 0x4c, 0x5e, 0xf5,
0x8c, 0xd8, 0x14, 0x3d, 0x81, 0x0c, 0x3d, 0x77, 0x89, 0xaa, 0xac, 0x29, 0x1b, 0x33, 0x2f, 0xee,
0x95, 0x03, 0xe9, 0xe5, 0x01, 0x4b, 0xeb, 0xdc, 0x25, 0x98, 0x33, 0xa1, 0x05, 0xc8, 0xb6, 0x9d,
0xbe, 0x4d, 0xd5, 0xd4, 0x9a, 0xb2, 0x91, 0xc5, 0x62, 0x81, 0xbe, 0x80, 0x42, 0xa4, 0x5a, 0x4d,
0xaf, 0x29, 0x1b, 0xc5, 0x17, 0xa5, 0xb2, 0x30, 0xae, 0x1c, 0x1a, 0x57, 0x6e, 0x85, 0x1c, 0x78,
0xc0, 0xac, 0xfd, 0x43, 0x81, 0x22, 0x57, 0xd4, 0x24, 0x6d, 0x8f, 0x50, 0x84, 0x20, 0x63, 0x1b,
0x96, 0x30, 0xa6, 0x80, 0xf9, 0x6f, 0xa6, 0xf3, 0xcc, 0xe8, 0xf5, 0x09, 0xd7, 0x39, 0x85, 0xc5,
0x02, 0x6d, 0x02, 0xb4, 0x3d, 0x62, 0x50, 0xd2, 0xd1, 0x0d, 0x7a, 0x15, 0xa5, 0x01, 0x77, 0x85,
0xb2, 0xa3, 0x7d, 0xb7, 0x13, 0x1e, 0xcd, 0x5c, 0x7e, 0x34, 0xe0, 0xae, 0x50, 0xf4, 0x14, 0x32,
0xa7, 0xa6, 0xdd, 0x51, 0xb3, 0x3c, 0x58, 0x6a, 0x3c, 0x58, 0xc2, 0x87, 0x3d, 0xd3, 0xee, 0x60,
0xce, 0xa5, 0xfd, 0x53, 0x01, 0xb4, 0xc5, 0xd5, 0x72, 0x3a, 0x26, 0xef, 0xfb, 0xc4, 0xa7, 0x68,
0x1d, 0x80, 0xdf, 0xa7, 0x3e, 0x70, 0xf5, 0x55, 0x4a, 0x55, 0x70, 0x81, 0xef, 0xd6, 0x99, 0xcf,
0x65, 0x98, 0xf4, 0xb9, 0x34, 0x5f, 0x4d, 0xad, 0xa5, 0x37, 0x8a, 0x2f, 0x16, 0x92, 0x54, 0xe1,
0x90, 0x09, 0xdd, 0x87, 0xbc, 0x47, 0xdc, 0x9e, 0xd9, 0x36, 0x7c, 0x1e, 0x8b, 0x2c, 0x17, 0x18,
0xed, 0xa1, 0x47, 0x30, 0x65, 0x19, 0xdf, 0xe8, 0x11, 0x4f, 0x26, 0xe2, 0x29, 0x5a, 0xc6, 0x37,
0x38, 0x64, 0x5b, 0x86, 0xc9, 0xb6, 0xdb, 0xd7, 0x3d, 0xf2, 0x9e, 0x7b, 0x28, 0xcc, 0xca, 0xb5,
0xdd, 0x3e, 0x26, 0xef, 0x91, 0x0a, 0x93, 0x1e, 0xe9, 0x32, 0x20, 0xa9, 0xb9, 0xb5, 0xf4, 0x46,
0x01, 0x87, 0x4b, 0xed, 0x6f, 0x29, 0x98, 0x8f, 0xf9, 0xe9, 0xbb, 0x8e, 0xed, 0x13, 0xf4, 0x3d,
0xc8, 0x0b, 0x47, 0xcd, 0x4e, 0xe0, 0x66, 0xf1, 0xdb, 0xef, 0x9e, 0x4e, 0xf2, 0xbd, 0xda, 0x36,
0x0e, 0x7e, 0x74, 0xd0, 0x6a, 0x2c, 0x20, 0x29, 0x7e, 0xf7, 0x52, 0x30, 0x16, 0x21, 0xe7, 0x53,
0x83, 0xf6, 0x85, 0x6b, 0x05, 0x1c, 0xac, 0x98, 0x41, 0x67, 0xc4, 0xf3, 0x4d, 0xc7, 0xe6, 0xfe,
0x14, 0x70, 0xb8, 0x44, 0x0f, 0x61, 0xda, 0xf5, 0x88, 0x6f, 0x76, 0x6d, 0xd2, 0xd1, 0xfb, 0x5e,
0x4f, 0x78, 0x83, 0xa7, 0xa2, 0xcd, 0x23, 0xaf, 0x87, 0x66, 0x21, 0x4d, 0x8d, 0xae, 0x9a, 0xe3,
0x24, 0xf6, 0x13, 0x3d, 0x82, 0x19, 0x9f, 0x78, 0x67, 0xc4, 0xd3, 0x43, 0x47, 0x27, 0xb9, 0xa3,
0xd3, 0x62, 0x17, 0x8b, 0x4d, 0xd4, 0x84, 0xc5, 0x81, 0x74, 0xd7, 0xf1, 0x29, 0x0b, 0x18, 0xbb,
0x59, 0x35, 0xcf, 0xb1, 0xb4, 0x1a, 0xdd, 0x55, 0x23, 0x64, 0x6b, 0x38, 0x7e, 0x78, 0xfd, 0x78,
0xc1, 0x4d, 0xd8, 0xd5, 0xfe, 0xa4, 0xc0, 0x42, 0x12, 0x3b, 0x33, 0x93, 0x79, 0x20, 0x32, 0x82,
0xfd, 0x44, 0x15, 0xc8, 0xf1, 0x1c, 0x08, 0xb1, 0xf1, 0xfd, 0x0b, 0xf5, 0x95, 0x8f, 0x39, 0x6f,
0xd5, 0xa6, 0xde, 0x39, 0x0e, 0x0e, 0x96, 0x36, 0xa1, 0x28, 0x6d, 0x33, 0x1d, 0xa7, 0xe4, 0x3c,
0xd4, 0x71, 0x4a, 0xce, 0xe3, 0x49, 0x57, 0x08, 0x92, 0xee, 0x65, 0xea, 0x0b, 0x45, 0xfb, 0x6b,
0x1a, 0xee, 0xf0, 0x6b, 0xde, 0x26, 0x6e, 0xcf, 0x39, 0xb7, 0x58, 0x0d, 0x59, 0x84, 0x9c, 0x88,
0x58, 0x20, 0x22, 0x58, 0xc5, 0x00, 0x90, 0xba, 0x00, 0x00, 0xe3, 0x6e, 0xb8, 0x24, 0xc1, 0x9a,
0x43, 0x56, 0x82, 0xf4, 0x3a, 0x4c, 0x59, 0xa6, 0x3d, 0x80, 0x74, 0x96, 0xd3, 0x8b, 0x96, 0x69,
0x63, 0x99, 0x45, 0x46, 0x7d, 0x2e, 0x60, 0x91, 0x10, 0x7f, 0x6f, 0x80, 0xf8, 0x49, 0xa1, 0x3a,
0x40, 0x3b, 0x23, 0xf4, 0x3d, 0xbd, 0xed, 0xf6, 0xf9, 0xad, 0x32, 0x42, 0xdf, 0xdb, 0x72, 0xfb,
0x21, 0xc1, 0x22, 0x96, 0x5a, 0x88, 0x08, 0x07, 0xc4, 0x62, 0x04, 0x8b, 0x58, 0x5c, 0x14, 0x08,
0x82, 0x45, 0x2c, 0x26, 0x6a, 0x19, 0x0a, 0x8c, 0xd0, 0x33, 0x2d, 0x93, 0xaa, 0x45, 0x4e, 0xca,
0x5b, 0xc4, 0xda, 0x67, 0x6b, 0x46, 0x64, 0x06, 0x08, 0xe2, 0x94, 0x20, 0xb6, 0xdd, 0xbe, 0x20,
0x3e, 0x84, 0xe9, 0x18, 0x20, 0xd5, 0x69, 0x81, 0x63, 0x19, 0x8f, 0xe8, 0x09, 0xe4, 0x08, 0x2b,
0xd3, 0xbe, 0x3a, 0xc3, 0xe1, 0x30, 0x9f, 0x50, 0xc2, 0x71, 0xc0, 0xa2, 0xfd, 0x31, 0x05, 0x05,
0xbe, 0x5d, 0xb3, 0xdf, 0x39, 0x1f, 0x2b, 0x41, 0xa5, 0x44, 0x4c, 0xc7, 0x13, 0xb1, 0x0a, 0x73,
0xe2, 0x60, 0x27, 0x02, 0x0b, 0xbb, 0x49, 0x66, 0xe6, 0x50, 0xf1, 0x1c, 0xa0, 0x09, 0xcf, 0x1a,
0xf1, 0x0d, 0x5f, 0x2e, 0x87, 0xd9, 0xab, 0x94, 0xc3, 0x1f, 0x43, 0x51, 0x28, 0x14, 0x25, 0x3e,
0x77, 0x69, 0x89, 0x87, 0x90, 0xbd, 0x42, 0xb5, 0xaf, 0x61, 0x6e, 0xdf, 0xf4, 0x29, 0x17, 0xec,
0x87, 0x59, 0xb8, 0x3a, 0x5a, 0xb3, 0xe5, 0x08, 0x5c, 0x11, 0xe8, 0xda, 0x4f, 0x00, 0xc9, 0xb2,
0x83, 0x3a, 0xf9, 0x18, 0x72, 0x9c, 0xc1, 0x57, 0x15, 0xee, 0x1d, 0x8a, 0x7b, 0xc7, 0xae, 0x0a,
0x07, 0x1c, 0xda, 0xaf, 0xd3, 0x30, 0xc5, 0x77, 0x8f, 0x83, 0x10, 0x4b, 0xc1, 0x57, 0xe2, 0xc1,
0x57, 0x39, 0x52, 0x3d, 0x12, 0xb4, 0xeb, 0x3c, 0x0e, 0x97, 0xb7, 0x69, 0x9e, 0x43, 0xa1, 0xcd,
0x5c, 0x27, 0xb4, 0xa8, 0x0a, 0x60, 0x50, 0xea, 0x99, 0x27, 0x7d, 0x4a, 0xc2, 0xab, 0x7c, 0x14,
0x77, 0x36, 0x70, 0xab, 0x5c, 0x89, 0xf8, 0x44, 0xe5, 0x92, 0x0e, 0x4a, 0xe5, 0x22, 0x17, 0x2b,
0x17, 0x0b, 0x90, 0x75, 0x3e, 0xd8, 0xc4, 0x0b, 0x52, 0x59, 0x2c, 0x58, 0x11, 0xe9, 0x78, 0x86,
0x69, 0x9b, 0x76, 0x97, 0xa7, 0x72, 0x1e, 0x47, 0xeb, 0xd2, 0x97, 0x70, 0x67, 0x48, 0xd1, 0xb5,
0x6a, 0xa1, 0x01, 0x6a, 0x74, 0x9d, 0x81, 0xe1, 0x11, 0x62, 0x3e, 0x4e, 0x6e, 0x69, 0x75, 0x58,
0x4a, 0x50, 0x11, 0x00, 0xe7, 0x39, 0xe4, 0x83, 0xcb, 0x0e, 0xa1, 0x73, 0x37, 0x31, 0x9a, 0x38,
0x62, 0xd3, 0x7e, 0x9b, 0x02, 0x74, 0xc4, 0xe7, 0x99, 0xd8, 0x4c, 0x72, 0x55, 0x6b, 0xd7, 0x47,
0xad, 0x1d, 0x9e, 0x5d, 0xfe, 0xaf, 0xb3, 0x88, 0x5c, 0x2a, 0x26, 0xaf, 0x50, 0x2a, 0xb4, 0x1a,
0xcc, 0xc7, 0xc2, 0x11, 0x44, 0x56, 0x85, 0x49, 0xbf, 0xdf, 0x6e, 0x13, 0xdf, 0xe7, 0xe1, 0xc8,
0xe3, 0x70, 0xc9, 0x28, 0x16, 0xf1, 0x7d, 0xa3, 0x1b, 0x5e, 0x56, 0xb8, 0xd4, 0xbe, 0x84, 0x79,
0xcc, 0x40, 0xef, 0xd1, 0x9b, 0x84, 0x56, 0x7b, 0x03, 0x0b, 0xf1, 0xe3, 0xb7, 0x30, 0xe5, 0xdf,
0x0a, 0x20, 0x51, 0x40, 0x3f, 0xd5, 0x2d, 0x4b, 0x71, 0x4e, 0x5f, 0x77, 0x42, 0xcd, 0x5c, 0x01,
0x15, 0xd9, 0x4b, 0x51, 0x91, 0x1b, 0x46, 0x85, 0xf6, 0x1f, 0x05, 0xe6, 0x63, 0x5e, 0xdf, 0x3c,
0x82, 0xb1, 0x50, 0xa5, 0x2f, 0x08, 0xd5, 0xc8, 0xa8, 0x99, 0x19, 0x3f, 0x6a, 0x66, 0x07, 0xa3,
0xe6, 0xf8, 0x19, 0x32, 0x77, 0xf3, 0x19, 0xf2, 0xef, 0x0a, 0x2c, 0x49, 0x60, 0x16, 0x57, 0xf0,
0x91, 0x0b, 0x12, 0x5a, 0x81, 0x82, 0x73, 0x46, 0xbc, 0x0f, 0x9e, 0x49, 0x09, 0x8f, 0x4c, 0x1e,
0x0f, 0x36, 0x64, 0x58, 0x64, 0xae, 0x02, 0x0b, 0x3e, 0x39, 0x5a, 0xce, 0x19, 0xe1, 0xdd, 0x80,
0x4f, 0x8e, 0x6c, 0xa5, 0x35, 0xa0, 0x94, 0xe4, 0xc9, 0x2d, 0x52, 0xe2, 0x03, 0x2c, 0x60, 0xa7,
0xd7, 0x3b, 0x31, 0xda, 0xa7, 0x37, 0xca, 0x89, 0x9b, 0xce, 0x40, 0xda, 0x1e, 0xdc, 0x1d, 0x52,
0x7c, 0x0b, 0x2f, 0x7e, 0xc6, 0xf2, 0xba, 0x47, 0x6e, 0x58, 0xbd, 0x2f, 0xe9, 0x35, 0x35, 0x96,
0x3e, 0x92, 0xf0, 0x5b, 0xd8, 0xf9, 0x0b, 0xb8, 0x17, 0xb5, 0xad, 0x4f, 0x82, 0x43, 0xed, 0x8d,
0xd4, 0x7b, 0x87, 0xf1, 0x21, 0xa1, 0x50, 0xb9, 0x4a, 0x13, 0xd8, 0x84, 0xe9, 0x26, 0xa1, 0xd4,
0xb4, 0xbb, 0x7e, 0xc3, 0xf0, 0x0c, 0xeb, 0xf2, 0x77, 0x88, 0x70, 0x0c, 0xd0, 0x76, 0x61, 0x71,
0xab, 0x67, 0x72, 0x99, 0x42, 0x80, 0x64, 0x44, 0xce, 0x65, 0xc2, 0x42, 0x1b, 0x16, 0x23, 0x1b,
0x62, 0xba, 0x70, 0xc0, 0xa5, 0xdd, 0x83, 0xbb, 0xc3, 0x92, 0x44, 0x5a, 0xff, 0x2e, 0x05, 0xc5,
0x86, 0x67, 0x9e, 0x19, 0x94, 0xec, 0x9b, 0xf6, 0x29, 0xda, 0x84, 0x3b, 0xae, 0x58, 0xea, 0x3d,
0xd3, 0x3e, 0x1d, 0xc4, 0x71, 0xee, 0xdb, 0xef, 0x9e, 0x4e, 0xbb, 0x03, 0xce, 0xda, 0x36, 0x8e,
0x2d, 0x3b, 0x91, 0x5f, 0x29, 0xc9, 0xaf, 0xc1, 0xc7, 0x5b, 0x26, 0xf6, 0xf1, 0x86, 0x20, 0xe3,
0x3a, 0x1e, 0xe5, 0x55, 0x6b, 0x1a, 0xf3, 0xdf, 0x6c, 0x96, 0x22, 0x76, 0xc7, 0x75, 0x4c, 0x9b,
0x06, 0xb3, 0x57, 0xb4, 0x46, 0x3f, 0x84, 0xb4, 0xf1, 0xc1, 0x0f, 0xa6, 0xc9, 0xfb, 0x52, 0xfd,
0x8a, 0x0c, 0x28, 0x57, 0xbe, 0x6a, 0x6e, 0x39, 0xf6, 0x3b, 0xb3, 0xcb, 0xca, 0xf6, 0xee, 0x04,
0x66, 0x07, 0x4a, 0x4f, 0xa0, 0x10, 0xed, 0xb3, 0x36, 0x11, 0x29, 0x18, 0xbc, 0x8c, 0x44, 0x7b,
0xaf, 0xf2, 0x90, 0x6b, 0x73, 0x4e, 0xed, 0xf7, 0x29, 0x98, 0x93, 0x64, 0x37, 0xc5, 0x08, 0xb8,
0x19, 0x8d, 0x86, 0xe2, 0x3d, 0x6b, 0x3d, 0xc9, 0x0e, 0xc1, 0x5b, 0x16, 0xff, 0x45, 0xd3, 0x63,
0xfc, 0x59, 0x28, 0x75, 0x8d, 0x67, 0x21, 0xed, 0x37, 0x0a, 0xe4, 0x02, 0x03, 0x1e, 0xc0, 0x72,
0x03, 0xd7, 0x8e, 0x2b, 0xad, 0xaa, 0xbe, 0x5f, 0xab, 0xef, 0xe9, 0xcd, 0x56, 0xa5, 0x75, 0xd4,
0xd4, 0x8f, 0xea, 0x7b, 0xf5, 0xc3, 0xaf, 0xea, 0xb3, 0x13, 0xe3, 0x18, 0x1a, 0xd5, 0xfa, 0x76,
0xad, 0xbe, 0x33, 0xab, 0xa0, 0x75, 0x58, 0x4d, 0x62, 0xa8, 0x1c, 0x57, 0x6a, 0xfb, 0x95, 0x57,
0xfb, 0xd5, 0xd9, 0x14, 0x5a, 0x85, 0xa5, 0x24, 0x96, 0x2a, 0xc6, 0x87, 0x78, 0x36, 0xad, 0xfd,
0x57, 0x01, 0x55, 0xbc, 0xc7, 0x48, 0x4e, 0x87, 0xe9, 0x97, 0x04, 0xed, 0x01, 0x04, 0xd2, 0x89,
0x10, 0xc8, 0x8c, 0x81, 0x40, 0x76, 0x08, 0x02, 0x35, 0x01, 0x01, 0x11, 0xbb, 0xe7, 0x51, 0xe8,
0xc7, 0xd9, 0xc2, 0xf1, 0xc0, 0x69, 0xa3, 0xa8, 0x78, 0x0e, 0x77, 0x86, 0xa8, 0xd7, 0xc0, 0x46,
0x0b, 0x96, 0x12, 0x74, 0x06, 0x79, 0xf9, 0x23, 0x98, 0x92, 0xd3, 0x87, 0x8b, 0x92, 0x2b, 0x84,
0x7c, 0xa6, 0x28, 0xa5, 0x8f, 0x76, 0x0c, 0x4b, 0xdb, 0xc4, 0xa7, 0x9e, 0x73, 0x9e, 0x10, 0xd6,
0x9b, 0x27, 0xa5, 0xb6, 0x02, 0xa5, 0x24, 0xb9, 0xc2, 0x5c, 0x6d, 0x49, 0x54, 0x52, 0x89, 0x14,
0x15, 0x86, 0xd7, 0xa2, 0x04, 0xc6, 0x49, 0xd1, 0x37, 0x65, 0xd6, 0xa4, 0xc4, 0x1a, 0x2d, 0x80,
0xb2, 0x0e, 0xc1, 0xa2, 0xfd, 0x14, 0x96, 0x77, 0x08, 0x1d, 0x49, 0x90, 0x8f, 0xe0, 0x5a, 0x03,
0x56, 0x92, 0x25, 0x07, 0x56, 0x7e, 0x1e, 0xd6, 0x54, 0x25, 0x48, 0xb7, 0xb1, 0xd9, 0x1a, 0xd4,
0xdb, 0xc7, 0x4e, 0xf0, 0xfa, 0x34, 0x78, 0x6c, 0x65, 0xd9, 0x50, 0xd9, 0xa9, 0xd6, 0x5b, 0x7a,
0xb3, 0xba, 0x85, 0xab, 0x2d, 0x7d, 0xaf, 0x56, 0xdf, 0x96, 0x12, 0x6e, 0x1d, 0x56, 0x47, 0xc9,
0xd5, 0xfa, 0x71, 0x0d, 0x1f, 0xd6, 0x0f, 0xaa, 0xf5, 0xd6, 0xac, 0x82, 0x4a, 0xb0, 0x38, 0xca,
0xf2, 0xba, 0xc6, 0x72, 0xed, 0xf1, 0x5f, 0x14, 0x98, 0x89, 0xbf, 0x85, 0xa3, 0x15, 0x50, 0x05,
0x7b, 0xf5, 0x98, 0xfd, 0xdb, 0x7a, 0xdb, 0xa8, 0x4a, 0xfa, 0x36, 0xe0, 0xb3, 0x11, 0x6a, 0xa5,
0xd1, 0xd8, 0xaf, 0x6d, 0x55, 0x5a, 0xb5, 0xc3, 0xba, 0xbe, 0x85, 0x2b, 0xcd, 0xdd, 0xea, 0xf6,
0xac, 0x82, 0xca, 0xf0, 0x78, 0x84, 0x13, 0x57, 0x9b, 0xad, 0x0a, 0x6e, 0x55, 0xb7, 0xf5, 0xdd,
0xda, 0xce, 0xae, 0xbe, 0x5d, 0x6b, 0xee, 0xe9, 0x47, 0xcd, 0xca, 0x0e, 0x4b, 0xfb, 0xcf, 0xe1,
0xe9, 0x65, 0xfc, 0x07, 0xd5, 0x83, 0x43, 0xfc, 0x36, 0x38, 0x91, 0x7e, 0xf1, 0x07, 0x00, 0xd8,
0xea, 0x39, 0xfd, 0x0e, 0xf7, 0x00, 0xbd, 0x81, 0xa2, 0xf4, 0x4e, 0x8b, 0x96, 0x87, 0x32, 0x54,
0x9e, 0x29, 0x4a, 0x2b, 0xc9, 0xc4, 0x00, 0x95, 0x13, 0x68, 0x07, 0x60, 0xf0, 0x94, 0x81, 0x06,
0x37, 0x37, 0xf2, 0x76, 0x52, 0x5a, 0x4e, 0xa4, 0x45, 0x82, 0x7e, 0x2e, 0xbd, 0xb7, 0x84, 0x5f,
0xb8, 0x68, 0x7d, 0xf4, 0xcc, 0xd0, 0x07, 0x76, 0x49, 0xbb, 0x88, 0x25, 0x92, 0xfe, 0x16, 0x66,
0x87, 0xc7, 0x04, 0xb4, 0x36, 0x7a, 0x32, 0x3e, 0xa3, 0x94, 0xd6, 0x2f, 0xe0, 0x88, 0x44, 0xbf,
0x81, 0xa2, 0x34, 0xa3, 0x4a, 0xd1, 0x1c, 0xfd, 0xbe, 0x96, 0xa2, 0x99, 0xf0, 0xb5, 0xa9, 0x4d,
0xa0, 0x03, 0x98, 0x92, 0x3f, 0xfe, 0xd0, 0x80, 0x3f, 0xe1, 0x93, 0xb2, 0xb4, 0x3a, 0x86, 0x2a,
0x9b, 0x26, 0x7d, 0x08, 0x49, 0xa6, 0x8d, 0x7e, 0x14, 0x4a, 0xa6, 0x25, 0x7c, 0x3b, 0x69, 0x13,
0x48, 0x8f, 0x3d, 0x18, 0x84, 0x31, 0xd4, 0x92, 0x1c, 0x1a, 0x8a, 0xe2, 0xc3, 0x0b, 0x79, 0x22,
0x05, 0x0d, 0x98, 0x8e, 0x0d, 0xc8, 0x48, 0x72, 0x2f, 0x61, 0x62, 0x2f, 0xdd, 0x1f, 0x47, 0x8e,
0xbb, 0x1f, 0x0d, 0xb2, 0x31, 0xf7, 0x87, 0x67, 0xe7, 0x98, 0xfb, 0x23, 0xb3, 0xaf, 0x36, 0x81,
0x8e, 0x61, 0x6e, 0x87, 0xd0, 0xf8, 0x64, 0x86, 0x06, 0x26, 0x24, 0x8e, 0x6c, 0xa5, 0x07, 0x63,
0xe9, 0x32, 0xec, 0x47, 0x7a, 0x94, 0x04, 0xfb, 0x71, 0x3d, 0x53, 0x82, 0xfd, 0xd8, 0x16, 0x27,
0x2e, 0x6d, 0xb4, 0xa7, 0x48, 0x97, 0x36, 0xb6, 0x91, 0x49, 0x97, 0x76, 0x41, 0x53, 0x8a, 0xf2,
0x4a, 0xee, 0x3d, 0x43, 0x79, 0x95, 0xd0, 0xb1, 0x86, 0xf2, 0x2a, 0xa9, 0x71, 0x69, 0x13, 0x88,
0xc0, 0x42, 0x52, 0xd3, 0x40, 0x9f, 0x45, 0x87, 0x2f, 0xe8, 0x56, 0xa5, 0x47, 0x97, 0x70, 0x85,
0x6a, 0x5e, 0xbd, 0xfe, 0xfa, 0x61, 0xd7, 0xa4, 0xbf, 0xec, 0x9f, 0x94, 0xdb, 0x8e, 0xf5, 0x2c,
0x38, 0x24, 0xfe, 0x98, 0xda, 0x76, 0x7a, 0xe1, 0xc6, 0x9f, 0x53, 0xd3, 0xfb, 0xe6, 0x19, 0xd9,
0xe3, 0x3d, 0xc9, 0xa1, 0xce, 0xbf, 0x52, 0x33, 0xc1, 0xfa, 0xe5, 0x4b, 0xbe, 0x71, 0x92, 0xe3,
0x47, 0x7e, 0xf0, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x85, 0xa7, 0x2b, 0x1e, 0xb3, 0x1d, 0x00,
0x00,
}