Documentation ¶
Index ¶
- Variables
- func NewChatEndpoints() []*api.Endpoint
- func RegisterChatHandler(s server.Server, hdlr ChatHandler, opts ...server.HandlerOption) error
- type ChatHandler
- type ChatService
- type Chat_ConnectService
- type Chat_ConnectStream
- type HistoryRequest
- type HistoryResponse
- type Message
- func (*Message) Descriptor() ([]byte, []int)deprecated
- func (x *Message) GetChatId() string
- func (x *Message) GetClientId() string
- func (x *Message) GetId() string
- func (x *Message) GetSentAt() *timestamp.Timestamp
- func (x *Message) GetSubject() string
- func (x *Message) GetText() string
- func (x *Message) GetUserId() string
- func (*Message) ProtoMessage()
- func (x *Message) ProtoReflect() protoreflect.Message
- func (x *Message) Reset()
- func (x *Message) String() string
- type NewRequest
- type NewResponse
- type SendRequest
- func (*SendRequest) Descriptor() ([]byte, []int)deprecated
- func (x *SendRequest) GetChatId() string
- func (x *SendRequest) GetClientId() string
- func (x *SendRequest) GetSubject() string
- func (x *SendRequest) GetText() string
- func (x *SendRequest) GetUserId() string
- func (*SendRequest) ProtoMessage()
- func (x *SendRequest) ProtoReflect() protoreflect.Message
- func (x *SendRequest) Reset()
- func (x *SendRequest) String() string
- type SendResponse
Constants ¶
This section is empty.
Variables ¶
var File_proto_chat_proto protoreflect.FileDescriptor
Functions ¶
func NewChatEndpoints ¶
func RegisterChatHandler ¶
func RegisterChatHandler(s server.Server, hdlr ChatHandler, opts ...server.HandlerOption) error
Types ¶
type ChatHandler ¶
type ChatHandler interface { // New creates a chat for a group of users. The RPC is idempotent so if it's called multiple times // for the same users, the same response will be returned. It's good practice to design APIs as // idempotent since this enables safe retries. New(context.Context, *NewRequest, *NewResponse) error // History returns the historical messages in a chat History(context.Context, *HistoryRequest, *HistoryResponse) error // Send a single message to the chat Send(context.Context, *SendRequest, *SendResponse) error // Connect to a chat using a bidirectional stream enabling the client to send and recieve messages // over a single RPC. When a message is sent on the stream, it will be added to the chat history // and sent to the other connected users. When opening the connection, the client should provide // the chat_id and user_id in the context so the server knows which messages to stream. Connect(context.Context, Chat_ConnectStream) error }
type ChatService ¶
type ChatService interface { // New creates a chat for a group of users. The RPC is idempotent so if it's called multiple times // for the same users, the same response will be returned. It's good practice to design APIs as // idempotent since this enables safe retries. New(ctx context.Context, in *NewRequest, opts ...client.CallOption) (*NewResponse, error) // History returns the historical messages in a chat History(ctx context.Context, in *HistoryRequest, opts ...client.CallOption) (*HistoryResponse, error) // Send a single message to the chat Send(ctx context.Context, in *SendRequest, opts ...client.CallOption) (*SendResponse, error) // Connect to a chat using a bidirectional stream enabling the client to send and recieve messages // over a single RPC. When a message is sent on the stream, it will be added to the chat history // and sent to the other connected users. When opening the connection, the client should provide // the chat_id and user_id in the context so the server knows which messages to stream. Connect(ctx context.Context, opts ...client.CallOption) (Chat_ConnectService, error) }
func NewChatService ¶
func NewChatService(name string, c client.Client) ChatService
type Chat_ConnectService ¶
type Chat_ConnectStream ¶
type HistoryRequest ¶
type HistoryRequest struct { ChatId string `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` // contains filtered or unexported fields }
HistoryRequest contains the id of the chat we want the history for. This RPC will return all historical messages, however in a real life application we'd introduce some form of pagination here, only loading the older messages when required.
func (*HistoryRequest) Descriptor
deprecated
func (*HistoryRequest) Descriptor() ([]byte, []int)
Deprecated: Use HistoryRequest.ProtoReflect.Descriptor instead.
func (*HistoryRequest) GetChatId ¶
func (x *HistoryRequest) GetChatId() string
func (*HistoryRequest) ProtoMessage ¶
func (*HistoryRequest) ProtoMessage()
func (*HistoryRequest) ProtoReflect ¶
func (x *HistoryRequest) ProtoReflect() protoreflect.Message
func (*HistoryRequest) Reset ¶
func (x *HistoryRequest) Reset()
func (*HistoryRequest) String ¶
func (x *HistoryRequest) String() string
type HistoryResponse ¶
type HistoryResponse struct { Messages []*Message `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` // contains filtered or unexported fields }
HistoryResponse contains the historical messages in a chat
func (*HistoryResponse) Descriptor
deprecated
func (*HistoryResponse) Descriptor() ([]byte, []int)
Deprecated: Use HistoryResponse.ProtoReflect.Descriptor instead.
func (*HistoryResponse) GetMessages ¶
func (x *HistoryResponse) GetMessages() []*Message
func (*HistoryResponse) ProtoMessage ¶
func (*HistoryResponse) ProtoMessage()
func (*HistoryResponse) ProtoReflect ¶
func (x *HistoryResponse) ProtoReflect() protoreflect.Message
func (*HistoryResponse) Reset ¶
func (x *HistoryResponse) Reset()
func (*HistoryResponse) String ¶
func (x *HistoryResponse) String() string
type Message ¶
type Message struct { // id of the message, allocated by the server Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // a client side id, should be validated by the server to make the request retry safe ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` // id of the chat the message is being sent to / from ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` // id of the user who sent the message UserId string `protobuf:"bytes,4,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // time time the message was sent in unix format SentAt *timestamp.Timestamp `protobuf:"bytes,5,opt,name=sent_at,json=sentAt,proto3" json:"sent_at,omitempty"` // subject of the message Subject string `protobuf:"bytes,6,opt,name=subject,proto3" json:"subject,omitempty"` // text of the message Text string `protobuf:"bytes,7,opt,name=text,proto3" json:"text,omitempty"` // contains filtered or unexported fields }
Message sent to a chat
func (*Message) Descriptor
deprecated
func (*Message) GetClientId ¶
func (*Message) GetSubject ¶
func (*Message) ProtoMessage ¶
func (*Message) ProtoMessage()
func (*Message) ProtoReflect ¶
func (x *Message) ProtoReflect() protoreflect.Message
type NewRequest ¶
type NewRequest struct { UserIds []string `protobuf:"bytes,1,rep,name=user_ids,json=userIds,proto3" json:"user_ids,omitempty"` // contains filtered or unexported fields }
NewRequest contains the infromation needed to create a new chat
func (*NewRequest) Descriptor
deprecated
func (*NewRequest) Descriptor() ([]byte, []int)
Deprecated: Use NewRequest.ProtoReflect.Descriptor instead.
func (*NewRequest) GetUserIds ¶
func (x *NewRequest) GetUserIds() []string
func (*NewRequest) ProtoMessage ¶
func (*NewRequest) ProtoMessage()
func (*NewRequest) ProtoReflect ¶
func (x *NewRequest) ProtoReflect() protoreflect.Message
func (*NewRequest) Reset ¶
func (x *NewRequest) Reset()
func (*NewRequest) String ¶
func (x *NewRequest) String() string
type NewResponse ¶
type NewResponse struct { ChatId string `protobuf:"bytes,1,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` // contains filtered or unexported fields }
NewResponse contains the chat id for the users
func (*NewResponse) Descriptor
deprecated
func (*NewResponse) Descriptor() ([]byte, []int)
Deprecated: Use NewResponse.ProtoReflect.Descriptor instead.
func (*NewResponse) GetChatId ¶
func (x *NewResponse) GetChatId() string
func (*NewResponse) ProtoMessage ¶
func (*NewResponse) ProtoMessage()
func (*NewResponse) ProtoReflect ¶
func (x *NewResponse) ProtoReflect() protoreflect.Message
func (*NewResponse) Reset ¶
func (x *NewResponse) Reset()
func (*NewResponse) String ¶
func (x *NewResponse) String() string
type SendRequest ¶
type SendRequest struct { // a client side id, should be validated by the server to make the request retry safe ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` // id of the chat the message is being sent to / from ChatId string `protobuf:"bytes,2,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"` // id of the user who sent the message UserId string `protobuf:"bytes,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // subject of the message Subject string `protobuf:"bytes,4,opt,name=subject,proto3" json:"subject,omitempty"` // text of the message Text string `protobuf:"bytes,5,opt,name=text,proto3" json:"text,omitempty"` // contains filtered or unexported fields }
SendRequest contains a single message to send to a chat
func (*SendRequest) Descriptor
deprecated
func (*SendRequest) Descriptor() ([]byte, []int)
Deprecated: Use SendRequest.ProtoReflect.Descriptor instead.
func (*SendRequest) GetChatId ¶
func (x *SendRequest) GetChatId() string
func (*SendRequest) GetClientId ¶
func (x *SendRequest) GetClientId() string
func (*SendRequest) GetSubject ¶
func (x *SendRequest) GetSubject() string
func (*SendRequest) GetText ¶
func (x *SendRequest) GetText() string
func (*SendRequest) GetUserId ¶
func (x *SendRequest) GetUserId() string
func (*SendRequest) ProtoMessage ¶
func (*SendRequest) ProtoMessage()
func (*SendRequest) ProtoReflect ¶
func (x *SendRequest) ProtoReflect() protoreflect.Message
func (*SendRequest) Reset ¶
func (x *SendRequest) Reset()
func (*SendRequest) String ¶
func (x *SendRequest) String() string
type SendResponse ¶
type SendResponse struct { Message *Message `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` // contains filtered or unexported fields }
SendResponse is a blank message returned when a message is successfully created
func (*SendResponse) Descriptor
deprecated
func (*SendResponse) Descriptor() ([]byte, []int)
Deprecated: Use SendResponse.ProtoReflect.Descriptor instead.
func (*SendResponse) GetMessage ¶
func (x *SendResponse) GetMessage() *Message
func (*SendResponse) ProtoMessage ¶
func (*SendResponse) ProtoMessage()
func (*SendResponse) ProtoReflect ¶
func (x *SendResponse) ProtoReflect() protoreflect.Message
func (*SendResponse) Reset ¶
func (x *SendResponse) Reset()
func (*SendResponse) String ¶
func (x *SendResponse) String() string