Add methods for getting contacts and starting chats

This commit is contained in:
Tulir Asokan 2023-07-17 00:51:17 +03:00
parent 019f237be1
commit 6786c10fda
9 changed files with 1949 additions and 987 deletions

View file

@ -98,6 +98,17 @@ func main() {
args := strings.Fields(cmd) args := strings.Fields(cmd)
cmd = args[0] cmd = args[0]
args = args[1:] args = args[1:]
switch cmd {
//case "getavatar":
// _, err := cli.GetFullSizeImage(args)
// fmt.Println(err)
case "listcontacts":
cli.ListContacts()
case "topcontacts":
cli.ListTopContacts()
case "getorcreate":
cli.GetOrCreateConversation(args)
}
//go handleCmd(strings.ToLower(cmd), args) //go handleCmd(strings.ToLower(cmd), args)
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -9,6 +9,41 @@ message GetParticipantThumbnailPayload {
string conversationID = 1; string conversationID = 1;
} }
message ListContactsPayload {
int32 i1 = 5; // = 1
int32 i2 = 6; // = 350
int32 i3 = 7; // = 50
}
message ListTopContactsPayload {
int32 count = 1;
}
message GetContactsThumbnailPayload {
repeated string avatarIDs = 1;
}
message Contact {
string ID = 1;
string name = 2;
ContactNumber number = 3;
string avatarHexColor = 7;
bool unknownBool = 10;
string avatarID = 11;
}
message ContactNumber {
// Might be 2 for contact and 7 for user input?
int32 mysteriousInt = 1;
string number = 2;
string number2 = 3;
optional string formattedNumber = 4;
}
message GetOrCreateConversationPayload {
repeated ContactNumber numbers = 2;
}
message ResendMessagePayload { message ResendMessagePayload {
string messageID = 2; string messageID = 2;
} }
@ -99,11 +134,12 @@ message ListConversationsPayload {
int64 count = 2; int64 count = 2;
Folder folder = 4; Folder folder = 4;
optional Cursor cursor = 5;
} }
message Cursor { message Cursor {
string someStr = 1; string lastItemID = 1;
int64 nextCursor = 2; int64 lastItemTimestamp = 2;
} }
message Message { message Message {
@ -175,6 +211,8 @@ message MessageStatus {
message Conversations { message Conversations {
repeated Conversation conversations = 2; repeated Conversation conversations = 2;
optional bytes cursorBytes = 3;
optional Cursor cursor = 5;
} }
message Conversation { message Conversation {
@ -214,8 +252,14 @@ message Participant {
int64 someInt2 = 20; int64 someInt2 = 20;
} }
enum IdentifierType {
UNKNOWN = 0;
PHONE = 1;
EMAIL = 2;
}
message SmallInfo { message SmallInfo {
int64 type = 1; IdentifierType type = 1;
string number = 2; string number = 2;
string participantID = 3; string participantID = 3;
} }

View file

@ -42,6 +42,20 @@ message FetchMessagesResponse {
conversations.Cursor cursor = 5; conversations.Cursor cursor = 5;
} }
message ListContactsResponse {
repeated conversations.Contact contacts = 2;
}
message ListTopContactsResponse {
repeated conversations.Contact contacts = 1;
}
message GetOrCreateConversationResponse {
conversations.Conversation conversation = 2;
// uncertain, never seen any other value than 1
bool success = 3;
}
message DeleteMessageResponse { message DeleteMessageResponse {
bool success = 2; bool success = 2;
} }

View file

@ -396,6 +396,156 @@ func (x *FetchMessagesResponse) GetCursor() *Cursor {
return nil return nil
} }
type ListContactsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Contacts []*Contact `protobuf:"bytes,2,rep,name=contacts,proto3" json:"contacts,omitempty"`
}
func (x *ListContactsResponse) Reset() {
*x = ListContactsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListContactsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListContactsResponse) ProtoMessage() {}
func (x *ListContactsResponse) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListContactsResponse.ProtoReflect.Descriptor instead.
func (*ListContactsResponse) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{7}
}
func (x *ListContactsResponse) GetContacts() []*Contact {
if x != nil {
return x.Contacts
}
return nil
}
type ListTopContactsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Contacts []*Contact `protobuf:"bytes,1,rep,name=contacts,proto3" json:"contacts,omitempty"`
}
func (x *ListTopContactsResponse) Reset() {
*x = ListTopContactsResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ListTopContactsResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListTopContactsResponse) ProtoMessage() {}
func (x *ListTopContactsResponse) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListTopContactsResponse.ProtoReflect.Descriptor instead.
func (*ListTopContactsResponse) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{8}
}
func (x *ListTopContactsResponse) GetContacts() []*Contact {
if x != nil {
return x.Contacts
}
return nil
}
type GetOrCreateConversationResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Conversation *Conversation `protobuf:"bytes,2,opt,name=conversation,proto3" json:"conversation,omitempty"`
// uncertain, never seen any other value than 1
Success bool `protobuf:"varint,3,opt,name=success,proto3" json:"success,omitempty"`
}
func (x *GetOrCreateConversationResponse) Reset() {
*x = GetOrCreateConversationResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetOrCreateConversationResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetOrCreateConversationResponse) ProtoMessage() {}
func (x *GetOrCreateConversationResponse) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetOrCreateConversationResponse.ProtoReflect.Descriptor instead.
func (*GetOrCreateConversationResponse) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{9}
}
func (x *GetOrCreateConversationResponse) GetConversation() *Conversation {
if x != nil {
return x.Conversation
}
return nil
}
func (x *GetOrCreateConversationResponse) GetSuccess() bool {
if x != nil {
return x.Success
}
return false
}
type DeleteMessageResponse struct { type DeleteMessageResponse struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -407,7 +557,7 @@ type DeleteMessageResponse struct {
func (x *DeleteMessageResponse) Reset() { func (x *DeleteMessageResponse) Reset() {
*x = DeleteMessageResponse{} *x = DeleteMessageResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[7] mi := &file_responses_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -420,7 +570,7 @@ func (x *DeleteMessageResponse) String() string {
func (*DeleteMessageResponse) ProtoMessage() {} func (*DeleteMessageResponse) ProtoMessage() {}
func (x *DeleteMessageResponse) ProtoReflect() protoreflect.Message { func (x *DeleteMessageResponse) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[7] mi := &file_responses_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -433,7 +583,7 @@ func (x *DeleteMessageResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use DeleteMessageResponse.ProtoReflect.Descriptor instead. // Deprecated: Use DeleteMessageResponse.ProtoReflect.Descriptor instead.
func (*DeleteMessageResponse) Descriptor() ([]byte, []int) { func (*DeleteMessageResponse) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{7} return file_responses_proto_rawDescGZIP(), []int{10}
} }
func (x *DeleteMessageResponse) GetSuccess() bool { func (x *DeleteMessageResponse) GetSuccess() bool {
@ -454,7 +604,7 @@ type UpdateConversationResponse struct {
func (x *UpdateConversationResponse) Reset() { func (x *UpdateConversationResponse) Reset() {
*x = UpdateConversationResponse{} *x = UpdateConversationResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[8] mi := &file_responses_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -467,7 +617,7 @@ func (x *UpdateConversationResponse) String() string {
func (*UpdateConversationResponse) ProtoMessage() {} func (*UpdateConversationResponse) ProtoMessage() {}
func (x *UpdateConversationResponse) ProtoReflect() protoreflect.Message { func (x *UpdateConversationResponse) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[8] mi := &file_responses_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -480,7 +630,7 @@ func (x *UpdateConversationResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use UpdateConversationResponse.ProtoReflect.Descriptor instead. // Deprecated: Use UpdateConversationResponse.ProtoReflect.Descriptor instead.
func (*UpdateConversationResponse) Descriptor() ([]byte, []int) { func (*UpdateConversationResponse) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{8} return file_responses_proto_rawDescGZIP(), []int{11}
} }
func (x *UpdateConversationResponse) GetSuccess() bool { func (x *UpdateConversationResponse) GetSuccess() bool {
@ -504,7 +654,7 @@ type GetConversationTypeResponse struct {
func (x *GetConversationTypeResponse) Reset() { func (x *GetConversationTypeResponse) Reset() {
*x = GetConversationTypeResponse{} *x = GetConversationTypeResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[9] mi := &file_responses_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -517,7 +667,7 @@ func (x *GetConversationTypeResponse) String() string {
func (*GetConversationTypeResponse) ProtoMessage() {} func (*GetConversationTypeResponse) ProtoMessage() {}
func (x *GetConversationTypeResponse) ProtoReflect() protoreflect.Message { func (x *GetConversationTypeResponse) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[9] mi := &file_responses_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -530,7 +680,7 @@ func (x *GetConversationTypeResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetConversationTypeResponse.ProtoReflect.Descriptor instead. // Deprecated: Use GetConversationTypeResponse.ProtoReflect.Descriptor instead.
func (*GetConversationTypeResponse) Descriptor() ([]byte, []int) { func (*GetConversationTypeResponse) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{9} return file_responses_proto_rawDescGZIP(), []int{12}
} }
func (x *GetConversationTypeResponse) GetConversationID() string { func (x *GetConversationTypeResponse) GetConversationID() string {
@ -570,7 +720,7 @@ type NotifyDittoActivityResponse struct {
func (x *NotifyDittoActivityResponse) Reset() { func (x *NotifyDittoActivityResponse) Reset() {
*x = NotifyDittoActivityResponse{} *x = NotifyDittoActivityResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[10] mi := &file_responses_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -583,7 +733,7 @@ func (x *NotifyDittoActivityResponse) String() string {
func (*NotifyDittoActivityResponse) ProtoMessage() {} func (*NotifyDittoActivityResponse) ProtoMessage() {}
func (x *NotifyDittoActivityResponse) ProtoReflect() protoreflect.Message { func (x *NotifyDittoActivityResponse) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[10] mi := &file_responses_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -596,7 +746,7 @@ func (x *NotifyDittoActivityResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use NotifyDittoActivityResponse.ProtoReflect.Descriptor instead. // Deprecated: Use NotifyDittoActivityResponse.ProtoReflect.Descriptor instead.
func (*NotifyDittoActivityResponse) Descriptor() ([]byte, []int) { func (*NotifyDittoActivityResponse) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{10} return file_responses_proto_rawDescGZIP(), []int{13}
} }
type IsBugleDefaultResponse struct { type IsBugleDefaultResponse struct {
@ -610,7 +760,7 @@ type IsBugleDefaultResponse struct {
func (x *IsBugleDefaultResponse) Reset() { func (x *IsBugleDefaultResponse) Reset() {
*x = IsBugleDefaultResponse{} *x = IsBugleDefaultResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[11] mi := &file_responses_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -623,7 +773,7 @@ func (x *IsBugleDefaultResponse) String() string {
func (*IsBugleDefaultResponse) ProtoMessage() {} func (*IsBugleDefaultResponse) ProtoMessage() {}
func (x *IsBugleDefaultResponse) ProtoReflect() protoreflect.Message { func (x *IsBugleDefaultResponse) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[11] mi := &file_responses_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -636,7 +786,7 @@ func (x *IsBugleDefaultResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use IsBugleDefaultResponse.ProtoReflect.Descriptor instead. // Deprecated: Use IsBugleDefaultResponse.ProtoReflect.Descriptor instead.
func (*IsBugleDefaultResponse) Descriptor() ([]byte, []int) { func (*IsBugleDefaultResponse) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{11} return file_responses_proto_rawDescGZIP(), []int{14}
} }
func (x *IsBugleDefaultResponse) GetSuccess() bool { func (x *IsBugleDefaultResponse) GetSuccess() bool {
@ -657,7 +807,7 @@ type GetUpdatesResponse struct {
func (x *GetUpdatesResponse) Reset() { func (x *GetUpdatesResponse) Reset() {
*x = GetUpdatesResponse{} *x = GetUpdatesResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[12] mi := &file_responses_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -670,7 +820,7 @@ func (x *GetUpdatesResponse) String() string {
func (*GetUpdatesResponse) ProtoMessage() {} func (*GetUpdatesResponse) ProtoMessage() {}
func (x *GetUpdatesResponse) ProtoReflect() protoreflect.Message { func (x *GetUpdatesResponse) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[12] mi := &file_responses_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -683,7 +833,7 @@ func (x *GetUpdatesResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetUpdatesResponse.ProtoReflect.Descriptor instead. // Deprecated: Use GetUpdatesResponse.ProtoReflect.Descriptor instead.
func (*GetUpdatesResponse) Descriptor() ([]byte, []int) { func (*GetUpdatesResponse) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{12} return file_responses_proto_rawDescGZIP(), []int{15}
} }
func (x *GetUpdatesResponse) GetData() *UserAlertEvent { func (x *GetUpdatesResponse) GetData() *UserAlertEvent {
@ -704,7 +854,7 @@ type SendMessageResponse struct {
func (x *SendMessageResponse) Reset() { func (x *SendMessageResponse) Reset() {
*x = SendMessageResponse{} *x = SendMessageResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[13] mi := &file_responses_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -717,7 +867,7 @@ func (x *SendMessageResponse) String() string {
func (*SendMessageResponse) ProtoMessage() {} func (*SendMessageResponse) ProtoMessage() {}
func (x *SendMessageResponse) ProtoReflect() protoreflect.Message { func (x *SendMessageResponse) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[13] mi := &file_responses_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -730,7 +880,7 @@ func (x *SendMessageResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use SendMessageResponse.ProtoReflect.Descriptor instead. // Deprecated: Use SendMessageResponse.ProtoReflect.Descriptor instead.
func (*SendMessageResponse) Descriptor() ([]byte, []int) { func (*SendMessageResponse) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{13} return file_responses_proto_rawDescGZIP(), []int{16}
} }
func (x *SendMessageResponse) GetType() int64 { func (x *SendMessageResponse) GetType() int64 {
@ -753,7 +903,7 @@ type RefreshPhoneRelayResponse struct {
func (x *RefreshPhoneRelayResponse) Reset() { func (x *RefreshPhoneRelayResponse) Reset() {
*x = RefreshPhoneRelayResponse{} *x = RefreshPhoneRelayResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[14] mi := &file_responses_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -766,7 +916,7 @@ func (x *RefreshPhoneRelayResponse) String() string {
func (*RefreshPhoneRelayResponse) ProtoMessage() {} func (*RefreshPhoneRelayResponse) ProtoMessage() {}
func (x *RefreshPhoneRelayResponse) ProtoReflect() protoreflect.Message { func (x *RefreshPhoneRelayResponse) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[14] mi := &file_responses_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -779,7 +929,7 @@ func (x *RefreshPhoneRelayResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use RefreshPhoneRelayResponse.ProtoReflect.Descriptor instead. // Deprecated: Use RefreshPhoneRelayResponse.ProtoReflect.Descriptor instead.
func (*RefreshPhoneRelayResponse) Descriptor() ([]byte, []int) { func (*RefreshPhoneRelayResponse) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{14} return file_responses_proto_rawDescGZIP(), []int{17}
} }
func (x *RefreshPhoneRelayResponse) GetCoordinates() *CoordinateMessage { func (x *RefreshPhoneRelayResponse) GetCoordinates() *CoordinateMessage {
@ -815,7 +965,7 @@ type WebEncryptionKeyResponse struct {
func (x *WebEncryptionKeyResponse) Reset() { func (x *WebEncryptionKeyResponse) Reset() {
*x = WebEncryptionKeyResponse{} *x = WebEncryptionKeyResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[15] mi := &file_responses_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -828,7 +978,7 @@ func (x *WebEncryptionKeyResponse) String() string {
func (*WebEncryptionKeyResponse) ProtoMessage() {} func (*WebEncryptionKeyResponse) ProtoMessage() {}
func (x *WebEncryptionKeyResponse) ProtoReflect() protoreflect.Message { func (x *WebEncryptionKeyResponse) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[15] mi := &file_responses_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -841,7 +991,7 @@ func (x *WebEncryptionKeyResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use WebEncryptionKeyResponse.ProtoReflect.Descriptor instead. // Deprecated: Use WebEncryptionKeyResponse.ProtoReflect.Descriptor instead.
func (*WebEncryptionKeyResponse) Descriptor() ([]byte, []int) { func (*WebEncryptionKeyResponse) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{15} return file_responses_proto_rawDescGZIP(), []int{18}
} }
func (x *WebEncryptionKeyResponse) GetCoordinates() *CoordinateMessage { func (x *WebEncryptionKeyResponse) GetCoordinates() *CoordinateMessage {
@ -874,7 +1024,7 @@ type RegisterPhoneRelayResponse struct {
func (x *RegisterPhoneRelayResponse) Reset() { func (x *RegisterPhoneRelayResponse) Reset() {
*x = RegisterPhoneRelayResponse{} *x = RegisterPhoneRelayResponse{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[16] mi := &file_responses_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -887,7 +1037,7 @@ func (x *RegisterPhoneRelayResponse) String() string {
func (*RegisterPhoneRelayResponse) ProtoMessage() {} func (*RegisterPhoneRelayResponse) ProtoMessage() {}
func (x *RegisterPhoneRelayResponse) ProtoReflect() protoreflect.Message { func (x *RegisterPhoneRelayResponse) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[16] mi := &file_responses_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -900,7 +1050,7 @@ func (x *RegisterPhoneRelayResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use RegisterPhoneRelayResponse.ProtoReflect.Descriptor instead. // Deprecated: Use RegisterPhoneRelayResponse.ProtoReflect.Descriptor instead.
func (*RegisterPhoneRelayResponse) Descriptor() ([]byte, []int) { func (*RegisterPhoneRelayResponse) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{16} return file_responses_proto_rawDescGZIP(), []int{19}
} }
func (x *RegisterPhoneRelayResponse) GetCoordinates() *CoordinateMessage { func (x *RegisterPhoneRelayResponse) GetCoordinates() *CoordinateMessage {
@ -956,7 +1106,7 @@ type CoordinateMessage struct {
func (x *CoordinateMessage) Reset() { func (x *CoordinateMessage) Reset() {
*x = CoordinateMessage{} *x = CoordinateMessage{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[17] mi := &file_responses_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -969,7 +1119,7 @@ func (x *CoordinateMessage) String() string {
func (*CoordinateMessage) ProtoMessage() {} func (*CoordinateMessage) ProtoMessage() {}
func (x *CoordinateMessage) ProtoReflect() protoreflect.Message { func (x *CoordinateMessage) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[17] mi := &file_responses_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -982,7 +1132,7 @@ func (x *CoordinateMessage) ProtoReflect() protoreflect.Message {
// Deprecated: Use CoordinateMessage.ProtoReflect.Descriptor instead. // Deprecated: Use CoordinateMessage.ProtoReflect.Descriptor instead.
func (*CoordinateMessage) Descriptor() ([]byte, []int) { func (*CoordinateMessage) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{17} return file_responses_proto_rawDescGZIP(), []int{20}
} }
func (x *CoordinateMessage) GetCoord1() int64 { func (x *CoordinateMessage) GetCoord1() int64 {
@ -1004,7 +1154,7 @@ type AuthKeyData struct {
func (x *AuthKeyData) Reset() { func (x *AuthKeyData) Reset() {
*x = AuthKeyData{} *x = AuthKeyData{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_responses_proto_msgTypes[18] mi := &file_responses_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -1017,7 +1167,7 @@ func (x *AuthKeyData) String() string {
func (*AuthKeyData) ProtoMessage() {} func (*AuthKeyData) ProtoMessage() {}
func (x *AuthKeyData) ProtoReflect() protoreflect.Message { func (x *AuthKeyData) ProtoReflect() protoreflect.Message {
mi := &file_responses_proto_msgTypes[18] mi := &file_responses_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -1030,7 +1180,7 @@ func (x *AuthKeyData) ProtoReflect() protoreflect.Message {
// Deprecated: Use AuthKeyData.ProtoReflect.Descriptor instead. // Deprecated: Use AuthKeyData.ProtoReflect.Descriptor instead.
func (*AuthKeyData) Descriptor() ([]byte, []int) { func (*AuthKeyData) Descriptor() ([]byte, []int) {
return file_responses_proto_rawDescGZIP(), []int{18} return file_responses_proto_rawDescGZIP(), []int{21}
} }
func (x *AuthKeyData) GetTachyonAuthToken() []byte { func (x *AuthKeyData) GetTachyonAuthToken() []byte {
@ -1098,78 +1248,96 @@ var file_responses_proto_rawDesc = []byte{
0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73,
0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x76, 0x65,
0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x52,
0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x31, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x4a, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43,
0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x32, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x36, 0x0a, 0x1a, 0x55, 0x70, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x63, 0x74, 0x73, 0x22, 0x4d, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x70, 0x43, 0x6f,
0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32,
0x73, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
0x73, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63,
0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x74, 0x73, 0x22, 0x7c, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73,
0x0a, 0x05, 0x62, 0x6f, 0x6f, 0x6c, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x62, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6f,
0x6f, 0x6f, 0x6c, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x18, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x76,
0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x22, 0x1d, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72,
0x0a, 0x1b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x44, 0x69, 0x74, 0x74, 0x6f, 0x41, 0x63, 0x74, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73,
0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
0x16, 0x49, 0x73, 0x42, 0x75, 0x67, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x22, 0x31, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63,
0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x63, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63,
0x73, 0x22, 0x40, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x73, 0x22, 0x36, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x55, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
0x73, 0x65, 0x72, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x64, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x1b,
0x61, 0x74, 0x61, 0x22, 0x29, 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63,
0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x91, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20,
0x01, 0x0a, 0x19, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x52, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f,
0x65, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x6e, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6f, 0x6f, 0x6c, 0x31,
0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x62, 0x6f, 0x6f, 0x6c, 0x31, 0x12, 0x18, 0x0a,
0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x22, 0x1d, 0x0a, 0x1b, 0x4e, 0x6f, 0x74, 0x69, 0x66,
0x70, 0x61, 0x69, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x79, 0x44, 0x69, 0x74, 0x74, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65,
0x61, 0x69, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x16, 0x49, 0x73, 0x42, 0x75, 0x67, 0x6c,
0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x65, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x6f, 0x72, 0x22, 0x6c, 0x0a, 0x18, 0x57, 0x65, 0x62, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x40, 0x0a, 0x12, 0x47, 0x65,
0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x2e, 0x12, 0x2a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x6c, 0x65, 0x72,
0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x12, 0x10, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x29, 0x0a, 0x13,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x22, 0x9e, 0x02, 0x0a, 0x1a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x6e, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x66, 0x72,
0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x65, 0x73, 0x68, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x73,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e,
0x2e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x65, 0x73,
0x67, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x12, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74,
0x2a, 0x0a, 0x07, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69,
0x32, 0x10, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x69, 0x72, 0x4b, 0x65, 0x79,
0x63, 0x65, 0x52, 0x07, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x69, 0x72, 0x4b, 0x65, 0x79, 0x12,
0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0a, 0x70, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x03, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x6f, 0x72, 0x22, 0x6c, 0x0a, 0x18, 0x57,
0x61, 0x6c, 0x69, 0x64, 0x46, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x76, 0x65, 0x62, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52,
0x61, 0x6c, 0x69, 0x64, 0x46, 0x6f, 0x72, 0x12, 0x38, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x72, 0x64,
0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e,
0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6f, 0x72,
0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x44, 0x18, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02,
0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x9e, 0x02, 0x0a, 0x1a, 0x52, 0x65,
0x44, 0x22, 0x2b, 0x0a, 0x11, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4d, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x79,
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6f, 0x72,
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x22, 0x55, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
0x0a, 0x0b, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69,
0x10, 0x74, 0x61, 0x63, 0x68, 0x79, 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x63, 0x6f, 0x6f,
0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x74, 0x61, 0x63, 0x68, 0x79, 0x6f, 0x6e, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x07, 0x62, 0x72, 0x6f, 0x77,
0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x65, 0x73, 0x73,
0x69, 0x64, 0x46, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x62, 0x72, 0x6f,
0x69, 0x64, 0x46, 0x6f, 0x72, 0x42, 0x0e, 0x5a, 0x0c, 0x2e, 0x2e, 0x2f, 0x2e, 0x2e, 0x2f, 0x62, 0x77, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x4b,
0x69, 0x6e, 0x61, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x61, 0x69, 0x72, 0x69, 0x6e,
0x67, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x6f, 0x72,
0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x6f, 0x72,
0x12, 0x38, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x18,
0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x61,
0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x44, 0x22, 0x2b, 0x0a, 0x11, 0x43, 0x6f,
0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
0x06, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x31, 0x22, 0x55, 0x0a, 0x0b, 0x41, 0x75, 0x74, 0x68, 0x4b,
0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x61, 0x63, 0x68, 0x79, 0x6f,
0x6e, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x10, 0x74, 0x61, 0x63, 0x68, 0x79, 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b,
0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x6f, 0x72, 0x18, 0x02,
0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x6f, 0x72, 0x42, 0x0e,
0x5a, 0x0c, 0x2e, 0x2e, 0x2f, 0x2e, 0x2e, 0x2f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -1184,7 +1352,7 @@ func file_responses_proto_rawDescGZIP() []byte {
return file_responses_proto_rawDescData return file_responses_proto_rawDescData
} }
var file_responses_proto_msgTypes = make([]protoimpl.MessageInfo, 19) var file_responses_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
var file_responses_proto_goTypes = []interface{}{ var file_responses_proto_goTypes = []interface{}{
(*ParticipantThumbnail)(nil), // 0: responses.ParticipantThumbnail (*ParticipantThumbnail)(nil), // 0: responses.ParticipantThumbnail
(*Thumbnail)(nil), // 1: responses.Thumbnail (*Thumbnail)(nil), // 1: responses.Thumbnail
@ -1193,42 +1361,50 @@ var file_responses_proto_goTypes = []interface{}{
(*RevokeRelayPairingResponse)(nil), // 4: responses.RevokeRelayPairingResponse (*RevokeRelayPairingResponse)(nil), // 4: responses.RevokeRelayPairingResponse
(*RefreshAuthData)(nil), // 5: responses.RefreshAuthData (*RefreshAuthData)(nil), // 5: responses.RefreshAuthData
(*FetchMessagesResponse)(nil), // 6: responses.FetchMessagesResponse (*FetchMessagesResponse)(nil), // 6: responses.FetchMessagesResponse
(*DeleteMessageResponse)(nil), // 7: responses.DeleteMessageResponse (*ListContactsResponse)(nil), // 7: responses.ListContactsResponse
(*UpdateConversationResponse)(nil), // 8: responses.UpdateConversationResponse (*ListTopContactsResponse)(nil), // 8: responses.ListTopContactsResponse
(*GetConversationTypeResponse)(nil), // 9: responses.GetConversationTypeResponse (*GetOrCreateConversationResponse)(nil), // 9: responses.GetOrCreateConversationResponse
(*NotifyDittoActivityResponse)(nil), // 10: responses.NotifyDittoActivityResponse (*DeleteMessageResponse)(nil), // 10: responses.DeleteMessageResponse
(*IsBugleDefaultResponse)(nil), // 11: responses.IsBugleDefaultResponse (*UpdateConversationResponse)(nil), // 11: responses.UpdateConversationResponse
(*GetUpdatesResponse)(nil), // 12: responses.GetUpdatesResponse (*GetConversationTypeResponse)(nil), // 12: responses.GetConversationTypeResponse
(*SendMessageResponse)(nil), // 13: responses.SendMessageResponse (*NotifyDittoActivityResponse)(nil), // 13: responses.NotifyDittoActivityResponse
(*RefreshPhoneRelayResponse)(nil), // 14: responses.RefreshPhoneRelayResponse (*IsBugleDefaultResponse)(nil), // 14: responses.IsBugleDefaultResponse
(*WebEncryptionKeyResponse)(nil), // 15: responses.WebEncryptionKeyResponse (*GetUpdatesResponse)(nil), // 15: responses.GetUpdatesResponse
(*RegisterPhoneRelayResponse)(nil), // 16: responses.RegisterPhoneRelayResponse (*SendMessageResponse)(nil), // 16: responses.SendMessageResponse
(*CoordinateMessage)(nil), // 17: responses.CoordinateMessage (*RefreshPhoneRelayResponse)(nil), // 17: responses.RefreshPhoneRelayResponse
(*AuthKeyData)(nil), // 18: responses.AuthKeyData (*WebEncryptionKeyResponse)(nil), // 18: responses.WebEncryptionKeyResponse
(*Pixels)(nil), // 19: conversations.Pixels (*RegisterPhoneRelayResponse)(nil), // 19: responses.RegisterPhoneRelayResponse
(*Message)(nil), // 20: conversations.Message (*CoordinateMessage)(nil), // 20: responses.CoordinateMessage
(*Cursor)(nil), // 21: conversations.Cursor (*AuthKeyData)(nil), // 21: responses.AuthKeyData
(*UserAlertEvent)(nil), // 22: events.UserAlertEvent (*Pixels)(nil), // 22: conversations.Pixels
(*Device)(nil), // 23: messages.Device (*Message)(nil), // 23: conversations.Message
(*Cursor)(nil), // 24: conversations.Cursor
(*Contact)(nil), // 25: conversations.Contact
(*Conversation)(nil), // 26: conversations.Conversation
(*UserAlertEvent)(nil), // 27: events.UserAlertEvent
(*Device)(nil), // 28: messages.Device
} }
var file_responses_proto_depIdxs = []int32{ var file_responses_proto_depIdxs = []int32{
1, // 0: responses.ParticipantThumbnail.thumbnail:type_name -> responses.Thumbnail 1, // 0: responses.ParticipantThumbnail.thumbnail:type_name -> responses.Thumbnail
2, // 1: responses.Thumbnail.data:type_name -> responses.ThumbnailData 2, // 1: responses.Thumbnail.data:type_name -> responses.ThumbnailData
19, // 2: responses.ThumbnailData.pixels:type_name -> conversations.Pixels 22, // 2: responses.ThumbnailData.pixels:type_name -> conversations.Pixels
5, // 3: responses.RegisterRefreshResponse.tokenData:type_name -> responses.RefreshAuthData 5, // 3: responses.RegisterRefreshResponse.tokenData:type_name -> responses.RefreshAuthData
20, // 4: responses.FetchMessagesResponse.messages:type_name -> conversations.Message 23, // 4: responses.FetchMessagesResponse.messages:type_name -> conversations.Message
21, // 5: responses.FetchMessagesResponse.cursor:type_name -> conversations.Cursor 24, // 5: responses.FetchMessagesResponse.cursor:type_name -> conversations.Cursor
22, // 6: responses.GetUpdatesResponse.data:type_name -> events.UserAlertEvent 25, // 6: responses.ListContactsResponse.contacts:type_name -> conversations.Contact
17, // 7: responses.RefreshPhoneRelayResponse.coordinates:type_name -> responses.CoordinateMessage 25, // 7: responses.ListTopContactsResponse.contacts:type_name -> conversations.Contact
17, // 8: responses.WebEncryptionKeyResponse.coordinates:type_name -> responses.CoordinateMessage 26, // 8: responses.GetOrCreateConversationResponse.conversation:type_name -> conversations.Conversation
17, // 9: responses.RegisterPhoneRelayResponse.coordinates:type_name -> responses.CoordinateMessage 27, // 9: responses.GetUpdatesResponse.data:type_name -> events.UserAlertEvent
23, // 10: responses.RegisterPhoneRelayResponse.browser:type_name -> messages.Device 20, // 10: responses.RefreshPhoneRelayResponse.coordinates:type_name -> responses.CoordinateMessage
18, // 11: responses.RegisterPhoneRelayResponse.authKeyData:type_name -> responses.AuthKeyData 20, // 11: responses.WebEncryptionKeyResponse.coordinates:type_name -> responses.CoordinateMessage
12, // [12:12] is the sub-list for method output_type 20, // 12: responses.RegisterPhoneRelayResponse.coordinates:type_name -> responses.CoordinateMessage
12, // [12:12] is the sub-list for method input_type 28, // 13: responses.RegisterPhoneRelayResponse.browser:type_name -> messages.Device
12, // [12:12] is the sub-list for extension type_name 21, // 14: responses.RegisterPhoneRelayResponse.authKeyData:type_name -> responses.AuthKeyData
12, // [12:12] is the sub-list for extension extendee 15, // [15:15] is the sub-list for method output_type
0, // [0:12] is the sub-list for field type_name 15, // [15:15] is the sub-list for method input_type
15, // [15:15] is the sub-list for extension type_name
15, // [15:15] is the sub-list for extension extendee
0, // [0:15] is the sub-list for field type_name
} }
func init() { file_responses_proto_init() } func init() { file_responses_proto_init() }
@ -1325,7 +1501,7 @@ func file_responses_proto_init() {
} }
} }
file_responses_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { file_responses_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*DeleteMessageResponse); i { switch v := v.(*ListContactsResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -1337,7 +1513,7 @@ func file_responses_proto_init() {
} }
} }
file_responses_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { file_responses_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateConversationResponse); i { switch v := v.(*ListTopContactsResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -1349,7 +1525,7 @@ func file_responses_proto_init() {
} }
} }
file_responses_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { file_responses_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetConversationTypeResponse); i { switch v := v.(*GetOrCreateConversationResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -1361,7 +1537,7 @@ func file_responses_proto_init() {
} }
} }
file_responses_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { file_responses_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NotifyDittoActivityResponse); i { switch v := v.(*DeleteMessageResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -1373,7 +1549,7 @@ func file_responses_proto_init() {
} }
} }
file_responses_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { file_responses_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*IsBugleDefaultResponse); i { switch v := v.(*UpdateConversationResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -1385,7 +1561,7 @@ func file_responses_proto_init() {
} }
} }
file_responses_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { file_responses_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetUpdatesResponse); i { switch v := v.(*GetConversationTypeResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -1397,7 +1573,7 @@ func file_responses_proto_init() {
} }
} }
file_responses_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { file_responses_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SendMessageResponse); i { switch v := v.(*NotifyDittoActivityResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -1409,7 +1585,7 @@ func file_responses_proto_init() {
} }
} }
file_responses_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { file_responses_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RefreshPhoneRelayResponse); i { switch v := v.(*IsBugleDefaultResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -1421,7 +1597,7 @@ func file_responses_proto_init() {
} }
} }
file_responses_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { file_responses_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WebEncryptionKeyResponse); i { switch v := v.(*GetUpdatesResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -1433,7 +1609,7 @@ func file_responses_proto_init() {
} }
} }
file_responses_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { file_responses_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RegisterPhoneRelayResponse); i { switch v := v.(*SendMessageResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -1445,7 +1621,7 @@ func file_responses_proto_init() {
} }
} }
file_responses_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { file_responses_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CoordinateMessage); i { switch v := v.(*RefreshPhoneRelayResponse); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -1457,6 +1633,42 @@ func file_responses_proto_init() {
} }
} }
file_responses_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { file_responses_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*WebEncryptionKeyResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_responses_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RegisterPhoneRelayResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_responses_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CoordinateMessage); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_responses_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AuthKeyData); i { switch v := v.(*AuthKeyData); i {
case 0: case 0:
return &v.state return &v.state
@ -1475,7 +1687,7 @@ func file_responses_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_responses_proto_rawDesc, RawDescriptor: file_responses_proto_rawDesc,
NumEnums: 0, NumEnums: 0,
NumMessages: 19, NumMessages: 22,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View file

@ -28,6 +28,73 @@ func (c *Client) ListConversations(count int64, folder binary.ListConversationsP
return res, nil return res, nil
} }
func (c *Client) ListContacts() (*binary.ListContactsResponse, error) {
payload := &binary.ListContactsPayload{
I1: 1,
I2: 350,
I3: 50,
}
actionType := binary.ActionType_LIST_CONTACTS
response, err := c.sessionHandler.sendMessage(actionType, payload)
if err != nil {
return nil, err
}
res, ok := response.Data.Decrypted.(*binary.ListContactsResponse)
if !ok {
return nil, fmt.Errorf("unexpected response type %T, expected *binary.ListContactsResponse", response.Data.Decrypted)
}
return res, nil
}
func (c *Client) ListTopContacts() (*binary.ListTopContactsResponse, error) {
payload := &binary.ListTopContactsPayload{
Count: 8,
}
actionType := binary.ActionType_LIST_TOP_CONTACTS
response, err := c.sessionHandler.sendMessage(actionType, payload)
if err != nil {
return nil, err
}
res, ok := response.Data.Decrypted.(*binary.ListTopContactsResponse)
if !ok {
return nil, fmt.Errorf("unexpected response type %T, expected *binary.ListTopContactsResponse", response.Data.Decrypted)
}
return res, nil
}
func (c *Client) GetOrCreateConversation(numbers []string) (*binary.GetOrCreateConversationResponse, error) {
contacts := make([]*binary.ContactNumber, len(numbers))
for i, number := range numbers {
contacts[i] = &binary.ContactNumber{
MysteriousInt: 7,
Number: number,
Number2: number,
}
}
payload := &binary.GetOrCreateConversationPayload{
Numbers: contacts,
}
actionType := binary.ActionType_GET_OR_CREATE_CONVERSATION
response, err := c.sessionHandler.sendMessage(actionType, payload)
if err != nil {
return nil, err
}
res, ok := response.Data.Decrypted.(*binary.GetOrCreateConversationResponse)
if !ok {
return nil, fmt.Errorf("unexpected response type %T, expected *binary.GetOrCreateConversationResponse", response.Data.Decrypted)
}
return res, nil
}
func (c *Client) GetConversationType(conversationID string) (*binary.GetConversationTypeResponse, error) { func (c *Client) GetConversationType(conversationID string) (*binary.GetConversationTypeResponse, error) {
payload := &binary.ConversationTypePayload{ConversationID: conversationID} payload := &binary.ConversationTypePayload{ConversationID: conversationID}
actionType := binary.ActionType_GET_CONVERSATION_TYPE actionType := binary.ActionType_GET_CONVERSATION_TYPE

View file

@ -41,6 +41,8 @@ func (s *SessionHandler) receiveResponse(resp *pblite.Response) bool {
if evt.Enabled() && resp.Data.Decrypted != nil { if evt.Enabled() && resp.Data.Decrypted != nil {
evt.Str("proto_name", string(resp.Data.Decrypted.ProtoReflect().Descriptor().FullName())). evt.Str("proto_name", string(resp.Data.Decrypted.ProtoReflect().Descriptor().FullName())).
Str("data", base64.StdEncoding.EncodeToString(resp.Data.RawDecrypted)) Str("data", base64.StdEncoding.EncodeToString(resp.Data.RawDecrypted))
} else if resp.Data.RawDecrypted != nil {
evt.Str("unrecognized_data", base64.StdEncoding.EncodeToString(resp.Data.RawDecrypted))
} }
evt.Msg("Received response") evt.Msg("Received response")
ch <- resp ch <- resp

View file

@ -29,4 +29,7 @@ var Routes = map[binary.ActionType]Route{
binary.ActionType_DELETE_MESSAGE: DELETE_MESSAGE, binary.ActionType_DELETE_MESSAGE: DELETE_MESSAGE,
binary.ActionType_TYPING_UPDATES: TYPING_UPDATES, binary.ActionType_TYPING_UPDATES: TYPING_UPDATES,
binary.ActionType_GET_PARTICIPANTS_THUMBNAIL: GET_PARTICIPANT_THUMBNAIL, binary.ActionType_GET_PARTICIPANTS_THUMBNAIL: GET_PARTICIPANT_THUMBNAIL,
binary.ActionType_LIST_CONTACTS: LIST_CONTACTS,
binary.ActionType_LIST_TOP_CONTACTS: LIST_TOP_CONTACTS,
binary.ActionType_GET_OR_CREATE_CONVERSATION: GET_OR_CREATE_CONVERSATION,
} }

View file

@ -28,3 +28,30 @@ var NOTIFY_DITTO_ACTIVITY = Route{
UseSessionID: false, UseSessionID: false,
UseTTL: true, UseTTL: true,
} }
var LIST_CONTACTS = Route{
Action: binary.ActionType_LIST_CONTACTS,
MessageType: binary.MessageType_BUGLE_MESSAGE,
BugleRoute: binary.BugleRoute_DataEvent,
ResponseStruct: &binary.ListContactsResponse{},
UseSessionID: false,
UseTTL: true,
}
var LIST_TOP_CONTACTS = Route{
Action: binary.ActionType_LIST_TOP_CONTACTS,
MessageType: binary.MessageType_BUGLE_MESSAGE,
BugleRoute: binary.BugleRoute_DataEvent,
ResponseStruct: &binary.ListTopContactsResponse{},
UseSessionID: false,
UseTTL: true,
}
var GET_OR_CREATE_CONVERSATION = Route{
Action: binary.ActionType_GET_OR_CREATE_CONVERSATION,
MessageType: binary.MessageType_BUGLE_MESSAGE,
BugleRoute: binary.BugleRoute_DataEvent,
ResponseStruct: &binary.GetOrCreateConversationResponse{},
UseSessionID: false,
UseTTL: true,
}