From 09df89976edcb39effa048964e3fb0858ab3fe44 Mon Sep 17 00:00:00 2001 From: Valery Piashchynski Date: Wed, 10 Jun 2026 22:39:04 +0200 Subject: [PATCH] feature: add centrifugo api and temporal service connect packages --- Makefile | 2 +- centrifugo/api/v1/api.pb.go | 4 +- centrifugo/api/v1/apiV1connect/api.connect.go | 1027 +++++++++++++++++ centrifugo/api/v1/api_grpc.pb.go | 2 +- centrifugo/proxy/v1/proxy.pb.go | 4 +- centrifugo/proxy/v1/proxy_grpc.pb.go | 2 +- proto/api | 2 +- temporal/v1/service.pb.go | 402 +++++++ temporal/v1/service_grpc.pb.go | 395 +++++++ .../v1/temporalV1connect/service.connect.go | 316 +++++ 10 files changed, 2148 insertions(+), 8 deletions(-) create mode 100644 centrifugo/api/v1/apiV1connect/api.connect.go create mode 100644 temporal/v1/service.pb.go create mode 100644 temporal/v1/service_grpc.pb.go create mode 100644 temporal/v1/temporalV1connect/service.connect.go diff --git a/Makefile b/Makefile index 30e336a..0a87f1d 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ update-proto-submodule: generate: buf generate proto/api/roadrunner/api - buf generate --template buf.gen.connectrpc.yaml --exclude-path proto/api/roadrunner/api/centrifugo proto/api/roadrunner/api + buf generate --template buf.gen.connectrpc.yaml --exclude-path proto/api/roadrunner/api/centrifugo/proxy proto/api/roadrunner/api clean: rm -rf applogger centrifugo common http jobs kv lock service status temporal websockets diff --git a/centrifugo/api/v1/api.pb.go b/centrifugo/api/v1/api.pb.go index 728e41f..ceec437 100644 --- a/centrifugo/api/v1/api.pb.go +++ b/centrifugo/api/v1/api.pb.go @@ -4,7 +4,7 @@ // protoc (unknown) // source: centrifugo/api/v1/api.proto -package v1 +package apiV1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -8914,7 +8914,7 @@ const file_centrifugo_api_v1_api_proto_rawDesc = "" + "\x14SendPushNotification\x127.centrifugal.centrifugo.api.SendPushNotificationRequest\x1a8.centrifugal.centrifugo.api.SendPushNotificationResponse\"\x00\x12\x7f\n" + "\x10UpdatePushStatus\x123.centrifugal.centrifugo.api.UpdatePushStatusRequest\x1a4.centrifugal.centrifugo.api.UpdatePushStatusResponse\"\x00\x12m\n" + "\n" + - "CancelPush\x12-.centrifugal.centrifugo.api.CancelPushRequest\x1a..centrifugal.centrifugo.api.CancelPushResponse\"\x00BgZ\x11centrifugo/api/v1\xca\x02!RoadRunner\\Centrifugal\\API\\DTO\\V1\xe2\x02-RoadRunner\\Centrifugal\\API\\DTO\\V1\\GPBMetadatab\x06proto3" + "CancelPush\x12-.centrifugal.centrifugo.api.CancelPushRequest\x1a..centrifugal.centrifugo.api.CancelPushResponse\"\x00B\x94\x01Z>github.com/roadrunner-server/api-go/v6/centrifugo/api/v1;apiV1\xca\x02!RoadRunner\\Centrifugal\\API\\DTO\\V1\xe2\x02-RoadRunner\\Centrifugal\\API\\DTO\\V1\\GPBMetadatab\x06proto3" var ( file_centrifugo_api_v1_api_proto_rawDescOnce sync.Once diff --git a/centrifugo/api/v1/apiV1connect/api.connect.go b/centrifugo/api/v1/apiV1connect/api.connect.go new file mode 100644 index 0000000..87e2730 --- /dev/null +++ b/centrifugo/api/v1/apiV1connect/api.connect.go @@ -0,0 +1,1027 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: centrifugo/api/v1/api.proto + +package apiV1connect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + v1 "github.com/roadrunner-server/api-go/v6/centrifugo/api/v1" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // CentrifugoApiName is the fully-qualified name of the CentrifugoApi service. + CentrifugoApiName = "centrifugal.centrifugo.api.CentrifugoApi" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // CentrifugoApiBatchProcedure is the fully-qualified name of the CentrifugoApi's Batch RPC. + CentrifugoApiBatchProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/Batch" + // CentrifugoApiPublishProcedure is the fully-qualified name of the CentrifugoApi's Publish RPC. + CentrifugoApiPublishProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/Publish" + // CentrifugoApiBroadcastProcedure is the fully-qualified name of the CentrifugoApi's Broadcast RPC. + CentrifugoApiBroadcastProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/Broadcast" + // CentrifugoApiSubscribeProcedure is the fully-qualified name of the CentrifugoApi's Subscribe RPC. + CentrifugoApiSubscribeProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/Subscribe" + // CentrifugoApiUnsubscribeProcedure is the fully-qualified name of the CentrifugoApi's Unsubscribe + // RPC. + CentrifugoApiUnsubscribeProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/Unsubscribe" + // CentrifugoApiDisconnectProcedure is the fully-qualified name of the CentrifugoApi's Disconnect + // RPC. + CentrifugoApiDisconnectProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/Disconnect" + // CentrifugoApiPresenceProcedure is the fully-qualified name of the CentrifugoApi's Presence RPC. + CentrifugoApiPresenceProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/Presence" + // CentrifugoApiPresenceStatsProcedure is the fully-qualified name of the CentrifugoApi's + // PresenceStats RPC. + CentrifugoApiPresenceStatsProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/PresenceStats" + // CentrifugoApiHistoryProcedure is the fully-qualified name of the CentrifugoApi's History RPC. + CentrifugoApiHistoryProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/History" + // CentrifugoApiHistoryRemoveProcedure is the fully-qualified name of the CentrifugoApi's + // HistoryRemove RPC. + CentrifugoApiHistoryRemoveProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/HistoryRemove" + // CentrifugoApiInfoProcedure is the fully-qualified name of the CentrifugoApi's Info RPC. + CentrifugoApiInfoProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/Info" + // CentrifugoApiRPCProcedure is the fully-qualified name of the CentrifugoApi's RPC RPC. + CentrifugoApiRPCProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/RPC" + // CentrifugoApiRefreshProcedure is the fully-qualified name of the CentrifugoApi's Refresh RPC. + CentrifugoApiRefreshProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/Refresh" + // CentrifugoApiChannelsProcedure is the fully-qualified name of the CentrifugoApi's Channels RPC. + CentrifugoApiChannelsProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/Channels" + // CentrifugoApiConnectionsProcedure is the fully-qualified name of the CentrifugoApi's Connections + // RPC. + CentrifugoApiConnectionsProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/Connections" + // CentrifugoApiUpdateUserStatusProcedure is the fully-qualified name of the CentrifugoApi's + // UpdateUserStatus RPC. + CentrifugoApiUpdateUserStatusProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/UpdateUserStatus" + // CentrifugoApiGetUserStatusProcedure is the fully-qualified name of the CentrifugoApi's + // GetUserStatus RPC. + CentrifugoApiGetUserStatusProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/GetUserStatus" + // CentrifugoApiDeleteUserStatusProcedure is the fully-qualified name of the CentrifugoApi's + // DeleteUserStatus RPC. + CentrifugoApiDeleteUserStatusProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/DeleteUserStatus" + // CentrifugoApiBlockUserProcedure is the fully-qualified name of the CentrifugoApi's BlockUser RPC. + CentrifugoApiBlockUserProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/BlockUser" + // CentrifugoApiUnblockUserProcedure is the fully-qualified name of the CentrifugoApi's UnblockUser + // RPC. + CentrifugoApiUnblockUserProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/UnblockUser" + // CentrifugoApiRevokeTokenProcedure is the fully-qualified name of the CentrifugoApi's RevokeToken + // RPC. + CentrifugoApiRevokeTokenProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/RevokeToken" + // CentrifugoApiInvalidateUserTokensProcedure is the fully-qualified name of the CentrifugoApi's + // InvalidateUserTokens RPC. + CentrifugoApiInvalidateUserTokensProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/InvalidateUserTokens" + // CentrifugoApiDeviceRegisterProcedure is the fully-qualified name of the CentrifugoApi's + // DeviceRegister RPC. + CentrifugoApiDeviceRegisterProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/DeviceRegister" + // CentrifugoApiDeviceUpdateProcedure is the fully-qualified name of the CentrifugoApi's + // DeviceUpdate RPC. + CentrifugoApiDeviceUpdateProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/DeviceUpdate" + // CentrifugoApiDeviceRemoveProcedure is the fully-qualified name of the CentrifugoApi's + // DeviceRemove RPC. + CentrifugoApiDeviceRemoveProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/DeviceRemove" + // CentrifugoApiDeviceListProcedure is the fully-qualified name of the CentrifugoApi's DeviceList + // RPC. + CentrifugoApiDeviceListProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/DeviceList" + // CentrifugoApiDeviceTopicListProcedure is the fully-qualified name of the CentrifugoApi's + // DeviceTopicList RPC. + CentrifugoApiDeviceTopicListProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/DeviceTopicList" + // CentrifugoApiDeviceTopicUpdateProcedure is the fully-qualified name of the CentrifugoApi's + // DeviceTopicUpdate RPC. + CentrifugoApiDeviceTopicUpdateProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/DeviceTopicUpdate" + // CentrifugoApiUserTopicListProcedure is the fully-qualified name of the CentrifugoApi's + // UserTopicList RPC. + CentrifugoApiUserTopicListProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/UserTopicList" + // CentrifugoApiUserTopicUpdateProcedure is the fully-qualified name of the CentrifugoApi's + // UserTopicUpdate RPC. + CentrifugoApiUserTopicUpdateProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/UserTopicUpdate" + // CentrifugoApiSendPushNotificationProcedure is the fully-qualified name of the CentrifugoApi's + // SendPushNotification RPC. + CentrifugoApiSendPushNotificationProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/SendPushNotification" + // CentrifugoApiUpdatePushStatusProcedure is the fully-qualified name of the CentrifugoApi's + // UpdatePushStatus RPC. + CentrifugoApiUpdatePushStatusProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/UpdatePushStatus" + // CentrifugoApiCancelPushProcedure is the fully-qualified name of the CentrifugoApi's CancelPush + // RPC. + CentrifugoApiCancelPushProcedure = "/centrifugal.centrifugo.api.CentrifugoApi/CancelPush" +) + +// CentrifugoApiClient is a client for the centrifugal.centrifugo.api.CentrifugoApi service. +type CentrifugoApiClient interface { + Batch(context.Context, *connect.Request[v1.BatchRequest]) (*connect.Response[v1.BatchResponse], error) + Publish(context.Context, *connect.Request[v1.PublishRequest]) (*connect.Response[v1.PublishResponse], error) + Broadcast(context.Context, *connect.Request[v1.BroadcastRequest]) (*connect.Response[v1.BroadcastResponse], error) + Subscribe(context.Context, *connect.Request[v1.SubscribeRequest]) (*connect.Response[v1.SubscribeResponse], error) + Unsubscribe(context.Context, *connect.Request[v1.UnsubscribeRequest]) (*connect.Response[v1.UnsubscribeResponse], error) + Disconnect(context.Context, *connect.Request[v1.DisconnectRequest]) (*connect.Response[v1.DisconnectResponse], error) + Presence(context.Context, *connect.Request[v1.PresenceRequest]) (*connect.Response[v1.PresenceResponse], error) + PresenceStats(context.Context, *connect.Request[v1.PresenceStatsRequest]) (*connect.Response[v1.PresenceStatsResponse], error) + History(context.Context, *connect.Request[v1.HistoryRequest]) (*connect.Response[v1.HistoryResponse], error) + HistoryRemove(context.Context, *connect.Request[v1.HistoryRemoveRequest]) (*connect.Response[v1.HistoryRemoveResponse], error) + Info(context.Context, *connect.Request[v1.InfoRequest]) (*connect.Response[v1.InfoResponse], error) + RPC(context.Context, *connect.Request[v1.RPCRequest]) (*connect.Response[v1.RPCResponse], error) + Refresh(context.Context, *connect.Request[v1.RefreshRequest]) (*connect.Response[v1.RefreshResponse], error) + Channels(context.Context, *connect.Request[v1.ChannelsRequest]) (*connect.Response[v1.ChannelsResponse], error) + Connections(context.Context, *connect.Request[v1.ConnectionsRequest]) (*connect.Response[v1.ConnectionsResponse], error) + UpdateUserStatus(context.Context, *connect.Request[v1.UpdateUserStatusRequest]) (*connect.Response[v1.UpdateUserStatusResponse], error) + GetUserStatus(context.Context, *connect.Request[v1.GetUserStatusRequest]) (*connect.Response[v1.GetUserStatusResponse], error) + DeleteUserStatus(context.Context, *connect.Request[v1.DeleteUserStatusRequest]) (*connect.Response[v1.DeleteUserStatusResponse], error) + BlockUser(context.Context, *connect.Request[v1.BlockUserRequest]) (*connect.Response[v1.BlockUserResponse], error) + UnblockUser(context.Context, *connect.Request[v1.UnblockUserRequest]) (*connect.Response[v1.UnblockUserResponse], error) + RevokeToken(context.Context, *connect.Request[v1.RevokeTokenRequest]) (*connect.Response[v1.RevokeTokenResponse], error) + InvalidateUserTokens(context.Context, *connect.Request[v1.InvalidateUserTokensRequest]) (*connect.Response[v1.InvalidateUserTokensResponse], error) + DeviceRegister(context.Context, *connect.Request[v1.DeviceRegisterRequest]) (*connect.Response[v1.DeviceRegisterResponse], error) + DeviceUpdate(context.Context, *connect.Request[v1.DeviceUpdateRequest]) (*connect.Response[v1.DeviceUpdateResponse], error) + DeviceRemove(context.Context, *connect.Request[v1.DeviceRemoveRequest]) (*connect.Response[v1.DeviceRemoveResponse], error) + DeviceList(context.Context, *connect.Request[v1.DeviceListRequest]) (*connect.Response[v1.DeviceListResponse], error) + DeviceTopicList(context.Context, *connect.Request[v1.DeviceTopicListRequest]) (*connect.Response[v1.DeviceTopicListResponse], error) + DeviceTopicUpdate(context.Context, *connect.Request[v1.DeviceTopicUpdateRequest]) (*connect.Response[v1.DeviceTopicUpdateResponse], error) + UserTopicList(context.Context, *connect.Request[v1.UserTopicListRequest]) (*connect.Response[v1.UserTopicListResponse], error) + UserTopicUpdate(context.Context, *connect.Request[v1.UserTopicUpdateRequest]) (*connect.Response[v1.UserTopicUpdateResponse], error) + SendPushNotification(context.Context, *connect.Request[v1.SendPushNotificationRequest]) (*connect.Response[v1.SendPushNotificationResponse], error) + UpdatePushStatus(context.Context, *connect.Request[v1.UpdatePushStatusRequest]) (*connect.Response[v1.UpdatePushStatusResponse], error) + CancelPush(context.Context, *connect.Request[v1.CancelPushRequest]) (*connect.Response[v1.CancelPushResponse], error) +} + +// NewCentrifugoApiClient constructs a client for the centrifugal.centrifugo.api.CentrifugoApi +// service. By default, it uses the Connect protocol with the binary Protobuf Codec, asks for +// gzipped responses, and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply +// the connect.WithGRPC() or connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewCentrifugoApiClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) CentrifugoApiClient { + baseURL = strings.TrimRight(baseURL, "/") + centrifugoApiMethods := v1.File_centrifugo_api_v1_api_proto.Services().ByName("CentrifugoApi").Methods() + return ¢rifugoApiClient{ + batch: connect.NewClient[v1.BatchRequest, v1.BatchResponse]( + httpClient, + baseURL+CentrifugoApiBatchProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("Batch")), + connect.WithClientOptions(opts...), + ), + publish: connect.NewClient[v1.PublishRequest, v1.PublishResponse]( + httpClient, + baseURL+CentrifugoApiPublishProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("Publish")), + connect.WithClientOptions(opts...), + ), + broadcast: connect.NewClient[v1.BroadcastRequest, v1.BroadcastResponse]( + httpClient, + baseURL+CentrifugoApiBroadcastProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("Broadcast")), + connect.WithClientOptions(opts...), + ), + subscribe: connect.NewClient[v1.SubscribeRequest, v1.SubscribeResponse]( + httpClient, + baseURL+CentrifugoApiSubscribeProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("Subscribe")), + connect.WithClientOptions(opts...), + ), + unsubscribe: connect.NewClient[v1.UnsubscribeRequest, v1.UnsubscribeResponse]( + httpClient, + baseURL+CentrifugoApiUnsubscribeProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("Unsubscribe")), + connect.WithClientOptions(opts...), + ), + disconnect: connect.NewClient[v1.DisconnectRequest, v1.DisconnectResponse]( + httpClient, + baseURL+CentrifugoApiDisconnectProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("Disconnect")), + connect.WithClientOptions(opts...), + ), + presence: connect.NewClient[v1.PresenceRequest, v1.PresenceResponse]( + httpClient, + baseURL+CentrifugoApiPresenceProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("Presence")), + connect.WithClientOptions(opts...), + ), + presenceStats: connect.NewClient[v1.PresenceStatsRequest, v1.PresenceStatsResponse]( + httpClient, + baseURL+CentrifugoApiPresenceStatsProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("PresenceStats")), + connect.WithClientOptions(opts...), + ), + history: connect.NewClient[v1.HistoryRequest, v1.HistoryResponse]( + httpClient, + baseURL+CentrifugoApiHistoryProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("History")), + connect.WithClientOptions(opts...), + ), + historyRemove: connect.NewClient[v1.HistoryRemoveRequest, v1.HistoryRemoveResponse]( + httpClient, + baseURL+CentrifugoApiHistoryRemoveProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("HistoryRemove")), + connect.WithClientOptions(opts...), + ), + info: connect.NewClient[v1.InfoRequest, v1.InfoResponse]( + httpClient, + baseURL+CentrifugoApiInfoProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("Info")), + connect.WithClientOptions(opts...), + ), + rPC: connect.NewClient[v1.RPCRequest, v1.RPCResponse]( + httpClient, + baseURL+CentrifugoApiRPCProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("RPC")), + connect.WithClientOptions(opts...), + ), + refresh: connect.NewClient[v1.RefreshRequest, v1.RefreshResponse]( + httpClient, + baseURL+CentrifugoApiRefreshProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("Refresh")), + connect.WithClientOptions(opts...), + ), + channels: connect.NewClient[v1.ChannelsRequest, v1.ChannelsResponse]( + httpClient, + baseURL+CentrifugoApiChannelsProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("Channels")), + connect.WithClientOptions(opts...), + ), + connections: connect.NewClient[v1.ConnectionsRequest, v1.ConnectionsResponse]( + httpClient, + baseURL+CentrifugoApiConnectionsProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("Connections")), + connect.WithClientOptions(opts...), + ), + updateUserStatus: connect.NewClient[v1.UpdateUserStatusRequest, v1.UpdateUserStatusResponse]( + httpClient, + baseURL+CentrifugoApiUpdateUserStatusProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("UpdateUserStatus")), + connect.WithClientOptions(opts...), + ), + getUserStatus: connect.NewClient[v1.GetUserStatusRequest, v1.GetUserStatusResponse]( + httpClient, + baseURL+CentrifugoApiGetUserStatusProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("GetUserStatus")), + connect.WithClientOptions(opts...), + ), + deleteUserStatus: connect.NewClient[v1.DeleteUserStatusRequest, v1.DeleteUserStatusResponse]( + httpClient, + baseURL+CentrifugoApiDeleteUserStatusProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("DeleteUserStatus")), + connect.WithClientOptions(opts...), + ), + blockUser: connect.NewClient[v1.BlockUserRequest, v1.BlockUserResponse]( + httpClient, + baseURL+CentrifugoApiBlockUserProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("BlockUser")), + connect.WithClientOptions(opts...), + ), + unblockUser: connect.NewClient[v1.UnblockUserRequest, v1.UnblockUserResponse]( + httpClient, + baseURL+CentrifugoApiUnblockUserProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("UnblockUser")), + connect.WithClientOptions(opts...), + ), + revokeToken: connect.NewClient[v1.RevokeTokenRequest, v1.RevokeTokenResponse]( + httpClient, + baseURL+CentrifugoApiRevokeTokenProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("RevokeToken")), + connect.WithClientOptions(opts...), + ), + invalidateUserTokens: connect.NewClient[v1.InvalidateUserTokensRequest, v1.InvalidateUserTokensResponse]( + httpClient, + baseURL+CentrifugoApiInvalidateUserTokensProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("InvalidateUserTokens")), + connect.WithClientOptions(opts...), + ), + deviceRegister: connect.NewClient[v1.DeviceRegisterRequest, v1.DeviceRegisterResponse]( + httpClient, + baseURL+CentrifugoApiDeviceRegisterProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("DeviceRegister")), + connect.WithClientOptions(opts...), + ), + deviceUpdate: connect.NewClient[v1.DeviceUpdateRequest, v1.DeviceUpdateResponse]( + httpClient, + baseURL+CentrifugoApiDeviceUpdateProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("DeviceUpdate")), + connect.WithClientOptions(opts...), + ), + deviceRemove: connect.NewClient[v1.DeviceRemoveRequest, v1.DeviceRemoveResponse]( + httpClient, + baseURL+CentrifugoApiDeviceRemoveProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("DeviceRemove")), + connect.WithClientOptions(opts...), + ), + deviceList: connect.NewClient[v1.DeviceListRequest, v1.DeviceListResponse]( + httpClient, + baseURL+CentrifugoApiDeviceListProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("DeviceList")), + connect.WithClientOptions(opts...), + ), + deviceTopicList: connect.NewClient[v1.DeviceTopicListRequest, v1.DeviceTopicListResponse]( + httpClient, + baseURL+CentrifugoApiDeviceTopicListProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("DeviceTopicList")), + connect.WithClientOptions(opts...), + ), + deviceTopicUpdate: connect.NewClient[v1.DeviceTopicUpdateRequest, v1.DeviceTopicUpdateResponse]( + httpClient, + baseURL+CentrifugoApiDeviceTopicUpdateProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("DeviceTopicUpdate")), + connect.WithClientOptions(opts...), + ), + userTopicList: connect.NewClient[v1.UserTopicListRequest, v1.UserTopicListResponse]( + httpClient, + baseURL+CentrifugoApiUserTopicListProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("UserTopicList")), + connect.WithClientOptions(opts...), + ), + userTopicUpdate: connect.NewClient[v1.UserTopicUpdateRequest, v1.UserTopicUpdateResponse]( + httpClient, + baseURL+CentrifugoApiUserTopicUpdateProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("UserTopicUpdate")), + connect.WithClientOptions(opts...), + ), + sendPushNotification: connect.NewClient[v1.SendPushNotificationRequest, v1.SendPushNotificationResponse]( + httpClient, + baseURL+CentrifugoApiSendPushNotificationProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("SendPushNotification")), + connect.WithClientOptions(opts...), + ), + updatePushStatus: connect.NewClient[v1.UpdatePushStatusRequest, v1.UpdatePushStatusResponse]( + httpClient, + baseURL+CentrifugoApiUpdatePushStatusProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("UpdatePushStatus")), + connect.WithClientOptions(opts...), + ), + cancelPush: connect.NewClient[v1.CancelPushRequest, v1.CancelPushResponse]( + httpClient, + baseURL+CentrifugoApiCancelPushProcedure, + connect.WithSchema(centrifugoApiMethods.ByName("CancelPush")), + connect.WithClientOptions(opts...), + ), + } +} + +// centrifugoApiClient implements CentrifugoApiClient. +type centrifugoApiClient struct { + batch *connect.Client[v1.BatchRequest, v1.BatchResponse] + publish *connect.Client[v1.PublishRequest, v1.PublishResponse] + broadcast *connect.Client[v1.BroadcastRequest, v1.BroadcastResponse] + subscribe *connect.Client[v1.SubscribeRequest, v1.SubscribeResponse] + unsubscribe *connect.Client[v1.UnsubscribeRequest, v1.UnsubscribeResponse] + disconnect *connect.Client[v1.DisconnectRequest, v1.DisconnectResponse] + presence *connect.Client[v1.PresenceRequest, v1.PresenceResponse] + presenceStats *connect.Client[v1.PresenceStatsRequest, v1.PresenceStatsResponse] + history *connect.Client[v1.HistoryRequest, v1.HistoryResponse] + historyRemove *connect.Client[v1.HistoryRemoveRequest, v1.HistoryRemoveResponse] + info *connect.Client[v1.InfoRequest, v1.InfoResponse] + rPC *connect.Client[v1.RPCRequest, v1.RPCResponse] + refresh *connect.Client[v1.RefreshRequest, v1.RefreshResponse] + channels *connect.Client[v1.ChannelsRequest, v1.ChannelsResponse] + connections *connect.Client[v1.ConnectionsRequest, v1.ConnectionsResponse] + updateUserStatus *connect.Client[v1.UpdateUserStatusRequest, v1.UpdateUserStatusResponse] + getUserStatus *connect.Client[v1.GetUserStatusRequest, v1.GetUserStatusResponse] + deleteUserStatus *connect.Client[v1.DeleteUserStatusRequest, v1.DeleteUserStatusResponse] + blockUser *connect.Client[v1.BlockUserRequest, v1.BlockUserResponse] + unblockUser *connect.Client[v1.UnblockUserRequest, v1.UnblockUserResponse] + revokeToken *connect.Client[v1.RevokeTokenRequest, v1.RevokeTokenResponse] + invalidateUserTokens *connect.Client[v1.InvalidateUserTokensRequest, v1.InvalidateUserTokensResponse] + deviceRegister *connect.Client[v1.DeviceRegisterRequest, v1.DeviceRegisterResponse] + deviceUpdate *connect.Client[v1.DeviceUpdateRequest, v1.DeviceUpdateResponse] + deviceRemove *connect.Client[v1.DeviceRemoveRequest, v1.DeviceRemoveResponse] + deviceList *connect.Client[v1.DeviceListRequest, v1.DeviceListResponse] + deviceTopicList *connect.Client[v1.DeviceTopicListRequest, v1.DeviceTopicListResponse] + deviceTopicUpdate *connect.Client[v1.DeviceTopicUpdateRequest, v1.DeviceTopicUpdateResponse] + userTopicList *connect.Client[v1.UserTopicListRequest, v1.UserTopicListResponse] + userTopicUpdate *connect.Client[v1.UserTopicUpdateRequest, v1.UserTopicUpdateResponse] + sendPushNotification *connect.Client[v1.SendPushNotificationRequest, v1.SendPushNotificationResponse] + updatePushStatus *connect.Client[v1.UpdatePushStatusRequest, v1.UpdatePushStatusResponse] + cancelPush *connect.Client[v1.CancelPushRequest, v1.CancelPushResponse] +} + +// Batch calls centrifugal.centrifugo.api.CentrifugoApi.Batch. +func (c *centrifugoApiClient) Batch(ctx context.Context, req *connect.Request[v1.BatchRequest]) (*connect.Response[v1.BatchResponse], error) { + return c.batch.CallUnary(ctx, req) +} + +// Publish calls centrifugal.centrifugo.api.CentrifugoApi.Publish. +func (c *centrifugoApiClient) Publish(ctx context.Context, req *connect.Request[v1.PublishRequest]) (*connect.Response[v1.PublishResponse], error) { + return c.publish.CallUnary(ctx, req) +} + +// Broadcast calls centrifugal.centrifugo.api.CentrifugoApi.Broadcast. +func (c *centrifugoApiClient) Broadcast(ctx context.Context, req *connect.Request[v1.BroadcastRequest]) (*connect.Response[v1.BroadcastResponse], error) { + return c.broadcast.CallUnary(ctx, req) +} + +// Subscribe calls centrifugal.centrifugo.api.CentrifugoApi.Subscribe. +func (c *centrifugoApiClient) Subscribe(ctx context.Context, req *connect.Request[v1.SubscribeRequest]) (*connect.Response[v1.SubscribeResponse], error) { + return c.subscribe.CallUnary(ctx, req) +} + +// Unsubscribe calls centrifugal.centrifugo.api.CentrifugoApi.Unsubscribe. +func (c *centrifugoApiClient) Unsubscribe(ctx context.Context, req *connect.Request[v1.UnsubscribeRequest]) (*connect.Response[v1.UnsubscribeResponse], error) { + return c.unsubscribe.CallUnary(ctx, req) +} + +// Disconnect calls centrifugal.centrifugo.api.CentrifugoApi.Disconnect. +func (c *centrifugoApiClient) Disconnect(ctx context.Context, req *connect.Request[v1.DisconnectRequest]) (*connect.Response[v1.DisconnectResponse], error) { + return c.disconnect.CallUnary(ctx, req) +} + +// Presence calls centrifugal.centrifugo.api.CentrifugoApi.Presence. +func (c *centrifugoApiClient) Presence(ctx context.Context, req *connect.Request[v1.PresenceRequest]) (*connect.Response[v1.PresenceResponse], error) { + return c.presence.CallUnary(ctx, req) +} + +// PresenceStats calls centrifugal.centrifugo.api.CentrifugoApi.PresenceStats. +func (c *centrifugoApiClient) PresenceStats(ctx context.Context, req *connect.Request[v1.PresenceStatsRequest]) (*connect.Response[v1.PresenceStatsResponse], error) { + return c.presenceStats.CallUnary(ctx, req) +} + +// History calls centrifugal.centrifugo.api.CentrifugoApi.History. +func (c *centrifugoApiClient) History(ctx context.Context, req *connect.Request[v1.HistoryRequest]) (*connect.Response[v1.HistoryResponse], error) { + return c.history.CallUnary(ctx, req) +} + +// HistoryRemove calls centrifugal.centrifugo.api.CentrifugoApi.HistoryRemove. +func (c *centrifugoApiClient) HistoryRemove(ctx context.Context, req *connect.Request[v1.HistoryRemoveRequest]) (*connect.Response[v1.HistoryRemoveResponse], error) { + return c.historyRemove.CallUnary(ctx, req) +} + +// Info calls centrifugal.centrifugo.api.CentrifugoApi.Info. +func (c *centrifugoApiClient) Info(ctx context.Context, req *connect.Request[v1.InfoRequest]) (*connect.Response[v1.InfoResponse], error) { + return c.info.CallUnary(ctx, req) +} + +// RPC calls centrifugal.centrifugo.api.CentrifugoApi.RPC. +func (c *centrifugoApiClient) RPC(ctx context.Context, req *connect.Request[v1.RPCRequest]) (*connect.Response[v1.RPCResponse], error) { + return c.rPC.CallUnary(ctx, req) +} + +// Refresh calls centrifugal.centrifugo.api.CentrifugoApi.Refresh. +func (c *centrifugoApiClient) Refresh(ctx context.Context, req *connect.Request[v1.RefreshRequest]) (*connect.Response[v1.RefreshResponse], error) { + return c.refresh.CallUnary(ctx, req) +} + +// Channels calls centrifugal.centrifugo.api.CentrifugoApi.Channels. +func (c *centrifugoApiClient) Channels(ctx context.Context, req *connect.Request[v1.ChannelsRequest]) (*connect.Response[v1.ChannelsResponse], error) { + return c.channels.CallUnary(ctx, req) +} + +// Connections calls centrifugal.centrifugo.api.CentrifugoApi.Connections. +func (c *centrifugoApiClient) Connections(ctx context.Context, req *connect.Request[v1.ConnectionsRequest]) (*connect.Response[v1.ConnectionsResponse], error) { + return c.connections.CallUnary(ctx, req) +} + +// UpdateUserStatus calls centrifugal.centrifugo.api.CentrifugoApi.UpdateUserStatus. +func (c *centrifugoApiClient) UpdateUserStatus(ctx context.Context, req *connect.Request[v1.UpdateUserStatusRequest]) (*connect.Response[v1.UpdateUserStatusResponse], error) { + return c.updateUserStatus.CallUnary(ctx, req) +} + +// GetUserStatus calls centrifugal.centrifugo.api.CentrifugoApi.GetUserStatus. +func (c *centrifugoApiClient) GetUserStatus(ctx context.Context, req *connect.Request[v1.GetUserStatusRequest]) (*connect.Response[v1.GetUserStatusResponse], error) { + return c.getUserStatus.CallUnary(ctx, req) +} + +// DeleteUserStatus calls centrifugal.centrifugo.api.CentrifugoApi.DeleteUserStatus. +func (c *centrifugoApiClient) DeleteUserStatus(ctx context.Context, req *connect.Request[v1.DeleteUserStatusRequest]) (*connect.Response[v1.DeleteUserStatusResponse], error) { + return c.deleteUserStatus.CallUnary(ctx, req) +} + +// BlockUser calls centrifugal.centrifugo.api.CentrifugoApi.BlockUser. +func (c *centrifugoApiClient) BlockUser(ctx context.Context, req *connect.Request[v1.BlockUserRequest]) (*connect.Response[v1.BlockUserResponse], error) { + return c.blockUser.CallUnary(ctx, req) +} + +// UnblockUser calls centrifugal.centrifugo.api.CentrifugoApi.UnblockUser. +func (c *centrifugoApiClient) UnblockUser(ctx context.Context, req *connect.Request[v1.UnblockUserRequest]) (*connect.Response[v1.UnblockUserResponse], error) { + return c.unblockUser.CallUnary(ctx, req) +} + +// RevokeToken calls centrifugal.centrifugo.api.CentrifugoApi.RevokeToken. +func (c *centrifugoApiClient) RevokeToken(ctx context.Context, req *connect.Request[v1.RevokeTokenRequest]) (*connect.Response[v1.RevokeTokenResponse], error) { + return c.revokeToken.CallUnary(ctx, req) +} + +// InvalidateUserTokens calls centrifugal.centrifugo.api.CentrifugoApi.InvalidateUserTokens. +func (c *centrifugoApiClient) InvalidateUserTokens(ctx context.Context, req *connect.Request[v1.InvalidateUserTokensRequest]) (*connect.Response[v1.InvalidateUserTokensResponse], error) { + return c.invalidateUserTokens.CallUnary(ctx, req) +} + +// DeviceRegister calls centrifugal.centrifugo.api.CentrifugoApi.DeviceRegister. +func (c *centrifugoApiClient) DeviceRegister(ctx context.Context, req *connect.Request[v1.DeviceRegisterRequest]) (*connect.Response[v1.DeviceRegisterResponse], error) { + return c.deviceRegister.CallUnary(ctx, req) +} + +// DeviceUpdate calls centrifugal.centrifugo.api.CentrifugoApi.DeviceUpdate. +func (c *centrifugoApiClient) DeviceUpdate(ctx context.Context, req *connect.Request[v1.DeviceUpdateRequest]) (*connect.Response[v1.DeviceUpdateResponse], error) { + return c.deviceUpdate.CallUnary(ctx, req) +} + +// DeviceRemove calls centrifugal.centrifugo.api.CentrifugoApi.DeviceRemove. +func (c *centrifugoApiClient) DeviceRemove(ctx context.Context, req *connect.Request[v1.DeviceRemoveRequest]) (*connect.Response[v1.DeviceRemoveResponse], error) { + return c.deviceRemove.CallUnary(ctx, req) +} + +// DeviceList calls centrifugal.centrifugo.api.CentrifugoApi.DeviceList. +func (c *centrifugoApiClient) DeviceList(ctx context.Context, req *connect.Request[v1.DeviceListRequest]) (*connect.Response[v1.DeviceListResponse], error) { + return c.deviceList.CallUnary(ctx, req) +} + +// DeviceTopicList calls centrifugal.centrifugo.api.CentrifugoApi.DeviceTopicList. +func (c *centrifugoApiClient) DeviceTopicList(ctx context.Context, req *connect.Request[v1.DeviceTopicListRequest]) (*connect.Response[v1.DeviceTopicListResponse], error) { + return c.deviceTopicList.CallUnary(ctx, req) +} + +// DeviceTopicUpdate calls centrifugal.centrifugo.api.CentrifugoApi.DeviceTopicUpdate. +func (c *centrifugoApiClient) DeviceTopicUpdate(ctx context.Context, req *connect.Request[v1.DeviceTopicUpdateRequest]) (*connect.Response[v1.DeviceTopicUpdateResponse], error) { + return c.deviceTopicUpdate.CallUnary(ctx, req) +} + +// UserTopicList calls centrifugal.centrifugo.api.CentrifugoApi.UserTopicList. +func (c *centrifugoApiClient) UserTopicList(ctx context.Context, req *connect.Request[v1.UserTopicListRequest]) (*connect.Response[v1.UserTopicListResponse], error) { + return c.userTopicList.CallUnary(ctx, req) +} + +// UserTopicUpdate calls centrifugal.centrifugo.api.CentrifugoApi.UserTopicUpdate. +func (c *centrifugoApiClient) UserTopicUpdate(ctx context.Context, req *connect.Request[v1.UserTopicUpdateRequest]) (*connect.Response[v1.UserTopicUpdateResponse], error) { + return c.userTopicUpdate.CallUnary(ctx, req) +} + +// SendPushNotification calls centrifugal.centrifugo.api.CentrifugoApi.SendPushNotification. +func (c *centrifugoApiClient) SendPushNotification(ctx context.Context, req *connect.Request[v1.SendPushNotificationRequest]) (*connect.Response[v1.SendPushNotificationResponse], error) { + return c.sendPushNotification.CallUnary(ctx, req) +} + +// UpdatePushStatus calls centrifugal.centrifugo.api.CentrifugoApi.UpdatePushStatus. +func (c *centrifugoApiClient) UpdatePushStatus(ctx context.Context, req *connect.Request[v1.UpdatePushStatusRequest]) (*connect.Response[v1.UpdatePushStatusResponse], error) { + return c.updatePushStatus.CallUnary(ctx, req) +} + +// CancelPush calls centrifugal.centrifugo.api.CentrifugoApi.CancelPush. +func (c *centrifugoApiClient) CancelPush(ctx context.Context, req *connect.Request[v1.CancelPushRequest]) (*connect.Response[v1.CancelPushResponse], error) { + return c.cancelPush.CallUnary(ctx, req) +} + +// CentrifugoApiHandler is an implementation of the centrifugal.centrifugo.api.CentrifugoApi +// service. +type CentrifugoApiHandler interface { + Batch(context.Context, *connect.Request[v1.BatchRequest]) (*connect.Response[v1.BatchResponse], error) + Publish(context.Context, *connect.Request[v1.PublishRequest]) (*connect.Response[v1.PublishResponse], error) + Broadcast(context.Context, *connect.Request[v1.BroadcastRequest]) (*connect.Response[v1.BroadcastResponse], error) + Subscribe(context.Context, *connect.Request[v1.SubscribeRequest]) (*connect.Response[v1.SubscribeResponse], error) + Unsubscribe(context.Context, *connect.Request[v1.UnsubscribeRequest]) (*connect.Response[v1.UnsubscribeResponse], error) + Disconnect(context.Context, *connect.Request[v1.DisconnectRequest]) (*connect.Response[v1.DisconnectResponse], error) + Presence(context.Context, *connect.Request[v1.PresenceRequest]) (*connect.Response[v1.PresenceResponse], error) + PresenceStats(context.Context, *connect.Request[v1.PresenceStatsRequest]) (*connect.Response[v1.PresenceStatsResponse], error) + History(context.Context, *connect.Request[v1.HistoryRequest]) (*connect.Response[v1.HistoryResponse], error) + HistoryRemove(context.Context, *connect.Request[v1.HistoryRemoveRequest]) (*connect.Response[v1.HistoryRemoveResponse], error) + Info(context.Context, *connect.Request[v1.InfoRequest]) (*connect.Response[v1.InfoResponse], error) + RPC(context.Context, *connect.Request[v1.RPCRequest]) (*connect.Response[v1.RPCResponse], error) + Refresh(context.Context, *connect.Request[v1.RefreshRequest]) (*connect.Response[v1.RefreshResponse], error) + Channels(context.Context, *connect.Request[v1.ChannelsRequest]) (*connect.Response[v1.ChannelsResponse], error) + Connections(context.Context, *connect.Request[v1.ConnectionsRequest]) (*connect.Response[v1.ConnectionsResponse], error) + UpdateUserStatus(context.Context, *connect.Request[v1.UpdateUserStatusRequest]) (*connect.Response[v1.UpdateUserStatusResponse], error) + GetUserStatus(context.Context, *connect.Request[v1.GetUserStatusRequest]) (*connect.Response[v1.GetUserStatusResponse], error) + DeleteUserStatus(context.Context, *connect.Request[v1.DeleteUserStatusRequest]) (*connect.Response[v1.DeleteUserStatusResponse], error) + BlockUser(context.Context, *connect.Request[v1.BlockUserRequest]) (*connect.Response[v1.BlockUserResponse], error) + UnblockUser(context.Context, *connect.Request[v1.UnblockUserRequest]) (*connect.Response[v1.UnblockUserResponse], error) + RevokeToken(context.Context, *connect.Request[v1.RevokeTokenRequest]) (*connect.Response[v1.RevokeTokenResponse], error) + InvalidateUserTokens(context.Context, *connect.Request[v1.InvalidateUserTokensRequest]) (*connect.Response[v1.InvalidateUserTokensResponse], error) + DeviceRegister(context.Context, *connect.Request[v1.DeviceRegisterRequest]) (*connect.Response[v1.DeviceRegisterResponse], error) + DeviceUpdate(context.Context, *connect.Request[v1.DeviceUpdateRequest]) (*connect.Response[v1.DeviceUpdateResponse], error) + DeviceRemove(context.Context, *connect.Request[v1.DeviceRemoveRequest]) (*connect.Response[v1.DeviceRemoveResponse], error) + DeviceList(context.Context, *connect.Request[v1.DeviceListRequest]) (*connect.Response[v1.DeviceListResponse], error) + DeviceTopicList(context.Context, *connect.Request[v1.DeviceTopicListRequest]) (*connect.Response[v1.DeviceTopicListResponse], error) + DeviceTopicUpdate(context.Context, *connect.Request[v1.DeviceTopicUpdateRequest]) (*connect.Response[v1.DeviceTopicUpdateResponse], error) + UserTopicList(context.Context, *connect.Request[v1.UserTopicListRequest]) (*connect.Response[v1.UserTopicListResponse], error) + UserTopicUpdate(context.Context, *connect.Request[v1.UserTopicUpdateRequest]) (*connect.Response[v1.UserTopicUpdateResponse], error) + SendPushNotification(context.Context, *connect.Request[v1.SendPushNotificationRequest]) (*connect.Response[v1.SendPushNotificationResponse], error) + UpdatePushStatus(context.Context, *connect.Request[v1.UpdatePushStatusRequest]) (*connect.Response[v1.UpdatePushStatusResponse], error) + CancelPush(context.Context, *connect.Request[v1.CancelPushRequest]) (*connect.Response[v1.CancelPushResponse], error) +} + +// NewCentrifugoApiHandler builds an HTTP handler from the service implementation. It returns the +// path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewCentrifugoApiHandler(svc CentrifugoApiHandler, opts ...connect.HandlerOption) (string, http.Handler) { + centrifugoApiMethods := v1.File_centrifugo_api_v1_api_proto.Services().ByName("CentrifugoApi").Methods() + centrifugoApiBatchHandler := connect.NewUnaryHandler( + CentrifugoApiBatchProcedure, + svc.Batch, + connect.WithSchema(centrifugoApiMethods.ByName("Batch")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiPublishHandler := connect.NewUnaryHandler( + CentrifugoApiPublishProcedure, + svc.Publish, + connect.WithSchema(centrifugoApiMethods.ByName("Publish")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiBroadcastHandler := connect.NewUnaryHandler( + CentrifugoApiBroadcastProcedure, + svc.Broadcast, + connect.WithSchema(centrifugoApiMethods.ByName("Broadcast")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiSubscribeHandler := connect.NewUnaryHandler( + CentrifugoApiSubscribeProcedure, + svc.Subscribe, + connect.WithSchema(centrifugoApiMethods.ByName("Subscribe")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiUnsubscribeHandler := connect.NewUnaryHandler( + CentrifugoApiUnsubscribeProcedure, + svc.Unsubscribe, + connect.WithSchema(centrifugoApiMethods.ByName("Unsubscribe")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiDisconnectHandler := connect.NewUnaryHandler( + CentrifugoApiDisconnectProcedure, + svc.Disconnect, + connect.WithSchema(centrifugoApiMethods.ByName("Disconnect")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiPresenceHandler := connect.NewUnaryHandler( + CentrifugoApiPresenceProcedure, + svc.Presence, + connect.WithSchema(centrifugoApiMethods.ByName("Presence")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiPresenceStatsHandler := connect.NewUnaryHandler( + CentrifugoApiPresenceStatsProcedure, + svc.PresenceStats, + connect.WithSchema(centrifugoApiMethods.ByName("PresenceStats")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiHistoryHandler := connect.NewUnaryHandler( + CentrifugoApiHistoryProcedure, + svc.History, + connect.WithSchema(centrifugoApiMethods.ByName("History")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiHistoryRemoveHandler := connect.NewUnaryHandler( + CentrifugoApiHistoryRemoveProcedure, + svc.HistoryRemove, + connect.WithSchema(centrifugoApiMethods.ByName("HistoryRemove")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiInfoHandler := connect.NewUnaryHandler( + CentrifugoApiInfoProcedure, + svc.Info, + connect.WithSchema(centrifugoApiMethods.ByName("Info")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiRPCHandler := connect.NewUnaryHandler( + CentrifugoApiRPCProcedure, + svc.RPC, + connect.WithSchema(centrifugoApiMethods.ByName("RPC")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiRefreshHandler := connect.NewUnaryHandler( + CentrifugoApiRefreshProcedure, + svc.Refresh, + connect.WithSchema(centrifugoApiMethods.ByName("Refresh")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiChannelsHandler := connect.NewUnaryHandler( + CentrifugoApiChannelsProcedure, + svc.Channels, + connect.WithSchema(centrifugoApiMethods.ByName("Channels")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiConnectionsHandler := connect.NewUnaryHandler( + CentrifugoApiConnectionsProcedure, + svc.Connections, + connect.WithSchema(centrifugoApiMethods.ByName("Connections")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiUpdateUserStatusHandler := connect.NewUnaryHandler( + CentrifugoApiUpdateUserStatusProcedure, + svc.UpdateUserStatus, + connect.WithSchema(centrifugoApiMethods.ByName("UpdateUserStatus")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiGetUserStatusHandler := connect.NewUnaryHandler( + CentrifugoApiGetUserStatusProcedure, + svc.GetUserStatus, + connect.WithSchema(centrifugoApiMethods.ByName("GetUserStatus")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiDeleteUserStatusHandler := connect.NewUnaryHandler( + CentrifugoApiDeleteUserStatusProcedure, + svc.DeleteUserStatus, + connect.WithSchema(centrifugoApiMethods.ByName("DeleteUserStatus")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiBlockUserHandler := connect.NewUnaryHandler( + CentrifugoApiBlockUserProcedure, + svc.BlockUser, + connect.WithSchema(centrifugoApiMethods.ByName("BlockUser")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiUnblockUserHandler := connect.NewUnaryHandler( + CentrifugoApiUnblockUserProcedure, + svc.UnblockUser, + connect.WithSchema(centrifugoApiMethods.ByName("UnblockUser")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiRevokeTokenHandler := connect.NewUnaryHandler( + CentrifugoApiRevokeTokenProcedure, + svc.RevokeToken, + connect.WithSchema(centrifugoApiMethods.ByName("RevokeToken")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiInvalidateUserTokensHandler := connect.NewUnaryHandler( + CentrifugoApiInvalidateUserTokensProcedure, + svc.InvalidateUserTokens, + connect.WithSchema(centrifugoApiMethods.ByName("InvalidateUserTokens")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiDeviceRegisterHandler := connect.NewUnaryHandler( + CentrifugoApiDeviceRegisterProcedure, + svc.DeviceRegister, + connect.WithSchema(centrifugoApiMethods.ByName("DeviceRegister")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiDeviceUpdateHandler := connect.NewUnaryHandler( + CentrifugoApiDeviceUpdateProcedure, + svc.DeviceUpdate, + connect.WithSchema(centrifugoApiMethods.ByName("DeviceUpdate")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiDeviceRemoveHandler := connect.NewUnaryHandler( + CentrifugoApiDeviceRemoveProcedure, + svc.DeviceRemove, + connect.WithSchema(centrifugoApiMethods.ByName("DeviceRemove")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiDeviceListHandler := connect.NewUnaryHandler( + CentrifugoApiDeviceListProcedure, + svc.DeviceList, + connect.WithSchema(centrifugoApiMethods.ByName("DeviceList")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiDeviceTopicListHandler := connect.NewUnaryHandler( + CentrifugoApiDeviceTopicListProcedure, + svc.DeviceTopicList, + connect.WithSchema(centrifugoApiMethods.ByName("DeviceTopicList")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiDeviceTopicUpdateHandler := connect.NewUnaryHandler( + CentrifugoApiDeviceTopicUpdateProcedure, + svc.DeviceTopicUpdate, + connect.WithSchema(centrifugoApiMethods.ByName("DeviceTopicUpdate")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiUserTopicListHandler := connect.NewUnaryHandler( + CentrifugoApiUserTopicListProcedure, + svc.UserTopicList, + connect.WithSchema(centrifugoApiMethods.ByName("UserTopicList")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiUserTopicUpdateHandler := connect.NewUnaryHandler( + CentrifugoApiUserTopicUpdateProcedure, + svc.UserTopicUpdate, + connect.WithSchema(centrifugoApiMethods.ByName("UserTopicUpdate")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiSendPushNotificationHandler := connect.NewUnaryHandler( + CentrifugoApiSendPushNotificationProcedure, + svc.SendPushNotification, + connect.WithSchema(centrifugoApiMethods.ByName("SendPushNotification")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiUpdatePushStatusHandler := connect.NewUnaryHandler( + CentrifugoApiUpdatePushStatusProcedure, + svc.UpdatePushStatus, + connect.WithSchema(centrifugoApiMethods.ByName("UpdatePushStatus")), + connect.WithHandlerOptions(opts...), + ) + centrifugoApiCancelPushHandler := connect.NewUnaryHandler( + CentrifugoApiCancelPushProcedure, + svc.CancelPush, + connect.WithSchema(centrifugoApiMethods.ByName("CancelPush")), + connect.WithHandlerOptions(opts...), + ) + return "/centrifugal.centrifugo.api.CentrifugoApi/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case CentrifugoApiBatchProcedure: + centrifugoApiBatchHandler.ServeHTTP(w, r) + case CentrifugoApiPublishProcedure: + centrifugoApiPublishHandler.ServeHTTP(w, r) + case CentrifugoApiBroadcastProcedure: + centrifugoApiBroadcastHandler.ServeHTTP(w, r) + case CentrifugoApiSubscribeProcedure: + centrifugoApiSubscribeHandler.ServeHTTP(w, r) + case CentrifugoApiUnsubscribeProcedure: + centrifugoApiUnsubscribeHandler.ServeHTTP(w, r) + case CentrifugoApiDisconnectProcedure: + centrifugoApiDisconnectHandler.ServeHTTP(w, r) + case CentrifugoApiPresenceProcedure: + centrifugoApiPresenceHandler.ServeHTTP(w, r) + case CentrifugoApiPresenceStatsProcedure: + centrifugoApiPresenceStatsHandler.ServeHTTP(w, r) + case CentrifugoApiHistoryProcedure: + centrifugoApiHistoryHandler.ServeHTTP(w, r) + case CentrifugoApiHistoryRemoveProcedure: + centrifugoApiHistoryRemoveHandler.ServeHTTP(w, r) + case CentrifugoApiInfoProcedure: + centrifugoApiInfoHandler.ServeHTTP(w, r) + case CentrifugoApiRPCProcedure: + centrifugoApiRPCHandler.ServeHTTP(w, r) + case CentrifugoApiRefreshProcedure: + centrifugoApiRefreshHandler.ServeHTTP(w, r) + case CentrifugoApiChannelsProcedure: + centrifugoApiChannelsHandler.ServeHTTP(w, r) + case CentrifugoApiConnectionsProcedure: + centrifugoApiConnectionsHandler.ServeHTTP(w, r) + case CentrifugoApiUpdateUserStatusProcedure: + centrifugoApiUpdateUserStatusHandler.ServeHTTP(w, r) + case CentrifugoApiGetUserStatusProcedure: + centrifugoApiGetUserStatusHandler.ServeHTTP(w, r) + case CentrifugoApiDeleteUserStatusProcedure: + centrifugoApiDeleteUserStatusHandler.ServeHTTP(w, r) + case CentrifugoApiBlockUserProcedure: + centrifugoApiBlockUserHandler.ServeHTTP(w, r) + case CentrifugoApiUnblockUserProcedure: + centrifugoApiUnblockUserHandler.ServeHTTP(w, r) + case CentrifugoApiRevokeTokenProcedure: + centrifugoApiRevokeTokenHandler.ServeHTTP(w, r) + case CentrifugoApiInvalidateUserTokensProcedure: + centrifugoApiInvalidateUserTokensHandler.ServeHTTP(w, r) + case CentrifugoApiDeviceRegisterProcedure: + centrifugoApiDeviceRegisterHandler.ServeHTTP(w, r) + case CentrifugoApiDeviceUpdateProcedure: + centrifugoApiDeviceUpdateHandler.ServeHTTP(w, r) + case CentrifugoApiDeviceRemoveProcedure: + centrifugoApiDeviceRemoveHandler.ServeHTTP(w, r) + case CentrifugoApiDeviceListProcedure: + centrifugoApiDeviceListHandler.ServeHTTP(w, r) + case CentrifugoApiDeviceTopicListProcedure: + centrifugoApiDeviceTopicListHandler.ServeHTTP(w, r) + case CentrifugoApiDeviceTopicUpdateProcedure: + centrifugoApiDeviceTopicUpdateHandler.ServeHTTP(w, r) + case CentrifugoApiUserTopicListProcedure: + centrifugoApiUserTopicListHandler.ServeHTTP(w, r) + case CentrifugoApiUserTopicUpdateProcedure: + centrifugoApiUserTopicUpdateHandler.ServeHTTP(w, r) + case CentrifugoApiSendPushNotificationProcedure: + centrifugoApiSendPushNotificationHandler.ServeHTTP(w, r) + case CentrifugoApiUpdatePushStatusProcedure: + centrifugoApiUpdatePushStatusHandler.ServeHTTP(w, r) + case CentrifugoApiCancelPushProcedure: + centrifugoApiCancelPushHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedCentrifugoApiHandler returns CodeUnimplemented from all methods. +type UnimplementedCentrifugoApiHandler struct{} + +func (UnimplementedCentrifugoApiHandler) Batch(context.Context, *connect.Request[v1.BatchRequest]) (*connect.Response[v1.BatchResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.Batch is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) Publish(context.Context, *connect.Request[v1.PublishRequest]) (*connect.Response[v1.PublishResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.Publish is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) Broadcast(context.Context, *connect.Request[v1.BroadcastRequest]) (*connect.Response[v1.BroadcastResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.Broadcast is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) Subscribe(context.Context, *connect.Request[v1.SubscribeRequest]) (*connect.Response[v1.SubscribeResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.Subscribe is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) Unsubscribe(context.Context, *connect.Request[v1.UnsubscribeRequest]) (*connect.Response[v1.UnsubscribeResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.Unsubscribe is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) Disconnect(context.Context, *connect.Request[v1.DisconnectRequest]) (*connect.Response[v1.DisconnectResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.Disconnect is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) Presence(context.Context, *connect.Request[v1.PresenceRequest]) (*connect.Response[v1.PresenceResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.Presence is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) PresenceStats(context.Context, *connect.Request[v1.PresenceStatsRequest]) (*connect.Response[v1.PresenceStatsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.PresenceStats is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) History(context.Context, *connect.Request[v1.HistoryRequest]) (*connect.Response[v1.HistoryResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.History is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) HistoryRemove(context.Context, *connect.Request[v1.HistoryRemoveRequest]) (*connect.Response[v1.HistoryRemoveResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.HistoryRemove is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) Info(context.Context, *connect.Request[v1.InfoRequest]) (*connect.Response[v1.InfoResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.Info is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) RPC(context.Context, *connect.Request[v1.RPCRequest]) (*connect.Response[v1.RPCResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.RPC is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) Refresh(context.Context, *connect.Request[v1.RefreshRequest]) (*connect.Response[v1.RefreshResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.Refresh is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) Channels(context.Context, *connect.Request[v1.ChannelsRequest]) (*connect.Response[v1.ChannelsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.Channels is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) Connections(context.Context, *connect.Request[v1.ConnectionsRequest]) (*connect.Response[v1.ConnectionsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.Connections is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) UpdateUserStatus(context.Context, *connect.Request[v1.UpdateUserStatusRequest]) (*connect.Response[v1.UpdateUserStatusResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.UpdateUserStatus is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) GetUserStatus(context.Context, *connect.Request[v1.GetUserStatusRequest]) (*connect.Response[v1.GetUserStatusResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.GetUserStatus is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) DeleteUserStatus(context.Context, *connect.Request[v1.DeleteUserStatusRequest]) (*connect.Response[v1.DeleteUserStatusResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.DeleteUserStatus is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) BlockUser(context.Context, *connect.Request[v1.BlockUserRequest]) (*connect.Response[v1.BlockUserResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.BlockUser is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) UnblockUser(context.Context, *connect.Request[v1.UnblockUserRequest]) (*connect.Response[v1.UnblockUserResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.UnblockUser is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) RevokeToken(context.Context, *connect.Request[v1.RevokeTokenRequest]) (*connect.Response[v1.RevokeTokenResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.RevokeToken is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) InvalidateUserTokens(context.Context, *connect.Request[v1.InvalidateUserTokensRequest]) (*connect.Response[v1.InvalidateUserTokensResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.InvalidateUserTokens is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) DeviceRegister(context.Context, *connect.Request[v1.DeviceRegisterRequest]) (*connect.Response[v1.DeviceRegisterResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.DeviceRegister is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) DeviceUpdate(context.Context, *connect.Request[v1.DeviceUpdateRequest]) (*connect.Response[v1.DeviceUpdateResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.DeviceUpdate is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) DeviceRemove(context.Context, *connect.Request[v1.DeviceRemoveRequest]) (*connect.Response[v1.DeviceRemoveResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.DeviceRemove is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) DeviceList(context.Context, *connect.Request[v1.DeviceListRequest]) (*connect.Response[v1.DeviceListResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.DeviceList is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) DeviceTopicList(context.Context, *connect.Request[v1.DeviceTopicListRequest]) (*connect.Response[v1.DeviceTopicListResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.DeviceTopicList is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) DeviceTopicUpdate(context.Context, *connect.Request[v1.DeviceTopicUpdateRequest]) (*connect.Response[v1.DeviceTopicUpdateResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.DeviceTopicUpdate is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) UserTopicList(context.Context, *connect.Request[v1.UserTopicListRequest]) (*connect.Response[v1.UserTopicListResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.UserTopicList is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) UserTopicUpdate(context.Context, *connect.Request[v1.UserTopicUpdateRequest]) (*connect.Response[v1.UserTopicUpdateResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.UserTopicUpdate is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) SendPushNotification(context.Context, *connect.Request[v1.SendPushNotificationRequest]) (*connect.Response[v1.SendPushNotificationResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.SendPushNotification is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) UpdatePushStatus(context.Context, *connect.Request[v1.UpdatePushStatusRequest]) (*connect.Response[v1.UpdatePushStatusResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.UpdatePushStatus is not implemented")) +} + +func (UnimplementedCentrifugoApiHandler) CancelPush(context.Context, *connect.Request[v1.CancelPushRequest]) (*connect.Response[v1.CancelPushResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("centrifugal.centrifugo.api.CentrifugoApi.CancelPush is not implemented")) +} diff --git a/centrifugo/api/v1/api_grpc.pb.go b/centrifugo/api/v1/api_grpc.pb.go index 09b8273..cd816f3 100644 --- a/centrifugo/api/v1/api_grpc.pb.go +++ b/centrifugo/api/v1/api_grpc.pb.go @@ -4,7 +4,7 @@ // - protoc (unknown) // source: centrifugo/api/v1/api.proto -package v1 +package apiV1 import ( context "context" diff --git a/centrifugo/proxy/v1/proxy.pb.go b/centrifugo/proxy/v1/proxy.pb.go index 8ab2782..8319502 100644 --- a/centrifugo/proxy/v1/proxy.pb.go +++ b/centrifugo/proxy/v1/proxy.pb.go @@ -4,7 +4,7 @@ // protoc (unknown) // source: centrifugo/proxy/v1/proxy.proto -package v1 +package proxyV1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -2594,7 +2594,7 @@ const file_centrifugo_proxy_v1_proxy_proto_rawDesc = "" + "\x17SubscribeUnidirectional\x12..centrifugal.centrifugo.proxy.SubscribeRequest\x1a5.centrifugal.centrifugo.proxy.StreamSubscribeResponse0\x01\x12\x89\x01\n" + "\x16SubscribeBidirectional\x124.centrifugal.centrifugo.proxy.StreamSubscribeRequest\x1a5.centrifugal.centrifugo.proxy.StreamSubscribeResponse(\x010\x01\x12\x81\x01\n" + "\x10NotifyCacheEmpty\x125.centrifugal.centrifugo.proxy.NotifyCacheEmptyRequest\x1a6.centrifugal.centrifugo.proxy.NotifyCacheEmptyResponse\x12\x87\x01\n" + - "\x12NotifyChannelState\x127.centrifugal.centrifugo.proxy.NotifyChannelStateRequest\x1a8.centrifugal.centrifugo.proxy.NotifyChannelStateResponseBmZ\x13centrifugo/proxy/v1\xca\x02#RoadRunner\\Centrifugal\\Proxy\\DTO\\V1\xe2\x02/RoadRunner\\Centrifugal\\Proxy\\DTO\\V1\\GPBMetadatab\x06proto3" + "\x12NotifyChannelState\x127.centrifugal.centrifugo.proxy.NotifyChannelStateRequest\x1a8.centrifugal.centrifugo.proxy.NotifyChannelStateResponseB\x9c\x01ZBgithub.com/roadrunner-server/api-go/v6/centrifugo/proxy/v1;proxyV1\xca\x02#RoadRunner\\Centrifugal\\Proxy\\DTO\\V1\xe2\x02/RoadRunner\\Centrifugal\\Proxy\\DTO\\V1\\GPBMetadatab\x06proto3" var ( file_centrifugo_proxy_v1_proxy_proto_rawDescOnce sync.Once diff --git a/centrifugo/proxy/v1/proxy_grpc.pb.go b/centrifugo/proxy/v1/proxy_grpc.pb.go index 3ae2f78..33cdf63 100644 --- a/centrifugo/proxy/v1/proxy_grpc.pb.go +++ b/centrifugo/proxy/v1/proxy_grpc.pb.go @@ -4,7 +4,7 @@ // - protoc (unknown) // source: centrifugo/proxy/v1/proxy.proto -package v1 +package proxyV1 import ( context "context" diff --git a/proto/api b/proto/api index 826600e..cb450a3 160000 --- a/proto/api +++ b/proto/api @@ -1 +1 @@ -Subproject commit 826600ec275044ec962a81fb42e8983538f964ef +Subproject commit cb450a3d1604d3d8d2cae8258189245c461fabea diff --git a/temporal/v1/service.pb.go b/temporal/v1/service.pb.go new file mode 100644 index 0000000..7e556ce --- /dev/null +++ b/temporal/v1/service.pb.go @@ -0,0 +1,402 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc (unknown) +// source: temporal/v1/service.proto + +package temporalV1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// RecordHeartbeatRequest is sent by an activity to record its current progress. +type RecordHeartbeatRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // value of the binary "TaskToken" field of the "ActivityInfo" struct + // retrieved inside the activity + TaskToken []byte `protobuf:"bytes,1,opt,name=task_token,json=taskToken,proto3" json:"task_token,omitempty"` + // progress recorded along with the heartbeat + Details []byte `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RecordHeartbeatRequest) Reset() { + *x = RecordHeartbeatRequest{} + mi := &file_temporal_v1_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RecordHeartbeatRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RecordHeartbeatRequest) ProtoMessage() {} + +func (x *RecordHeartbeatRequest) ProtoReflect() protoreflect.Message { + mi := &file_temporal_v1_service_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RecordHeartbeatRequest.ProtoReflect.Descriptor instead. +func (*RecordHeartbeatRequest) Descriptor() ([]byte, []int) { + return file_temporal_v1_service_proto_rawDescGZIP(), []int{0} +} + +func (x *RecordHeartbeatRequest) GetTaskToken() []byte { + if x != nil { + return x.TaskToken + } + return nil +} + +func (x *RecordHeartbeatRequest) GetDetails() []byte { + if x != nil { + return x.Details + } + return nil +} + +type RecordHeartbeatResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // the activity was requested to cancel + Canceled bool `protobuf:"varint,1,opt,name=canceled,proto3" json:"canceled,omitempty"` + // the activity was paused + Paused bool `protobuf:"varint,2,opt,name=paused,proto3" json:"paused,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RecordHeartbeatResponse) Reset() { + *x = RecordHeartbeatResponse{} + mi := &file_temporal_v1_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RecordHeartbeatResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RecordHeartbeatResponse) ProtoMessage() {} + +func (x *RecordHeartbeatResponse) ProtoReflect() protoreflect.Message { + mi := &file_temporal_v1_service_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RecordHeartbeatResponse.ProtoReflect.Descriptor instead. +func (*RecordHeartbeatResponse) Descriptor() ([]byte, []int) { + return file_temporal_v1_service_proto_rawDescGZIP(), []int{1} +} + +func (x *RecordHeartbeatResponse) GetCanceled() bool { + if x != nil { + return x.Canceled + } + return false +} + +func (x *RecordHeartbeatResponse) GetPaused() bool { + if x != nil { + return x.Paused + } + return false +} + +type GetNamesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetNamesRequest) Reset() { + *x = GetNamesRequest{} + mi := &file_temporal_v1_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetNamesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetNamesRequest) ProtoMessage() {} + +func (x *GetNamesRequest) ProtoReflect() protoreflect.Message { + mi := &file_temporal_v1_service_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetNamesRequest.ProtoReflect.Descriptor instead. +func (*GetNamesRequest) Descriptor() ([]byte, []int) { + return file_temporal_v1_service_proto_rawDescGZIP(), []int{2} +} + +type NamesList struct { + state protoimpl.MessageState `protogen:"open.v1"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NamesList) Reset() { + *x = NamesList{} + mi := &file_temporal_v1_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NamesList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamesList) ProtoMessage() {} + +func (x *NamesList) ProtoReflect() protoreflect.Message { + mi := &file_temporal_v1_service_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamesList.ProtoReflect.Descriptor instead. +func (*NamesList) Descriptor() ([]byte, []int) { + return file_temporal_v1_service_proto_rawDescGZIP(), []int{3} +} + +func (x *NamesList) GetNames() []string { + if x != nil { + return x.Names + } + return nil +} + +type UpdateAPIKeyRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ApiKey string `protobuf:"bytes,1,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateAPIKeyRequest) Reset() { + *x = UpdateAPIKeyRequest{} + mi := &file_temporal_v1_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateAPIKeyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateAPIKeyRequest) ProtoMessage() {} + +func (x *UpdateAPIKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_temporal_v1_service_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateAPIKeyRequest.ProtoReflect.Descriptor instead. +func (*UpdateAPIKeyRequest) Descriptor() ([]byte, []int) { + return file_temporal_v1_service_proto_rawDescGZIP(), []int{4} +} + +func (x *UpdateAPIKeyRequest) GetApiKey() string { + if x != nil { + return x.ApiKey + } + return "" +} + +type UpdateAPIKeyResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateAPIKeyResponse) Reset() { + *x = UpdateAPIKeyResponse{} + mi := &file_temporal_v1_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateAPIKeyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateAPIKeyResponse) ProtoMessage() {} + +func (x *UpdateAPIKeyResponse) ProtoReflect() protoreflect.Message { + mi := &file_temporal_v1_service_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateAPIKeyResponse.ProtoReflect.Descriptor instead. +func (*UpdateAPIKeyResponse) Descriptor() ([]byte, []int) { + return file_temporal_v1_service_proto_rawDescGZIP(), []int{5} +} + +func (x *UpdateAPIKeyResponse) GetOk() bool { + if x != nil { + return x.Ok + } + return false +} + +var File_temporal_v1_service_proto protoreflect.FileDescriptor + +const file_temporal_v1_service_proto_rawDesc = "" + + "\n" + + "\x19temporal/v1/service.proto\x12\vtemporal.v1\x1a\x1atemporal/v1/temporal.proto\"Q\n" + + "\x16RecordHeartbeatRequest\x12\x1d\n" + + "\n" + + "task_token\x18\x01 \x01(\fR\ttaskToken\x12\x18\n" + + "\adetails\x18\x02 \x01(\fR\adetails\"M\n" + + "\x17RecordHeartbeatResponse\x12\x1a\n" + + "\bcanceled\x18\x01 \x01(\bR\bcanceled\x12\x16\n" + + "\x06paused\x18\x02 \x01(\bR\x06paused\"\x11\n" + + "\x0fGetNamesRequest\"!\n" + + "\tNamesList\x12\x14\n" + + "\x05names\x18\x01 \x03(\tR\x05names\".\n" + + "\x13UpdateAPIKeyRequest\x12\x17\n" + + "\aapi_key\x18\x01 \x01(\tR\x06apiKey\"&\n" + + "\x14UpdateAPIKeyResponse\x12\x0e\n" + + "\x02ok\x18\x01 \x01(\bR\x02ok2\xa0\x05\n" + + "\x0fTemporalService\x12d\n" + + "\x17RecordActivityHeartbeat\x12#.temporal.v1.RecordHeartbeatRequest\x1a$.temporal.v1.RecordHeartbeatResponse\x12M\n" + + "\x10GetActivityNames\x12\x1c.temporal.v1.GetNamesRequest\x1a\x16.temporal.v1.NamesList\"\x03\x90\x02\x01\x12M\n" + + "\x10GetWorkflowNames\x12\x1c.temporal.v1.GetNamesRequest\x1a\x16.temporal.v1.NamesList\"\x03\x90\x02\x01\x12I\n" + + "\x0eReplayWorkflow\x12\x1a.temporal.v1.ReplayRequest\x1a\x1b.temporal.v1.ReplayResponse\x12R\n" + + "\x17DownloadWorkflowHistory\x12\x1a.temporal.v1.ReplayRequest\x1a\x1b.temporal.v1.ReplayResponse\x12I\n" + + "\x0eReplayFromJSON\x12\x1a.temporal.v1.ReplayRequest\x1a\x1b.temporal.v1.ReplayResponse\x12J\n" + + "\x15ReplayWorkflowHistory\x12\x14.temporal.v1.History\x1a\x1b.temporal.v1.ReplayResponse\x12S\n" + + "\fUpdateAPIKey\x12 .temporal.v1.UpdateAPIKeyRequest\x1a!.temporal.v1.UpdateAPIKeyResponseB\x85\x01Z=github.com/roadrunner-server/api-go/v6/temporal/v1;temporalV1\xca\x02\x1aRoadRunner\\Temporal\\DTO\\V1\xe2\x02&RoadRunner\\Temporal\\DTO\\V1\\GPBMetadatab\x06proto3" + +var ( + file_temporal_v1_service_proto_rawDescOnce sync.Once + file_temporal_v1_service_proto_rawDescData []byte +) + +func file_temporal_v1_service_proto_rawDescGZIP() []byte { + file_temporal_v1_service_proto_rawDescOnce.Do(func() { + file_temporal_v1_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_temporal_v1_service_proto_rawDesc), len(file_temporal_v1_service_proto_rawDesc))) + }) + return file_temporal_v1_service_proto_rawDescData +} + +var file_temporal_v1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_temporal_v1_service_proto_goTypes = []any{ + (*RecordHeartbeatRequest)(nil), // 0: temporal.v1.RecordHeartbeatRequest + (*RecordHeartbeatResponse)(nil), // 1: temporal.v1.RecordHeartbeatResponse + (*GetNamesRequest)(nil), // 2: temporal.v1.GetNamesRequest + (*NamesList)(nil), // 3: temporal.v1.NamesList + (*UpdateAPIKeyRequest)(nil), // 4: temporal.v1.UpdateAPIKeyRequest + (*UpdateAPIKeyResponse)(nil), // 5: temporal.v1.UpdateAPIKeyResponse + (*ReplayRequest)(nil), // 6: temporal.v1.ReplayRequest + (*History)(nil), // 7: temporal.v1.History + (*ReplayResponse)(nil), // 8: temporal.v1.ReplayResponse +} +var file_temporal_v1_service_proto_depIdxs = []int32{ + 0, // 0: temporal.v1.TemporalService.RecordActivityHeartbeat:input_type -> temporal.v1.RecordHeartbeatRequest + 2, // 1: temporal.v1.TemporalService.GetActivityNames:input_type -> temporal.v1.GetNamesRequest + 2, // 2: temporal.v1.TemporalService.GetWorkflowNames:input_type -> temporal.v1.GetNamesRequest + 6, // 3: temporal.v1.TemporalService.ReplayWorkflow:input_type -> temporal.v1.ReplayRequest + 6, // 4: temporal.v1.TemporalService.DownloadWorkflowHistory:input_type -> temporal.v1.ReplayRequest + 6, // 5: temporal.v1.TemporalService.ReplayFromJSON:input_type -> temporal.v1.ReplayRequest + 7, // 6: temporal.v1.TemporalService.ReplayWorkflowHistory:input_type -> temporal.v1.History + 4, // 7: temporal.v1.TemporalService.UpdateAPIKey:input_type -> temporal.v1.UpdateAPIKeyRequest + 1, // 8: temporal.v1.TemporalService.RecordActivityHeartbeat:output_type -> temporal.v1.RecordHeartbeatResponse + 3, // 9: temporal.v1.TemporalService.GetActivityNames:output_type -> temporal.v1.NamesList + 3, // 10: temporal.v1.TemporalService.GetWorkflowNames:output_type -> temporal.v1.NamesList + 8, // 11: temporal.v1.TemporalService.ReplayWorkflow:output_type -> temporal.v1.ReplayResponse + 8, // 12: temporal.v1.TemporalService.DownloadWorkflowHistory:output_type -> temporal.v1.ReplayResponse + 8, // 13: temporal.v1.TemporalService.ReplayFromJSON:output_type -> temporal.v1.ReplayResponse + 8, // 14: temporal.v1.TemporalService.ReplayWorkflowHistory:output_type -> temporal.v1.ReplayResponse + 5, // 15: temporal.v1.TemporalService.UpdateAPIKey:output_type -> temporal.v1.UpdateAPIKeyResponse + 8, // [8:16] is the sub-list for method output_type + 0, // [0:8] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_temporal_v1_service_proto_init() } +func file_temporal_v1_service_proto_init() { + if File_temporal_v1_service_proto != nil { + return + } + file_temporal_v1_temporal_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_temporal_v1_service_proto_rawDesc), len(file_temporal_v1_service_proto_rawDesc)), + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_temporal_v1_service_proto_goTypes, + DependencyIndexes: file_temporal_v1_service_proto_depIdxs, + MessageInfos: file_temporal_v1_service_proto_msgTypes, + }.Build() + File_temporal_v1_service_proto = out.File + file_temporal_v1_service_proto_goTypes = nil + file_temporal_v1_service_proto_depIdxs = nil +} diff --git a/temporal/v1/service_grpc.pb.go b/temporal/v1/service_grpc.pb.go new file mode 100644 index 0000000..bd0f60d --- /dev/null +++ b/temporal/v1/service_grpc.pb.go @@ -0,0 +1,395 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.6.1 +// - protoc (unknown) +// source: temporal/v1/service.proto + +package temporalV1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + TemporalService_RecordActivityHeartbeat_FullMethodName = "/temporal.v1.TemporalService/RecordActivityHeartbeat" + TemporalService_GetActivityNames_FullMethodName = "/temporal.v1.TemporalService/GetActivityNames" + TemporalService_GetWorkflowNames_FullMethodName = "/temporal.v1.TemporalService/GetWorkflowNames" + TemporalService_ReplayWorkflow_FullMethodName = "/temporal.v1.TemporalService/ReplayWorkflow" + TemporalService_DownloadWorkflowHistory_FullMethodName = "/temporal.v1.TemporalService/DownloadWorkflowHistory" + TemporalService_ReplayFromJSON_FullMethodName = "/temporal.v1.TemporalService/ReplayFromJSON" + TemporalService_ReplayWorkflowHistory_FullMethodName = "/temporal.v1.TemporalService/ReplayWorkflowHistory" + TemporalService_UpdateAPIKey_FullMethodName = "/temporal.v1.TemporalService/UpdateAPIKey" +) + +// TemporalServiceClient is the client API for TemporalService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// TemporalService exposes the temporal plugin control RPCs: activity +// heartbeats, registered workflow/activity introspection, workflow replay +// tooling, and API key rotation. +type TemporalServiceClient interface { + RecordActivityHeartbeat(ctx context.Context, in *RecordHeartbeatRequest, opts ...grpc.CallOption) (*RecordHeartbeatResponse, error) + GetActivityNames(ctx context.Context, in *GetNamesRequest, opts ...grpc.CallOption) (*NamesList, error) + GetWorkflowNames(ctx context.Context, in *GetNamesRequest, opts ...grpc.CallOption) (*NamesList, error) + ReplayWorkflow(ctx context.Context, in *ReplayRequest, opts ...grpc.CallOption) (*ReplayResponse, error) + DownloadWorkflowHistory(ctx context.Context, in *ReplayRequest, opts ...grpc.CallOption) (*ReplayResponse, error) + ReplayFromJSON(ctx context.Context, in *ReplayRequest, opts ...grpc.CallOption) (*ReplayResponse, error) + ReplayWorkflowHistory(ctx context.Context, in *History, opts ...grpc.CallOption) (*ReplayResponse, error) + UpdateAPIKey(ctx context.Context, in *UpdateAPIKeyRequest, opts ...grpc.CallOption) (*UpdateAPIKeyResponse, error) +} + +type temporalServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewTemporalServiceClient(cc grpc.ClientConnInterface) TemporalServiceClient { + return &temporalServiceClient{cc} +} + +func (c *temporalServiceClient) RecordActivityHeartbeat(ctx context.Context, in *RecordHeartbeatRequest, opts ...grpc.CallOption) (*RecordHeartbeatResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(RecordHeartbeatResponse) + err := c.cc.Invoke(ctx, TemporalService_RecordActivityHeartbeat_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *temporalServiceClient) GetActivityNames(ctx context.Context, in *GetNamesRequest, opts ...grpc.CallOption) (*NamesList, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(NamesList) + err := c.cc.Invoke(ctx, TemporalService_GetActivityNames_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *temporalServiceClient) GetWorkflowNames(ctx context.Context, in *GetNamesRequest, opts ...grpc.CallOption) (*NamesList, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(NamesList) + err := c.cc.Invoke(ctx, TemporalService_GetWorkflowNames_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *temporalServiceClient) ReplayWorkflow(ctx context.Context, in *ReplayRequest, opts ...grpc.CallOption) (*ReplayResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ReplayResponse) + err := c.cc.Invoke(ctx, TemporalService_ReplayWorkflow_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *temporalServiceClient) DownloadWorkflowHistory(ctx context.Context, in *ReplayRequest, opts ...grpc.CallOption) (*ReplayResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ReplayResponse) + err := c.cc.Invoke(ctx, TemporalService_DownloadWorkflowHistory_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *temporalServiceClient) ReplayFromJSON(ctx context.Context, in *ReplayRequest, opts ...grpc.CallOption) (*ReplayResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ReplayResponse) + err := c.cc.Invoke(ctx, TemporalService_ReplayFromJSON_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *temporalServiceClient) ReplayWorkflowHistory(ctx context.Context, in *History, opts ...grpc.CallOption) (*ReplayResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ReplayResponse) + err := c.cc.Invoke(ctx, TemporalService_ReplayWorkflowHistory_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *temporalServiceClient) UpdateAPIKey(ctx context.Context, in *UpdateAPIKeyRequest, opts ...grpc.CallOption) (*UpdateAPIKeyResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UpdateAPIKeyResponse) + err := c.cc.Invoke(ctx, TemporalService_UpdateAPIKey_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// TemporalServiceServer is the server API for TemporalService service. +// All implementations must embed UnimplementedTemporalServiceServer +// for forward compatibility. +// +// TemporalService exposes the temporal plugin control RPCs: activity +// heartbeats, registered workflow/activity introspection, workflow replay +// tooling, and API key rotation. +type TemporalServiceServer interface { + RecordActivityHeartbeat(context.Context, *RecordHeartbeatRequest) (*RecordHeartbeatResponse, error) + GetActivityNames(context.Context, *GetNamesRequest) (*NamesList, error) + GetWorkflowNames(context.Context, *GetNamesRequest) (*NamesList, error) + ReplayWorkflow(context.Context, *ReplayRequest) (*ReplayResponse, error) + DownloadWorkflowHistory(context.Context, *ReplayRequest) (*ReplayResponse, error) + ReplayFromJSON(context.Context, *ReplayRequest) (*ReplayResponse, error) + ReplayWorkflowHistory(context.Context, *History) (*ReplayResponse, error) + UpdateAPIKey(context.Context, *UpdateAPIKeyRequest) (*UpdateAPIKeyResponse, error) + mustEmbedUnimplementedTemporalServiceServer() +} + +// UnimplementedTemporalServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedTemporalServiceServer struct{} + +func (UnimplementedTemporalServiceServer) RecordActivityHeartbeat(context.Context, *RecordHeartbeatRequest) (*RecordHeartbeatResponse, error) { + return nil, status.Error(codes.Unimplemented, "method RecordActivityHeartbeat not implemented") +} +func (UnimplementedTemporalServiceServer) GetActivityNames(context.Context, *GetNamesRequest) (*NamesList, error) { + return nil, status.Error(codes.Unimplemented, "method GetActivityNames not implemented") +} +func (UnimplementedTemporalServiceServer) GetWorkflowNames(context.Context, *GetNamesRequest) (*NamesList, error) { + return nil, status.Error(codes.Unimplemented, "method GetWorkflowNames not implemented") +} +func (UnimplementedTemporalServiceServer) ReplayWorkflow(context.Context, *ReplayRequest) (*ReplayResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ReplayWorkflow not implemented") +} +func (UnimplementedTemporalServiceServer) DownloadWorkflowHistory(context.Context, *ReplayRequest) (*ReplayResponse, error) { + return nil, status.Error(codes.Unimplemented, "method DownloadWorkflowHistory not implemented") +} +func (UnimplementedTemporalServiceServer) ReplayFromJSON(context.Context, *ReplayRequest) (*ReplayResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ReplayFromJSON not implemented") +} +func (UnimplementedTemporalServiceServer) ReplayWorkflowHistory(context.Context, *History) (*ReplayResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ReplayWorkflowHistory not implemented") +} +func (UnimplementedTemporalServiceServer) UpdateAPIKey(context.Context, *UpdateAPIKeyRequest) (*UpdateAPIKeyResponse, error) { + return nil, status.Error(codes.Unimplemented, "method UpdateAPIKey not implemented") +} +func (UnimplementedTemporalServiceServer) mustEmbedUnimplementedTemporalServiceServer() {} +func (UnimplementedTemporalServiceServer) testEmbeddedByValue() {} + +// UnsafeTemporalServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to TemporalServiceServer will +// result in compilation errors. +type UnsafeTemporalServiceServer interface { + mustEmbedUnimplementedTemporalServiceServer() +} + +func RegisterTemporalServiceServer(s grpc.ServiceRegistrar, srv TemporalServiceServer) { + // If the following call panics, it indicates UnimplementedTemporalServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&TemporalService_ServiceDesc, srv) +} + +func _TemporalService_RecordActivityHeartbeat_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RecordHeartbeatRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TemporalServiceServer).RecordActivityHeartbeat(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TemporalService_RecordActivityHeartbeat_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TemporalServiceServer).RecordActivityHeartbeat(ctx, req.(*RecordHeartbeatRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TemporalService_GetActivityNames_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetNamesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TemporalServiceServer).GetActivityNames(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TemporalService_GetActivityNames_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TemporalServiceServer).GetActivityNames(ctx, req.(*GetNamesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TemporalService_GetWorkflowNames_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetNamesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TemporalServiceServer).GetWorkflowNames(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TemporalService_GetWorkflowNames_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TemporalServiceServer).GetWorkflowNames(ctx, req.(*GetNamesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TemporalService_ReplayWorkflow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ReplayRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TemporalServiceServer).ReplayWorkflow(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TemporalService_ReplayWorkflow_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TemporalServiceServer).ReplayWorkflow(ctx, req.(*ReplayRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TemporalService_DownloadWorkflowHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ReplayRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TemporalServiceServer).DownloadWorkflowHistory(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TemporalService_DownloadWorkflowHistory_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TemporalServiceServer).DownloadWorkflowHistory(ctx, req.(*ReplayRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TemporalService_ReplayFromJSON_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ReplayRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TemporalServiceServer).ReplayFromJSON(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TemporalService_ReplayFromJSON_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TemporalServiceServer).ReplayFromJSON(ctx, req.(*ReplayRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TemporalService_ReplayWorkflowHistory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(History) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TemporalServiceServer).ReplayWorkflowHistory(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TemporalService_ReplayWorkflowHistory_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TemporalServiceServer).ReplayWorkflowHistory(ctx, req.(*History)) + } + return interceptor(ctx, in, info, handler) +} + +func _TemporalService_UpdateAPIKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateAPIKeyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TemporalServiceServer).UpdateAPIKey(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: TemporalService_UpdateAPIKey_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TemporalServiceServer).UpdateAPIKey(ctx, req.(*UpdateAPIKeyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// TemporalService_ServiceDesc is the grpc.ServiceDesc for TemporalService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var TemporalService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "temporal.v1.TemporalService", + HandlerType: (*TemporalServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "RecordActivityHeartbeat", + Handler: _TemporalService_RecordActivityHeartbeat_Handler, + }, + { + MethodName: "GetActivityNames", + Handler: _TemporalService_GetActivityNames_Handler, + }, + { + MethodName: "GetWorkflowNames", + Handler: _TemporalService_GetWorkflowNames_Handler, + }, + { + MethodName: "ReplayWorkflow", + Handler: _TemporalService_ReplayWorkflow_Handler, + }, + { + MethodName: "DownloadWorkflowHistory", + Handler: _TemporalService_DownloadWorkflowHistory_Handler, + }, + { + MethodName: "ReplayFromJSON", + Handler: _TemporalService_ReplayFromJSON_Handler, + }, + { + MethodName: "ReplayWorkflowHistory", + Handler: _TemporalService_ReplayWorkflowHistory_Handler, + }, + { + MethodName: "UpdateAPIKey", + Handler: _TemporalService_UpdateAPIKey_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "temporal/v1/service.proto", +} diff --git a/temporal/v1/temporalV1connect/service.connect.go b/temporal/v1/temporalV1connect/service.connect.go new file mode 100644 index 0000000..f25d87f --- /dev/null +++ b/temporal/v1/temporalV1connect/service.connect.go @@ -0,0 +1,316 @@ +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: temporal/v1/service.proto + +package temporalV1connect + +import ( + connect "connectrpc.com/connect" + context "context" + errors "errors" + v1 "github.com/roadrunner-server/api-go/v6/temporal/v1" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect.IsAtLeastVersion1_13_0 + +const ( + // TemporalServiceName is the fully-qualified name of the TemporalService service. + TemporalServiceName = "temporal.v1.TemporalService" +) + +// These constants are the fully-qualified names of the RPCs defined in this package. They're +// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route. +// +// Note that these are different from the fully-qualified method names used by +// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to +// reflection-formatted method names, remove the leading slash and convert the remaining slash to a +// period. +const ( + // TemporalServiceRecordActivityHeartbeatProcedure is the fully-qualified name of the + // TemporalService's RecordActivityHeartbeat RPC. + TemporalServiceRecordActivityHeartbeatProcedure = "/temporal.v1.TemporalService/RecordActivityHeartbeat" + // TemporalServiceGetActivityNamesProcedure is the fully-qualified name of the TemporalService's + // GetActivityNames RPC. + TemporalServiceGetActivityNamesProcedure = "/temporal.v1.TemporalService/GetActivityNames" + // TemporalServiceGetWorkflowNamesProcedure is the fully-qualified name of the TemporalService's + // GetWorkflowNames RPC. + TemporalServiceGetWorkflowNamesProcedure = "/temporal.v1.TemporalService/GetWorkflowNames" + // TemporalServiceReplayWorkflowProcedure is the fully-qualified name of the TemporalService's + // ReplayWorkflow RPC. + TemporalServiceReplayWorkflowProcedure = "/temporal.v1.TemporalService/ReplayWorkflow" + // TemporalServiceDownloadWorkflowHistoryProcedure is the fully-qualified name of the + // TemporalService's DownloadWorkflowHistory RPC. + TemporalServiceDownloadWorkflowHistoryProcedure = "/temporal.v1.TemporalService/DownloadWorkflowHistory" + // TemporalServiceReplayFromJSONProcedure is the fully-qualified name of the TemporalService's + // ReplayFromJSON RPC. + TemporalServiceReplayFromJSONProcedure = "/temporal.v1.TemporalService/ReplayFromJSON" + // TemporalServiceReplayWorkflowHistoryProcedure is the fully-qualified name of the + // TemporalService's ReplayWorkflowHistory RPC. + TemporalServiceReplayWorkflowHistoryProcedure = "/temporal.v1.TemporalService/ReplayWorkflowHistory" + // TemporalServiceUpdateAPIKeyProcedure is the fully-qualified name of the TemporalService's + // UpdateAPIKey RPC. + TemporalServiceUpdateAPIKeyProcedure = "/temporal.v1.TemporalService/UpdateAPIKey" +) + +// TemporalServiceClient is a client for the temporal.v1.TemporalService service. +type TemporalServiceClient interface { + RecordActivityHeartbeat(context.Context, *connect.Request[v1.RecordHeartbeatRequest]) (*connect.Response[v1.RecordHeartbeatResponse], error) + GetActivityNames(context.Context, *connect.Request[v1.GetNamesRequest]) (*connect.Response[v1.NamesList], error) + GetWorkflowNames(context.Context, *connect.Request[v1.GetNamesRequest]) (*connect.Response[v1.NamesList], error) + ReplayWorkflow(context.Context, *connect.Request[v1.ReplayRequest]) (*connect.Response[v1.ReplayResponse], error) + DownloadWorkflowHistory(context.Context, *connect.Request[v1.ReplayRequest]) (*connect.Response[v1.ReplayResponse], error) + ReplayFromJSON(context.Context, *connect.Request[v1.ReplayRequest]) (*connect.Response[v1.ReplayResponse], error) + ReplayWorkflowHistory(context.Context, *connect.Request[v1.History]) (*connect.Response[v1.ReplayResponse], error) + UpdateAPIKey(context.Context, *connect.Request[v1.UpdateAPIKeyRequest]) (*connect.Response[v1.UpdateAPIKeyResponse], error) +} + +// NewTemporalServiceClient constructs a client for the temporal.v1.TemporalService service. By +// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, +// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the +// connect.WithGRPC() or connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewTemporalServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) TemporalServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + temporalServiceMethods := v1.File_temporal_v1_service_proto.Services().ByName("TemporalService").Methods() + return &temporalServiceClient{ + recordActivityHeartbeat: connect.NewClient[v1.RecordHeartbeatRequest, v1.RecordHeartbeatResponse]( + httpClient, + baseURL+TemporalServiceRecordActivityHeartbeatProcedure, + connect.WithSchema(temporalServiceMethods.ByName("RecordActivityHeartbeat")), + connect.WithClientOptions(opts...), + ), + getActivityNames: connect.NewClient[v1.GetNamesRequest, v1.NamesList]( + httpClient, + baseURL+TemporalServiceGetActivityNamesProcedure, + connect.WithSchema(temporalServiceMethods.ByName("GetActivityNames")), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithClientOptions(opts...), + ), + getWorkflowNames: connect.NewClient[v1.GetNamesRequest, v1.NamesList]( + httpClient, + baseURL+TemporalServiceGetWorkflowNamesProcedure, + connect.WithSchema(temporalServiceMethods.ByName("GetWorkflowNames")), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithClientOptions(opts...), + ), + replayWorkflow: connect.NewClient[v1.ReplayRequest, v1.ReplayResponse]( + httpClient, + baseURL+TemporalServiceReplayWorkflowProcedure, + connect.WithSchema(temporalServiceMethods.ByName("ReplayWorkflow")), + connect.WithClientOptions(opts...), + ), + downloadWorkflowHistory: connect.NewClient[v1.ReplayRequest, v1.ReplayResponse]( + httpClient, + baseURL+TemporalServiceDownloadWorkflowHistoryProcedure, + connect.WithSchema(temporalServiceMethods.ByName("DownloadWorkflowHistory")), + connect.WithClientOptions(opts...), + ), + replayFromJSON: connect.NewClient[v1.ReplayRequest, v1.ReplayResponse]( + httpClient, + baseURL+TemporalServiceReplayFromJSONProcedure, + connect.WithSchema(temporalServiceMethods.ByName("ReplayFromJSON")), + connect.WithClientOptions(opts...), + ), + replayWorkflowHistory: connect.NewClient[v1.History, v1.ReplayResponse]( + httpClient, + baseURL+TemporalServiceReplayWorkflowHistoryProcedure, + connect.WithSchema(temporalServiceMethods.ByName("ReplayWorkflowHistory")), + connect.WithClientOptions(opts...), + ), + updateAPIKey: connect.NewClient[v1.UpdateAPIKeyRequest, v1.UpdateAPIKeyResponse]( + httpClient, + baseURL+TemporalServiceUpdateAPIKeyProcedure, + connect.WithSchema(temporalServiceMethods.ByName("UpdateAPIKey")), + connect.WithClientOptions(opts...), + ), + } +} + +// temporalServiceClient implements TemporalServiceClient. +type temporalServiceClient struct { + recordActivityHeartbeat *connect.Client[v1.RecordHeartbeatRequest, v1.RecordHeartbeatResponse] + getActivityNames *connect.Client[v1.GetNamesRequest, v1.NamesList] + getWorkflowNames *connect.Client[v1.GetNamesRequest, v1.NamesList] + replayWorkflow *connect.Client[v1.ReplayRequest, v1.ReplayResponse] + downloadWorkflowHistory *connect.Client[v1.ReplayRequest, v1.ReplayResponse] + replayFromJSON *connect.Client[v1.ReplayRequest, v1.ReplayResponse] + replayWorkflowHistory *connect.Client[v1.History, v1.ReplayResponse] + updateAPIKey *connect.Client[v1.UpdateAPIKeyRequest, v1.UpdateAPIKeyResponse] +} + +// RecordActivityHeartbeat calls temporal.v1.TemporalService.RecordActivityHeartbeat. +func (c *temporalServiceClient) RecordActivityHeartbeat(ctx context.Context, req *connect.Request[v1.RecordHeartbeatRequest]) (*connect.Response[v1.RecordHeartbeatResponse], error) { + return c.recordActivityHeartbeat.CallUnary(ctx, req) +} + +// GetActivityNames calls temporal.v1.TemporalService.GetActivityNames. +func (c *temporalServiceClient) GetActivityNames(ctx context.Context, req *connect.Request[v1.GetNamesRequest]) (*connect.Response[v1.NamesList], error) { + return c.getActivityNames.CallUnary(ctx, req) +} + +// GetWorkflowNames calls temporal.v1.TemporalService.GetWorkflowNames. +func (c *temporalServiceClient) GetWorkflowNames(ctx context.Context, req *connect.Request[v1.GetNamesRequest]) (*connect.Response[v1.NamesList], error) { + return c.getWorkflowNames.CallUnary(ctx, req) +} + +// ReplayWorkflow calls temporal.v1.TemporalService.ReplayWorkflow. +func (c *temporalServiceClient) ReplayWorkflow(ctx context.Context, req *connect.Request[v1.ReplayRequest]) (*connect.Response[v1.ReplayResponse], error) { + return c.replayWorkflow.CallUnary(ctx, req) +} + +// DownloadWorkflowHistory calls temporal.v1.TemporalService.DownloadWorkflowHistory. +func (c *temporalServiceClient) DownloadWorkflowHistory(ctx context.Context, req *connect.Request[v1.ReplayRequest]) (*connect.Response[v1.ReplayResponse], error) { + return c.downloadWorkflowHistory.CallUnary(ctx, req) +} + +// ReplayFromJSON calls temporal.v1.TemporalService.ReplayFromJSON. +func (c *temporalServiceClient) ReplayFromJSON(ctx context.Context, req *connect.Request[v1.ReplayRequest]) (*connect.Response[v1.ReplayResponse], error) { + return c.replayFromJSON.CallUnary(ctx, req) +} + +// ReplayWorkflowHistory calls temporal.v1.TemporalService.ReplayWorkflowHistory. +func (c *temporalServiceClient) ReplayWorkflowHistory(ctx context.Context, req *connect.Request[v1.History]) (*connect.Response[v1.ReplayResponse], error) { + return c.replayWorkflowHistory.CallUnary(ctx, req) +} + +// UpdateAPIKey calls temporal.v1.TemporalService.UpdateAPIKey. +func (c *temporalServiceClient) UpdateAPIKey(ctx context.Context, req *connect.Request[v1.UpdateAPIKeyRequest]) (*connect.Response[v1.UpdateAPIKeyResponse], error) { + return c.updateAPIKey.CallUnary(ctx, req) +} + +// TemporalServiceHandler is an implementation of the temporal.v1.TemporalService service. +type TemporalServiceHandler interface { + RecordActivityHeartbeat(context.Context, *connect.Request[v1.RecordHeartbeatRequest]) (*connect.Response[v1.RecordHeartbeatResponse], error) + GetActivityNames(context.Context, *connect.Request[v1.GetNamesRequest]) (*connect.Response[v1.NamesList], error) + GetWorkflowNames(context.Context, *connect.Request[v1.GetNamesRequest]) (*connect.Response[v1.NamesList], error) + ReplayWorkflow(context.Context, *connect.Request[v1.ReplayRequest]) (*connect.Response[v1.ReplayResponse], error) + DownloadWorkflowHistory(context.Context, *connect.Request[v1.ReplayRequest]) (*connect.Response[v1.ReplayResponse], error) + ReplayFromJSON(context.Context, *connect.Request[v1.ReplayRequest]) (*connect.Response[v1.ReplayResponse], error) + ReplayWorkflowHistory(context.Context, *connect.Request[v1.History]) (*connect.Response[v1.ReplayResponse], error) + UpdateAPIKey(context.Context, *connect.Request[v1.UpdateAPIKeyRequest]) (*connect.Response[v1.UpdateAPIKeyResponse], error) +} + +// NewTemporalServiceHandler builds an HTTP handler from the service implementation. It returns the +// path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewTemporalServiceHandler(svc TemporalServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + temporalServiceMethods := v1.File_temporal_v1_service_proto.Services().ByName("TemporalService").Methods() + temporalServiceRecordActivityHeartbeatHandler := connect.NewUnaryHandler( + TemporalServiceRecordActivityHeartbeatProcedure, + svc.RecordActivityHeartbeat, + connect.WithSchema(temporalServiceMethods.ByName("RecordActivityHeartbeat")), + connect.WithHandlerOptions(opts...), + ) + temporalServiceGetActivityNamesHandler := connect.NewUnaryHandler( + TemporalServiceGetActivityNamesProcedure, + svc.GetActivityNames, + connect.WithSchema(temporalServiceMethods.ByName("GetActivityNames")), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithHandlerOptions(opts...), + ) + temporalServiceGetWorkflowNamesHandler := connect.NewUnaryHandler( + TemporalServiceGetWorkflowNamesProcedure, + svc.GetWorkflowNames, + connect.WithSchema(temporalServiceMethods.ByName("GetWorkflowNames")), + connect.WithIdempotency(connect.IdempotencyNoSideEffects), + connect.WithHandlerOptions(opts...), + ) + temporalServiceReplayWorkflowHandler := connect.NewUnaryHandler( + TemporalServiceReplayWorkflowProcedure, + svc.ReplayWorkflow, + connect.WithSchema(temporalServiceMethods.ByName("ReplayWorkflow")), + connect.WithHandlerOptions(opts...), + ) + temporalServiceDownloadWorkflowHistoryHandler := connect.NewUnaryHandler( + TemporalServiceDownloadWorkflowHistoryProcedure, + svc.DownloadWorkflowHistory, + connect.WithSchema(temporalServiceMethods.ByName("DownloadWorkflowHistory")), + connect.WithHandlerOptions(opts...), + ) + temporalServiceReplayFromJSONHandler := connect.NewUnaryHandler( + TemporalServiceReplayFromJSONProcedure, + svc.ReplayFromJSON, + connect.WithSchema(temporalServiceMethods.ByName("ReplayFromJSON")), + connect.WithHandlerOptions(opts...), + ) + temporalServiceReplayWorkflowHistoryHandler := connect.NewUnaryHandler( + TemporalServiceReplayWorkflowHistoryProcedure, + svc.ReplayWorkflowHistory, + connect.WithSchema(temporalServiceMethods.ByName("ReplayWorkflowHistory")), + connect.WithHandlerOptions(opts...), + ) + temporalServiceUpdateAPIKeyHandler := connect.NewUnaryHandler( + TemporalServiceUpdateAPIKeyProcedure, + svc.UpdateAPIKey, + connect.WithSchema(temporalServiceMethods.ByName("UpdateAPIKey")), + connect.WithHandlerOptions(opts...), + ) + return "/temporal.v1.TemporalService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case TemporalServiceRecordActivityHeartbeatProcedure: + temporalServiceRecordActivityHeartbeatHandler.ServeHTTP(w, r) + case TemporalServiceGetActivityNamesProcedure: + temporalServiceGetActivityNamesHandler.ServeHTTP(w, r) + case TemporalServiceGetWorkflowNamesProcedure: + temporalServiceGetWorkflowNamesHandler.ServeHTTP(w, r) + case TemporalServiceReplayWorkflowProcedure: + temporalServiceReplayWorkflowHandler.ServeHTTP(w, r) + case TemporalServiceDownloadWorkflowHistoryProcedure: + temporalServiceDownloadWorkflowHistoryHandler.ServeHTTP(w, r) + case TemporalServiceReplayFromJSONProcedure: + temporalServiceReplayFromJSONHandler.ServeHTTP(w, r) + case TemporalServiceReplayWorkflowHistoryProcedure: + temporalServiceReplayWorkflowHistoryHandler.ServeHTTP(w, r) + case TemporalServiceUpdateAPIKeyProcedure: + temporalServiceUpdateAPIKeyHandler.ServeHTTP(w, r) + default: + http.NotFound(w, r) + } + }) +} + +// UnimplementedTemporalServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedTemporalServiceHandler struct{} + +func (UnimplementedTemporalServiceHandler) RecordActivityHeartbeat(context.Context, *connect.Request[v1.RecordHeartbeatRequest]) (*connect.Response[v1.RecordHeartbeatResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("temporal.v1.TemporalService.RecordActivityHeartbeat is not implemented")) +} + +func (UnimplementedTemporalServiceHandler) GetActivityNames(context.Context, *connect.Request[v1.GetNamesRequest]) (*connect.Response[v1.NamesList], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("temporal.v1.TemporalService.GetActivityNames is not implemented")) +} + +func (UnimplementedTemporalServiceHandler) GetWorkflowNames(context.Context, *connect.Request[v1.GetNamesRequest]) (*connect.Response[v1.NamesList], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("temporal.v1.TemporalService.GetWorkflowNames is not implemented")) +} + +func (UnimplementedTemporalServiceHandler) ReplayWorkflow(context.Context, *connect.Request[v1.ReplayRequest]) (*connect.Response[v1.ReplayResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("temporal.v1.TemporalService.ReplayWorkflow is not implemented")) +} + +func (UnimplementedTemporalServiceHandler) DownloadWorkflowHistory(context.Context, *connect.Request[v1.ReplayRequest]) (*connect.Response[v1.ReplayResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("temporal.v1.TemporalService.DownloadWorkflowHistory is not implemented")) +} + +func (UnimplementedTemporalServiceHandler) ReplayFromJSON(context.Context, *connect.Request[v1.ReplayRequest]) (*connect.Response[v1.ReplayResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("temporal.v1.TemporalService.ReplayFromJSON is not implemented")) +} + +func (UnimplementedTemporalServiceHandler) ReplayWorkflowHistory(context.Context, *connect.Request[v1.History]) (*connect.Response[v1.ReplayResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("temporal.v1.TemporalService.ReplayWorkflowHistory is not implemented")) +} + +func (UnimplementedTemporalServiceHandler) UpdateAPIKey(context.Context, *connect.Request[v1.UpdateAPIKeyRequest]) (*connect.Response[v1.UpdateAPIKeyResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("temporal.v1.TemporalService.UpdateAPIKey is not implemented")) +}