Add support for Harmony (#1656)

Harmony is a relatively new (1,5yo) chat protocol with a small community.
This introduces support for Harmony into Matterbridge, using the functionality
specifically designed for bridge bots. The implementation is a modest 200 lines
of code.
This commit is contained in:
Janet Blackquill 2021-12-18 16:43:29 -05:00 committed by GitHub
parent 6cb359cb80
commit dbedc99421
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 29626 additions and 0 deletions

252
bridge/harmony/harmony.go Normal file
View File

@ -0,0 +1,252 @@
package harmony
import (
"fmt"
"log"
"strconv"
"strings"
"time"
"github.com/42wim/matterbridge/bridge"
"github.com/42wim/matterbridge/bridge/config"
"github.com/harmony-development/shibshib"
chatv1 "github.com/harmony-development/shibshib/gen/chat/v1"
typesv1 "github.com/harmony-development/shibshib/gen/harmonytypes/v1"
profilev1 "github.com/harmony-development/shibshib/gen/profile/v1"
)
type cachedProfile struct {
data *profilev1.GetProfileResponse
lastUpdated time.Time
}
type Bharmony struct {
*bridge.Config
c *shibshib.Client
profileCache map[uint64]cachedProfile
}
func uToStr(in uint64) string {
return strconv.FormatUint(in, 10)
}
func strToU(in string) (uint64, error) {
return strconv.ParseUint(in, 10, 64)
}
func New(cfg *bridge.Config) bridge.Bridger {
b := &Bharmony{
Config: cfg,
profileCache: map[uint64]cachedProfile{},
}
return b
}
func (b *Bharmony) getProfile(u uint64) (*profilev1.GetProfileResponse, error) {
if v, ok := b.profileCache[u]; ok && time.Since(v.lastUpdated) < time.Minute*10 {
return v.data, nil
}
resp, err := b.c.ProfileKit.GetProfile(&profilev1.GetProfileRequest{
UserId: u,
})
if err != nil {
if v, ok := b.profileCache[u]; ok {
return v.data, nil
}
return nil, err
}
b.profileCache[u] = cachedProfile{
data: resp,
lastUpdated: time.Now(),
}
return resp, nil
}
func (b *Bharmony) avatarFor(m *chatv1.Message) string {
if m.Overrides != nil {
return m.Overrides.GetAvatar()
}
profi, err := b.getProfile(m.AuthorId)
if err != nil {
return ""
}
return b.c.TransformHMCURL(profi.Profile.GetUserAvatar())
}
func (b *Bharmony) usernameFor(m *chatv1.Message) string {
if m.Overrides != nil {
return m.Overrides.GetUsername()
}
profi, err := b.getProfile(m.AuthorId)
if err != nil {
return ""
}
return profi.Profile.UserName
}
func (b *Bharmony) toMessage(msg *shibshib.LocatedMessage) config.Message {
message := config.Message{}
message.Account = b.Account
message.UserID = uToStr(msg.Message.AuthorId)
message.Avatar = b.avatarFor(msg.Message)
message.Username = b.usernameFor(msg.Message)
message.Channel = uToStr(msg.ChannelID)
message.ID = uToStr(msg.MessageId)
switch content := msg.Message.Content.Content.(type) {
case *chatv1.Content_EmbedMessage:
message.Text = "Embed"
case *chatv1.Content_AttachmentMessage:
var s strings.Builder
for idx, attach := range content.AttachmentMessage.Files {
s.WriteString(b.c.TransformHMCURL(attach.Id))
if idx < len(content.AttachmentMessage.Files)-1 {
s.WriteString(", ")
}
}
message.Text = s.String()
case *chatv1.Content_PhotoMessage:
var s strings.Builder
for idx, attach := range content.PhotoMessage.GetPhotos() {
s.WriteString(attach.GetCaption().GetText())
s.WriteString("\n")
s.WriteString(b.c.TransformHMCURL(attach.GetHmc()))
if idx < len(content.PhotoMessage.GetPhotos())-1 {
s.WriteString("\n\n")
}
}
message.Text = s.String()
case *chatv1.Content_TextMessage:
message.Text = content.TextMessage.Content.Text
}
return message
}
func (b *Bharmony) outputMessages() {
for {
msg := <-b.c.EventsStream()
if msg.Message.AuthorId == b.c.UserID {
continue
}
b.Remote <- b.toMessage(msg)
}
}
func (b *Bharmony) GetUint64(conf string) uint64 {
num, err := strToU(b.GetString(conf))
if err != nil {
log.Fatal(err)
}
return num
}
func (b *Bharmony) Connect() (err error) {
b.c, err = shibshib.NewClient(b.GetString("Homeserver"), b.GetString("Token"), b.GetUint64("UserID"))
if err != nil {
return
}
b.c.SubscribeToGuild(b.GetUint64("Community"))
go b.outputMessages()
return nil
}
func (b *Bharmony) send(msg config.Message) (id string, err error) {
msgChan, err := strToU(msg.Channel)
if err != nil {
return
}
retID, err := b.c.ChatKit.SendMessage(&chatv1.SendMessageRequest{
GuildId: b.GetUint64("Community"),
ChannelId: msgChan,
Content: &chatv1.Content{
Content: &chatv1.Content_TextMessage{
TextMessage: &chatv1.Content_TextContent{
Content: &chatv1.FormattedText{
Text: msg.Text,
},
},
},
},
Overrides: &chatv1.Overrides{
Username: &msg.Username,
Avatar: &msg.Avatar,
Reason: &chatv1.Overrides_Bridge{Bridge: &typesv1.Empty{}},
},
InReplyTo: nil,
EchoId: nil,
Metadata: nil,
})
if err != nil {
err = fmt.Errorf("send: error sending message: %w", err)
log.Println(err.Error())
}
return uToStr(retID.MessageId), err
}
func (b *Bharmony) delete(msg config.Message) (id string, err error) {
msgChan, err := strToU(msg.Channel)
if err != nil {
return "", err
}
msgID, err := strToU(msg.ID)
if err != nil {
return "", err
}
_, err = b.c.ChatKit.DeleteMessage(&chatv1.DeleteMessageRequest{
GuildId: b.GetUint64("Community"),
ChannelId: msgChan,
MessageId: msgID,
})
return "", err
}
func (b *Bharmony) typing(msg config.Message) (id string, err error) {
msgChan, err := strToU(msg.Channel)
if err != nil {
return "", err
}
_, err = b.c.ChatKit.Typing(&chatv1.TypingRequest{
GuildId: b.GetUint64("Community"),
ChannelId: msgChan,
})
return "", err
}
func (b *Bharmony) Send(msg config.Message) (id string, err error) {
switch msg.Event {
case "":
return b.send(msg)
case config.EventMsgDelete:
return b.delete(msg)
case config.EventUserTyping:
return b.typing(msg)
default:
return "", nil
}
}
func (b *Bharmony) JoinChannel(channel config.ChannelInfo) error {
return nil
}
func (b *Bharmony) Disconnect() error {
return nil
}

View File

@ -0,0 +1,12 @@
//go:build !noharmony
// +build !noharmony
package bridgemap
import (
bharmony "github.com/42wim/matterbridge/bridge/harmony"
)
func init() {
FullMap["harmony"] = bharmony.New
}

1
go.mod
View File

@ -15,6 +15,7 @@ require (
github.com/google/gops v0.3.22 github.com/google/gops v0.3.22
github.com/gorilla/schema v1.2.0 github.com/gorilla/schema v1.2.0
github.com/gorilla/websocket v1.4.2 github.com/gorilla/websocket v1.4.2
github.com/harmony-development/shibshib v0.0.0-20211127182844-512296f7c548
github.com/hashicorp/golang-lru v0.5.4 github.com/hashicorp/golang-lru v0.5.4
github.com/jpillora/backoff v1.0.0 github.com/jpillora/backoff v1.0.0
github.com/keybase/go-keybase-chat-bot v0.0.0-20211201215354-ee4b23828b55 github.com/keybase/go-keybase-chat-bot v0.0.0-20211201215354-ee4b23828b55

24
go.sum
View File

@ -125,6 +125,7 @@ github.com/advancedlogic/GoOse v0.0.0-20191112112754-e742535969c1/go.mod h1:f3HC
github.com/advancedlogic/GoOse v0.0.0-20200830213114-1225d531e0ad/go.mod h1:f3HCSN1fBWjcpGtXyM119MJgeQl838v6so/PQOqvE1w= github.com/advancedlogic/GoOse v0.0.0-20200830213114-1225d531e0ad/go.mod h1:f3HCSN1fBWjcpGtXyM119MJgeQl838v6so/PQOqvE1w=
github.com/advancedlogic/GoOse v0.0.0-20210820140952-9d5822d4a625/go.mod h1:f3HCSN1fBWjcpGtXyM119MJgeQl838v6so/PQOqvE1w= github.com/advancedlogic/GoOse v0.0.0-20210820140952-9d5822d4a625/go.mod h1:f3HCSN1fBWjcpGtXyM119MJgeQl838v6so/PQOqvE1w=
github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
github.com/alecthomas/repr v0.0.0-20210801044451-80ca428c5142/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
@ -132,6 +133,7 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
github.com/alexcesaro/log v0.0.0-20150915221235-61e686294e58/go.mod h1:YNfsMyWSs+h+PaYkxGeMVmVCX75Zj/pqdjbu12ciCYE= github.com/alexcesaro/log v0.0.0-20150915221235-61e686294e58/go.mod h1:YNfsMyWSs+h+PaYkxGeMVmVCX75Zj/pqdjbu12ciCYE=
github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
github.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/andybalholm/brotli v1.0.3/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
@ -332,6 +334,8 @@ github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htX
github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg=
github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0=
github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8=
github.com/fasthttp/websocket v1.4.3-rc.9/go.mod h1:eXL2zqDbexYJxaCw8/PQlm7VcMK6uoGvwbYbTdt4dFo=
github.com/fasthttp/websocket v1.4.3-rc.10/go.mod h1:xU7SHrziVFuFx3IO24nLKcu4tm3QykCFXhwtwRk9Xd0=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
@ -429,6 +433,8 @@ github.com/gocql/gocql v0.0.0-20190301043612-f6df8288f9b4/go.mod h1:4Fw1eo5iaEhD
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gofiber/fiber/v2 v2.20.1/go.mod h1:/LdZHMUXZvTTo7gU4+b1hclqCAdoQphNQ9bi9gutPyI=
github.com/gofiber/websocket/v2 v2.0.12/go.mod h1:lQRy0u5ACJfiez/e/bhGeYvM0/M940Y3NFw14U3/otI=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
@ -570,6 +576,9 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFb
github.com/h2non/go-is-svg v0.0.0-20160927212452-35e8c4b0612c/go.mod h1:ObS/W+h8RYb1Y7fYivughjxojTmIu5iAIjSrSLCLeqE= github.com/h2non/go-is-svg v0.0.0-20160927212452-35e8c4b0612c/go.mod h1:ObS/W+h8RYb1Y7fYivughjxojTmIu5iAIjSrSLCLeqE=
github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4=
github.com/hako/durafmt v0.0.0-20210608085754-5c1018a4e16b/go.mod h1:VzxiSdG6j1pi7rwGm/xYI5RbtpBgM8sARDXlvEvxlu0= github.com/hako/durafmt v0.0.0-20210608085754-5c1018a4e16b/go.mod h1:VzxiSdG6j1pi7rwGm/xYI5RbtpBgM8sARDXlvEvxlu0=
github.com/harmony-development/hrpc v0.0.0-20211020182021-788fc204a0fe/go.mod h1:B+5b0+n0UpMtqAGtJ2oYlgsArI9LbSJ0/HoySJNzDFY=
github.com/harmony-development/shibshib v0.0.0-20211127182844-512296f7c548 h1:jAnKjA+wco4ONGpCtINd0t+sC+ffF+yYScGqgJ2OG4o=
github.com/harmony-development/shibshib v0.0.0-20211127182844-512296f7c548/go.mod h1:e3LPbk9jFYwu72EVyGPJC7CKBBSmxb4ZdyJalaaskdc=
github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q=
github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M=
github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
@ -742,6 +751,7 @@ github.com/klauspost/compress v1.10.10/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdY
github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.1/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
@ -814,6 +824,10 @@ github.com/matterbridge/discordgo v0.21.2-0.20210201201054-fb39a175b4f7 h1:4J2YZ
github.com/matterbridge/discordgo v0.21.2-0.20210201201054-fb39a175b4f7/go.mod h1:411nZYv0UMMrtppR5glXop1foboJiFAowy+42U+Ahvw= github.com/matterbridge/discordgo v0.21.2-0.20210201201054-fb39a175b4f7/go.mod h1:411nZYv0UMMrtppR5glXop1foboJiFAowy+42U+Ahvw=
github.com/matterbridge/go-xmpp v0.0.0-20211030125215-791a06c5f1be h1:zlirT+LngOJ60G6FVzI87DljGZLUnfNzmXja61EjtYM= github.com/matterbridge/go-xmpp v0.0.0-20211030125215-791a06c5f1be h1:zlirT+LngOJ60G6FVzI87DljGZLUnfNzmXja61EjtYM=
github.com/matterbridge/go-xmpp v0.0.0-20211030125215-791a06c5f1be/go.mod h1:ECDRehsR9TYTKCAsRS8/wLeOk6UUqDydw47ln7wG41Q= github.com/matterbridge/go-xmpp v0.0.0-20211030125215-791a06c5f1be/go.mod h1:ECDRehsR9TYTKCAsRS8/wLeOk6UUqDydw47ln7wG41Q=
github.com/matterbridge/go-xmpp v0.0.0-20180131083630-7ec2b8b7def6 h1:GDh7egrbDEzP41mScMt7Q/uPM2nJENh9LNFXjUOGts8=
github.com/matterbridge/go-xmpp v0.0.0-20180131083630-7ec2b8b7def6/go.mod h1:ECDRehsR9TYTKCAsRS8/wLeOk6UUqDydw47ln7wG41Q=
github.com/matterbridge/go-xmpp v0.0.0-20210731150933-5702291c239f h1:1hfavl4YOoRjgTBWezeX8WXCGnhrxnfEgQtb38wQnyg=
github.com/matterbridge/go-xmpp v0.0.0-20210731150933-5702291c239f/go.mod h1:ECDRehsR9TYTKCAsRS8/wLeOk6UUqDydw47ln7wG41Q=
github.com/matterbridge/gozulipbot v0.0.0-20211023205727-a19d6c1f3b75 h1:GslZKF7lW7oSisycGLpxPO+TnKJuA4VZuTWIfYZrClc= github.com/matterbridge/gozulipbot v0.0.0-20211023205727-a19d6c1f3b75 h1:GslZKF7lW7oSisycGLpxPO+TnKJuA4VZuTWIfYZrClc=
github.com/matterbridge/gozulipbot v0.0.0-20211023205727-a19d6c1f3b75/go.mod h1:yAjnZ34DuDyPHMPHHjOsTk/FefW4JJjoMMCGt/8uuQA= github.com/matterbridge/gozulipbot v0.0.0-20211023205727-a19d6c1f3b75/go.mod h1:yAjnZ34DuDyPHMPHHjOsTk/FefW4JJjoMMCGt/8uuQA=
github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba h1:XleOY4IjAEIcxAh+IFwT5JT5Ze3RHiYz6m+4ZfZ0rc0= github.com/matterbridge/logrus-prefixed-formatter v0.5.3-0.20200523233437-d971309a77ba h1:XleOY4IjAEIcxAh+IFwT5JT5Ze3RHiYz6m+4ZfZ0rc0=
@ -872,6 +886,8 @@ github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOq
github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/mattn/go-xmpp v0.0.0-20211029151415-912ba614897a h1:BRuMO9LUDuGp6viOhrEbmuXNlvC78X5QdsnY9Wc+cqM=
github.com/mattn/go-xmpp v0.0.0-20211029151415-912ba614897a/go.mod h1:Cs5mF0OsrRRmhkyOod//ldNPOwJsrBvJ+1WRspv0xoc=
github.com/mattn/godown v0.0.1 h1:39uk50ufLVQFs0eapIJVX5fCS74a1Fs2g5f1MVqIHdE= github.com/mattn/godown v0.0.1 h1:39uk50ufLVQFs0eapIJVX5fCS74a1Fs2g5f1MVqIHdE=
github.com/mattn/godown v0.0.1/go.mod h1:/ivCKurgV/bx6yqtP/Jtc2Xmrv3beCYBvlfAUl4X5g4= github.com/mattn/godown v0.0.1/go.mod h1:/ivCKurgV/bx6yqtP/Jtc2Xmrv3beCYBvlfAUl4X5g4=
github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw=
@ -1108,6 +1124,7 @@ github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca h1:NugYot0LIVPxT
github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU= github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=
github.com/satori/go.uuid v0.0.0-20180103174451-36e9d2ebbde5/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/satori/go.uuid v0.0.0-20180103174451-36e9d2ebbde5/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
github.com/savsgio/gotils v0.0.0-20210921075833-21a6215cb0e4/go.mod h1:oejLrk1Y/5zOF+c/aHtXqn3TFlzzbAgPWg8zBiAHDas=
github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g=
github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw=
github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4/go.mod h1:C1a7PQSMz9NShzorzCiG2fk9+xuCgLkPeCvMHYR2OWg= github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4/go.mod h1:C1a7PQSMz9NShzorzCiG2fk9+xuCgLkPeCvMHYR2OWg=
@ -1260,10 +1277,14 @@ github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKn
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w=
github.com/valyala/fasthttp v1.29.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus=
github.com/valyala/fasthttp v1.30.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus=
github.com/valyala/fasthttp v1.31.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus=
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio=
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU=
github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM=
github.com/vincent-petithory/dataurl v1.0.0 h1:cXw+kPto8NLuJtlMsI152irrVw9fRDX8AbShPRpg2CI= github.com/vincent-petithory/dataurl v1.0.0 h1:cXw+kPto8NLuJtlMsI152irrVw9fRDX8AbShPRpg2CI=
@ -1511,6 +1532,7 @@ golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
@ -1655,6 +1677,8 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20211006225509-1a26e0398eed h1:E159xujlywdAeN3FqsTBPzRKGUq/pDHolXbuttkC36E= golang.org/x/sys v0.0.0-20211006225509-1a26e0398eed h1:E159xujlywdAeN3FqsTBPzRKGUq/pDHolXbuttkC36E=
golang.org/x/sys v0.0.0-20211006225509-1a26e0398eed/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211006225509-1a26e0398eed/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac h1:oN6lz7iLW/YC7un8pq+9bOLyXrprv2+DKfkJY+2LJJw=
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

View File

@ -1660,6 +1660,18 @@ StripNick=false
#OPTIONAL (default false) #OPTIONAL (default false)
ShowTopicChange=false ShowTopicChange=false
###################################################################
# Harmony
###################################################################
[harmony.chat_harmonyapp_io]
Homeserver = "https://chat.harmonyapp.io:2289"
Token = "your token goes here"
UserID = "user id of the bot account"
Community = "community id that channels will be located in"
UseUserName = true
RemoteNickFormat = "{NICK}"
################################################################### ###################################################################
#API #API
################################################################### ###################################################################
@ -1953,6 +1965,10 @@ enable=true
account="zulip.streamchat" account="zulip.streamchat"
channel="general/topic:mytopic" channel="general/topic:mytopic"
[[gateway.inout]]
account="harmony.chat_harmonyapp_io"
channel="channel id goes here"
#API example #API example
#[[gateway.inout]] #[[gateway.inout]]
#account="api.local" #account="api.local"

View File

@ -0,0 +1,12 @@
version: v1
managed:
enabled: true
go_package_prefix:
default: github.com/harmony-development/shibshib/gen
plugins:
- name: go
out: gen
opt: paths=source_relative
- name: go-hrpc
out: gen
opt: paths=source_relative

View File

@ -0,0 +1,216 @@
package shibshib
import (
"errors"
"fmt"
"net/http"
"net/url"
"strconv"
"strings"
"sync"
authv1 "github.com/harmony-development/shibshib/gen/auth/v1"
chatv1 "github.com/harmony-development/shibshib/gen/chat/v1"
profilev1 "github.com/harmony-development/shibshib/gen/profile/v1"
)
type Client struct {
ChatKit chatv1.HTTPChatServiceClient
AuthKit authv1.HTTPAuthServiceClient
ProfileKit profilev1.HTTPProfileServiceClient
ErrorHandler func(error)
UserID uint64
incomingEvents <-chan *chatv1.StreamEventsResponse
outgoingEvents chan<- *chatv1.StreamEventsRequest
subscribedGuilds []uint64
onceHandlers []func(*LocatedMessage)
events chan *LocatedMessage
homeserver string
sessionToken string
streaming bool
mtx *sync.Mutex
}
var ErrEndOfStream = errors.New("end of stream")
func (c *Client) init(h string, wsp, wsph string) {
c.events = make(chan *LocatedMessage)
c.mtx = new(sync.Mutex)
c.ErrorHandler = func(e error) {
panic(e)
}
c.homeserver = h
c.ChatKit = chatv1.HTTPChatServiceClient{*http.DefaultClient, h, wsp, wsph, http.Header{}}
c.AuthKit = authv1.HTTPAuthServiceClient{*http.DefaultClient, h, wsp, wsph, http.Header{}}
c.ProfileKit = profilev1.HTTPProfileServiceClient{*http.DefaultClient, h, wsp, wsph, http.Header{}}
}
func (c *Client) authed(token string, userID uint64) {
c.sessionToken = token
c.ChatKit.Header.Add("Authorization", token)
c.AuthKit.Header.Add("Authorization", token)
c.ProfileKit.Header.Add("Authorization", token)
c.UserID = userID
}
func NewClient(homeserver, token string, userid uint64) (ret *Client, err error) {
url, err := url.Parse(homeserver)
if err != nil {
return nil, err
}
it := "wss"
if url.Scheme == "http" {
it = "ws"
}
ret = &Client{}
ret.homeserver = homeserver
ret.init(homeserver, it, url.Host)
ret.authed(token, userid)
err = ret.StreamEvents()
if err != nil {
ret = nil
return
}
return
}
func (c *Client) StreamEvents() (err error) {
c.mtx.Lock()
defer c.mtx.Unlock()
if c.streaming {
return
}
it := make(chan *chatv1.StreamEventsRequest)
c.outgoingEvents = it
c.incomingEvents, err = c.ChatKit.StreamEvents(it)
if err != nil {
err = fmt.Errorf("StreamEvents: failed to open stream: %w", err)
return
}
c.streaming = true
go func() {
for ev := range c.incomingEvents {
chat, ok := ev.Event.(*chatv1.StreamEventsResponse_Chat)
if !ok {
continue
}
msg, ok := chat.Chat.Event.(*chatv1.StreamEvent_SentMessage)
if !ok {
continue
}
imsg := &LocatedMessage{
GuildID: msg.SentMessage.GuildId,
ChannelID: msg.SentMessage.ChannelId,
MessageWithId: chatv1.MessageWithId{
MessageId: msg.SentMessage.MessageId,
Message: msg.SentMessage.Message,
},
}
for _, h := range c.onceHandlers {
h(imsg)
}
c.onceHandlers = make([]func(*LocatedMessage), 0)
c.events <- imsg
}
c.mtx.Lock()
defer c.mtx.Unlock()
c.streaming = false
c.ErrorHandler(ErrEndOfStream)
}()
return nil
}
func (c *Client) SubscribeToGuild(community uint64) {
for _, g := range c.subscribedGuilds {
if g == community {
return
}
}
c.outgoingEvents <- &chatv1.StreamEventsRequest{
Request: &chatv1.StreamEventsRequest_SubscribeToGuild_{
SubscribeToGuild: &chatv1.StreamEventsRequest_SubscribeToGuild{
GuildId: community,
},
},
}
c.subscribedGuilds = append(c.subscribedGuilds, community)
}
func (c *Client) SubscribedGuilds() []uint64 {
return c.subscribedGuilds
}
func (c *Client) SendMessage(msg *chatv1.SendMessageRequest) (*chatv1.SendMessageResponse, error) {
return c.ChatKit.SendMessage(msg)
}
func (c *Client) TransformHMCURL(hmc string) string {
if !strings.HasPrefix(hmc, "hmc://") {
return fmt.Sprintf("%s/_harmony/media/download/%s", c.homeserver, hmc)
}
trimmed := strings.TrimPrefix(hmc, "hmc://")
split := strings.Split(trimmed, "/")
if len(split) != 2 {
return fmt.Sprintf("malformed URL: %s", hmc)
}
return fmt.Sprintf("https://%s/_harmony/media/download/%s", split[0], split[1])
}
func (c *Client) UsernameFor(m *chatv1.Message) string {
if m.Overrides != nil {
return m.Overrides.GetUsername()
}
resp, err := c.ProfileKit.GetProfile(&profilev1.GetProfileRequest{
UserId: m.AuthorId,
})
if err != nil {
return strconv.FormatUint(m.AuthorId, 10)
}
return resp.Profile.UserName
}
func (c *Client) AvatarFor(m *chatv1.Message) string {
if m.Overrides != nil {
return m.Overrides.GetAvatar()
}
resp, err := c.ProfileKit.GetProfile(&profilev1.GetProfileRequest{
UserId: m.AuthorId,
})
if err != nil {
return ""
}
return c.TransformHMCURL(resp.Profile.GetUserAvatar())
}
func (c *Client) EventsStream() <-chan *LocatedMessage {
return c.events
}
func (c *Client) HandleOnce(f func(*LocatedMessage)) {
c.onceHandlers = append(c.onceHandlers, f)
}

View File

@ -0,0 +1,164 @@
package shibshib
import (
"fmt"
"net/url"
"reflect"
"strings"
authv1 "github.com/harmony-development/shibshib/gen/auth/v1"
chatv1 "github.com/harmony-development/shibshib/gen/chat/v1"
)
type FederatedClient struct {
Client
homeserver string
subclients map[string]*Client
streams map[<-chan *LocatedMessage]*Client
listening map[*Client]<-chan *LocatedMessage
}
type FederatedEvent struct {
Client *Client
Event *LocatedMessage
}
func NewFederatedClient(homeserver, token string, userID uint64) (*FederatedClient, error) {
url, err := url.Parse(homeserver)
if err != nil {
return nil, err
}
it := "wss"
if url.Scheme == "http" {
it = "ws"
}
self := &FederatedClient{}
self.homeserver = homeserver
self.Client.homeserver = homeserver
self.init(homeserver, it, url.Host)
self.authed(token, userID)
self.subclients = make(map[string]*Client)
self.streams = make(map[<-chan *LocatedMessage]*Client)
self.listening = make(map[*Client]<-chan *LocatedMessage)
err = self.StreamEvents()
if err != nil {
return nil, fmt.Errorf("NewFederatedClient: own streamevents failed: %w", err)
}
return self, nil
}
func (f *FederatedClient) clientFor(homeserver string) (*Client, error) {
if f.homeserver == homeserver || strings.Split(homeserver, ":")[0] == "localhost" || homeserver == "" {
return &f.Client, nil
}
if val, ok := f.subclients[homeserver]; ok {
return val, nil
}
session, err := f.AuthKit.Federate(&authv1.FederateRequest{
ServerId: homeserver,
})
if err != nil {
return nil, fmt.Errorf("ClientFor: homeserver federation step failed: %w", err)
}
url, err := url.Parse(homeserver)
if err != nil {
return nil, err
}
scheme := "wss"
if url.Scheme == "http" {
scheme = "ws"
}
c := new(Client)
c.init(homeserver, scheme, url.Host)
data, err := c.AuthKit.LoginFederated(&authv1.LoginFederatedRequest{
AuthToken: session.Token,
ServerId: f.homeserver,
})
if err != nil {
return nil, fmt.Errorf("ClientFor: failed to log into foreignserver: %w", err)
}
c.authed(data.Session.SessionToken, data.Session.UserId)
err = c.StreamEvents()
if err != nil {
return nil, fmt.Errorf("ClientFor: failed to stream events for foreign server: %w", err)
}
f.subclients[homeserver] = c
return c, nil
}
func (f *FederatedClient) Start() (<-chan FederatedEvent, error) {
list, err := f.ChatKit.GetGuildList(&chatv1.GetGuildListRequest{})
if err != nil {
return nil, fmt.Errorf("Start: failed to get guild list on homeserver: %w", err)
}
cases := []reflect.SelectCase{}
for _, g := range list.Guilds {
client, err := f.clientFor(g.ServerId)
if err != nil {
return nil, fmt.Errorf("Start: failed to get client for guild %s/%d: %w", g.ServerId, g.GuildId, err)
}
stream, ok := f.listening[client]
if !ok {
stream = client.EventsStream()
cases = append(cases, reflect.SelectCase{
Dir: reflect.SelectRecv,
Chan: reflect.ValueOf(stream),
})
client.ErrorHandler = func(e error) {
if e == ErrEndOfStream {
err := client.StreamEvents()
if err != nil {
panic(fmt.Errorf("client.ErrorHandler: could not restart stream: %w", err))
}
cp := client.subscribedGuilds
client.subscribedGuilds = make([]uint64, 0)
for _, gg := range cp {
client.SubscribeToGuild(gg)
}
} else {
panic(err)
}
}
f.listening[client] = stream
f.streams[stream] = client
}
client.SubscribeToGuild(g.GuildId)
}
channel := make(chan FederatedEvent)
go func() {
for {
i, v, ok := reflect.Select(cases)
if !ok {
cases = append(cases[:i], cases[i+1:]...)
}
val := v.Interface().(*LocatedMessage)
channel <- FederatedEvent{
Event: val,
Client: f.streams[cases[i].Chan.Interface().(<-chan *LocatedMessage)],
}
}
}()
return channel, nil
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,416 @@
// Code generated by protoc-gen-go-hrpc. DO NOT EDIT.
package authv1
import (
bytes "bytes"
context "context"
errors "errors"
proto "google.golang.org/protobuf/proto"
ioutil "io/ioutil"
http "net/http"
httptest "net/http/httptest"
)
type AuthServiceClient interface {
// Federate with a foreignserver, obtaining a token
// you can use to call LoginFederated on it
Federate(context.Context, *FederateRequest) (*FederateResponse, error)
// Present a token to a foreignserver from a Federate call
// on your homeserver in order to login
LoginFederated(context.Context, *LoginFederatedRequest) (*LoginFederatedResponse, error)
// Returns the public key of this server
Key(context.Context, *KeyRequest) (*KeyResponse, error)
// Begins an authentication session
BeginAuth(context.Context, *BeginAuthRequest) (*BeginAuthResponse, error)
// Goes to the next step of the authentication session,
// possibly presenting user input
NextStep(context.Context, *NextStepRequest) (*NextStepResponse, error)
// Goes to the previous step of the authentication session
// if possible
StepBack(context.Context, *StepBackRequest) (*StepBackResponse, error)
// Consume the steps of an authentication session
// as a stream
StreamSteps(context.Context, chan *StreamStepsRequest) (chan *StreamStepsResponse, error)
// Check whether or not you're logged in and the session is valid
CheckLoggedIn(context.Context, *CheckLoggedInRequest) (*CheckLoggedInResponse, error)
}
type HTTPAuthServiceClient struct {
Client http.Client
BaseURL string
WebsocketProto string
WebsocketHost string
Header http.Header
}
func (client *HTTPAuthServiceClient) Federate(req *FederateRequest) (*FederateResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.auth.v1.AuthService/Federate", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &FederateResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPAuthServiceClient) LoginFederated(req *LoginFederatedRequest) (*LoginFederatedResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.auth.v1.AuthService/LoginFederated", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &LoginFederatedResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPAuthServiceClient) Key(req *KeyRequest) (*KeyResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.auth.v1.AuthService/Key", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &KeyResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPAuthServiceClient) BeginAuth(req *BeginAuthRequest) (*BeginAuthResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.auth.v1.AuthService/BeginAuth", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &BeginAuthResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPAuthServiceClient) NextStep(req *NextStepRequest) (*NextStepResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.auth.v1.AuthService/NextStep", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &NextStepResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPAuthServiceClient) StepBack(req *StepBackRequest) (*StepBackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.auth.v1.AuthService/StepBack", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &StepBackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPAuthServiceClient) StreamSteps(req *StreamStepsRequest) (chan *StreamStepsResponse, error) {
return nil, errors.New("unimplemented")
}
func (client *HTTPAuthServiceClient) CheckLoggedIn(req *CheckLoggedInRequest) (*CheckLoggedInResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.auth.v1.AuthService/CheckLoggedIn", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &CheckLoggedInResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
type HTTPTestAuthServiceClient struct {
Client interface {
Test(*http.Request, ...int) (*http.Response, error)
}
}
func (client *HTTPTestAuthServiceClient) Federate(req *FederateRequest) (*FederateResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.auth.v1.AuthService/Federate", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &FederateResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestAuthServiceClient) LoginFederated(req *LoginFederatedRequest) (*LoginFederatedResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.auth.v1.AuthService/LoginFederated", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &LoginFederatedResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestAuthServiceClient) Key(req *KeyRequest) (*KeyResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.auth.v1.AuthService/Key", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &KeyResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestAuthServiceClient) BeginAuth(req *BeginAuthRequest) (*BeginAuthResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.auth.v1.AuthService/BeginAuth", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &BeginAuthResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestAuthServiceClient) NextStep(req *NextStepRequest) (*NextStepResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.auth.v1.AuthService/NextStep", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &NextStepResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestAuthServiceClient) StepBack(req *StepBackRequest) (*StepBackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.auth.v1.AuthService/StepBack", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &StepBackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestAuthServiceClient) StreamSteps(req *StreamStepsRequest) (chan *StreamStepsResponse, error) {
return nil, errors.New("unimplemented")
}
func (client *HTTPTestAuthServiceClient) CheckLoggedIn(req *CheckLoggedInRequest) (*CheckLoggedInResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.auth.v1.AuthService/CheckLoggedIn", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &CheckLoggedInResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,716 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.23.0
// protoc v3.17.3
// source: chat/v1/chat.proto
package chatv1
import (
proto "github.com/golang/protobuf/proto"
_ "github.com/harmony-development/shibshib/gen/harmonytypes/v1"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
)
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)
)
// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
var File_chat_v1_chat_proto protoreflect.FileDescriptor
var file_chat_v1_chat_proto_rawDesc = []byte{
0x0a, 0x12, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x75, 0x69,
0x6c, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x63, 0x68, 0x61, 0x74, 0x2f,
0x76, 0x31, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x1a, 0x16, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61,
0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x63, 0x68, 0x61, 0x74, 0x2f,
0x76, 0x31, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74,
0x72, 0x65, 0x61, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0xd4, 0x32, 0x0a, 0x0b, 0x43,
0x68, 0x61, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x61, 0x0a, 0x0b, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e,
0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x5e, 0x0a,
0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x23, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x79, 0x0a,
0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73,
0x73, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69,
0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x65,
0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x78, 0x0a, 0x12, 0x55, 0x70, 0x67, 0x72,
0x61, 0x64, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x2b,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76,
0x31, 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x6f, 0x47,
0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55,
0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c,
0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x07, 0x9a, 0x44, 0x04, 0x08, 0x01,
0x20, 0x01, 0x12, 0x7b, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69,
0x74, 0x65, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69,
0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x1c, 0x9a, 0x44, 0x19, 0x08, 0x01, 0x1a, 0x15, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65,
0x73, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12,
0x7f, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
0x12, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x1d, 0x9a, 0x44, 0x1a, 0x08, 0x01, 0x1a, 0x16, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
0x6c, 0x73, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
0x12, 0x64, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74,
0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x75,
0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x8a, 0x01, 0x0a, 0x11, 0x49, 0x6e, 0x76, 0x69, 0x74,
0x65, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x2a, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e,
0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c,
0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x69,
0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x9a, 0x44, 0x19, 0x08, 0x01, 0x1a, 0x15, 0x69, 0x6e,
0x76, 0x69, 0x74, 0x65, 0x73, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x2e, 0x63, 0x72, 0x65,
0x61, 0x74, 0x65, 0x12, 0x73, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e,
0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50,
0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69,
0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x79, 0x0a, 0x13, 0x52, 0x65, 0x6a, 0x65,
0x63, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12,
0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e,
0x76, 0x31, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67,
0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e,
0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44,
0x02, 0x08, 0x01, 0x12, 0x79, 0x0a, 0x13, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x50, 0x65, 0x6e,
0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x2c, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x67,
0x6e, 0x6f, 0x72, 0x65, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74,
0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x67, 0x6e, 0x6f,
0x72, 0x65, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x58,
0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x21, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
0x2e, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x7b, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x47,
0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47,
0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c,
0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0x13, 0x9a, 0x44, 0x10, 0x08, 0x01, 0x1a, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73,
0x2e, 0x76, 0x69, 0x65, 0x77, 0x12, 0x6d, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c,
0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47,
0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65,
0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a,
0x44, 0x02, 0x08, 0x01, 0x12, 0x70, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64,
0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47,
0x75, 0x69, 0x6c, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x43,
0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x85, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x68,
0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2b, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
0x2e, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61,
0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65,
0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x9a, 0x44, 0x11, 0x08, 0x01, 0x1a,
0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x12, 0x6d,
0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e,
0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61,
0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x9a, 0x44, 0x11, 0x08, 0x01, 0x1a, 0x0d,
0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x12, 0xa3, 0x01,
0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66,
0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61,
0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x9a, 0x44, 0x23,
0x08, 0x01, 0x1a, 0x1f, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65,
0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2d, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x12, 0xac, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68,
0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61,
0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x9a, 0x44, 0x26, 0x08, 0x01, 0x1a, 0x22,
0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x2e,
0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2d, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x12, 0x8c, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61,
0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x9a, 0x44, 0x18, 0x08, 0x01, 0x1a, 0x14, 0x63, 0x68, 0x61,
0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x2e, 0x6d, 0x6f, 0x76,
0x65, 0x12, 0x95, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x43,
0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f,
0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f,
0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x9a, 0x44,
0x18, 0x08, 0x01, 0x1a, 0x14, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2e, 0x6d, 0x61,
0x6e, 0x61, 0x67, 0x65, 0x2e, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x65, 0x78, 0x74, 0x12,
0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e,
0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x54, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x65, 0x78, 0x74,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x9a, 0x44, 0x11, 0x08, 0x01, 0x1a,
0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x73, 0x65, 0x6e, 0x64, 0x12, 0x63,
0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x24, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x75, 0x69,
0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x07, 0x9a, 0x44, 0x04, 0x08,
0x01, 0x20, 0x01, 0x12, 0x7b, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x22, 0x1c, 0x9a, 0x44, 0x19, 0x08, 0x01, 0x1a, 0x15, 0x69, 0x6e, 0x76, 0x69, 0x74,
0x65, 0x73, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
0x12, 0x7f, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
0x6c, 0x12, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61,
0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e,
0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c,
0x65, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x22, 0x1d, 0x9a, 0x44, 0x1a, 0x08, 0x01, 0x1a, 0x16, 0x63, 0x68, 0x61, 0x6e, 0x6e,
0x65, 0x6c, 0x73, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x2e, 0x64, 0x65, 0x6c, 0x65, 0x74,
0x65, 0x12, 0x67, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61,
0x67, 0x65, 0x12, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73,
0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x5b, 0x0a, 0x09, 0x4a, 0x6f,
0x69, 0x6e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x47,
0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4a,
0x6f, 0x69, 0x6e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x5e, 0x0a, 0x0a, 0x4c, 0x65, 0x61, 0x76, 0x65,
0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, 0x75,
0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65,
0x61, 0x76, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x78, 0x0a, 0x0d, 0x54, 0x72, 0x69, 0x67, 0x67,
0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67,
0x67, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x9a, 0x44, 0x13, 0x08, 0x01,
0x1a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
0x72, 0x12, 0x70, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x12, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65,
0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x9a,
0x44, 0x11, 0x08, 0x01, 0x1a, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x73,
0x65, 0x6e, 0x64, 0x12, 0x76, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x61, 0x73, 0x50,
0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65,
0x72, 0x79, 0x48, 0x61, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48,
0x61, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x0e,
0x53, 0x65, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76,
0x31, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x65,
0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x1d, 0x9a, 0x44, 0x1a, 0x08, 0x01, 0x1a, 0x16, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73,
0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x2e, 0x73, 0x65, 0x74,
0x12, 0x82, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69,
0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73,
0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e,
0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x9a, 0x44, 0x1a, 0x08, 0x01, 0x1a, 0x16, 0x70,
0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67,
0x65, 0x2e, 0x67, 0x65, 0x74, 0x12, 0x66, 0x0a, 0x08, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x6c,
0x65, 0x12, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61,
0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x6c, 0x65,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x9a, 0x44, 0x10, 0x08, 0x01, 0x1a,
0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x72, 0x0a,
0x0d, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x26,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76,
0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69,
0x6c, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x10, 0x9a, 0x44, 0x0d, 0x08, 0x01, 0x1a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x67, 0x65,
0x74, 0x12, 0x72, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x6c,
0x65, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61,
0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x6c,
0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x47,
0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0x13, 0x9a, 0x44, 0x10, 0x08, 0x01, 0x1a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x6d,
0x61, 0x6e, 0x61, 0x67, 0x65, 0x12, 0x7b, 0x0a, 0x0f, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x47,
0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x69,
0x66, 0x79, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x47, 0x75, 0x69, 0x6c,
0x64, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x9a,
0x44, 0x10, 0x08, 0x01, 0x1a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x6d, 0x61, 0x6e, 0x61,
0x67, 0x65, 0x12, 0x7b, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c,
0x64, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47,
0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e,
0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f,
0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x9a, 0x44, 0x10, 0x08,
0x01, 0x1a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x12,
0x80, 0x01, 0x0a, 0x0f, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f,
0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x55, 0x73, 0x65,
0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x9a, 0x44, 0x15, 0x08, 0x01, 0x1a,
0x11, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x6d, 0x61, 0x6e, 0x61,
0x67, 0x65, 0x12, 0x64, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c,
0x65, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c,
0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x61, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x69,
0x6e, 0x67, 0x12, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x9a, 0x44, 0x11, 0x08, 0x01, 0x1a, 0x0d, 0x6d, 0x65,
0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x73, 0x65, 0x6e, 0x64, 0x12, 0x62, 0x0a, 0x0c, 0x50,
0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x25, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50,
0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x47, 0x75, 0x69,
0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x9a, 0x44, 0x00, 0x12,
0x8b, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x55, 0x73, 0x65,
0x72, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x55,
0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47,
0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x9a, 0x44, 0x23, 0x08, 0x01, 0x1a, 0x1f, 0x67, 0x75,
0x69, 0x6c, 0x64, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x2d, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x66, 0x0a,
0x07, 0x42, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x55,
0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61,
0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x9a,
0x44, 0x13, 0x08, 0x01, 0x1a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67,
0x65, 0x2e, 0x62, 0x61, 0x6e, 0x12, 0x6a, 0x0a, 0x08, 0x4b, 0x69, 0x63, 0x6b, 0x55, 0x73, 0x65,
0x72, 0x12, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61,
0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x9a, 0x44, 0x14, 0x08, 0x01, 0x1a,
0x10, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x2e, 0x6b, 0x69, 0x63,
0x6b, 0x12, 0x6e, 0x0a, 0x09, 0x55, 0x6e, 0x62, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x22,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76,
0x31, 0x2e, 0x55, 0x6e, 0x62, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x62, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x9a, 0x44, 0x15, 0x08, 0x01, 0x1a, 0x11,
0x75, 0x73, 0x65, 0x72, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x2e, 0x75, 0x6e, 0x62, 0x61,
0x6e, 0x12, 0x82, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x4d,
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x69,
0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64,
0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0x14, 0x9a, 0x44, 0x11, 0x08, 0x01, 0x1a, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x73, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x12, 0x71, 0x0a, 0x0a, 0x50, 0x69, 0x6e, 0x4d, 0x65, 0x73,
0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61,
0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e,
0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x18, 0x9a, 0x44, 0x15, 0x08, 0x01, 0x1a, 0x11, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
0x2e, 0x70, 0x69, 0x6e, 0x73, 0x2e, 0x61, 0x64, 0x64, 0x12, 0x7a, 0x0a, 0x0c, 0x55, 0x6e, 0x70,
0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x70,
0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x70, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x9a, 0x44, 0x18, 0x08, 0x01, 0x1a,
0x14, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x69, 0x6e, 0x73, 0x2e, 0x72,
0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x68, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45,
0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e,
0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x28, 0x01, 0x30, 0x01, 0x12,
0x79, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76,
0x31, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x65, 0x61, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x9a, 0x44, 0x1a,
0x08, 0x01, 0x1a, 0x16, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x72, 0x65, 0x61,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x61, 0x64, 0x64, 0x12, 0x85, 0x01, 0x0a, 0x0e, 0x52,
0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0x20, 0x9a, 0x44, 0x1d, 0x08, 0x01, 0x1a, 0x19, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
0x73, 0x2e, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x72, 0x65, 0x6d, 0x6f,
0x76, 0x65, 0x12, 0x6c, 0x0a, 0x0e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72,
0x73, 0x68, 0x69, 0x70, 0x12, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x4f, 0x77, 0x6e,
0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
0x2e, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x07, 0x9a, 0x44, 0x04, 0x08, 0x01, 0x20, 0x01,
0x12, 0x6f, 0x0a, 0x0f, 0x47, 0x69, 0x76, 0x65, 0x55, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73,
0x68, 0x69, 0x70, 0x12, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x76, 0x65, 0x55, 0x70, 0x4f, 0x77, 0x6e,
0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
0x2e, 0x47, 0x69, 0x76, 0x65, 0x55, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x07, 0x9a, 0x44, 0x04, 0x08, 0x01, 0x20,
0x01, 0x42, 0xbf, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x43, 0x68, 0x61, 0x74,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x2d, 0x64, 0x65, 0x76, 0x65,
0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69, 0x62, 0x73, 0x68, 0x69, 0x62,
0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x68, 0x61,
0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x43, 0x58, 0xaa, 0x02, 0x10, 0x50, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x10, 0x50,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x43, 0x68, 0x61, 0x74, 0x5c, 0x56, 0x31, 0xe2,
0x02, 0x1c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x43, 0x68, 0x61, 0x74, 0x5c,
0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,
0x12, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a, 0x43, 0x68, 0x61, 0x74, 0x3a,
0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var file_chat_v1_chat_proto_goTypes = []interface{}{
(*CreateGuildRequest)(nil), // 0: protocol.chat.v1.CreateGuildRequest
(*CreateRoomRequest)(nil), // 1: protocol.chat.v1.CreateRoomRequest
(*CreateDirectMessageRequest)(nil), // 2: protocol.chat.v1.CreateDirectMessageRequest
(*UpgradeRoomToGuildRequest)(nil), // 3: protocol.chat.v1.UpgradeRoomToGuildRequest
(*CreateInviteRequest)(nil), // 4: protocol.chat.v1.CreateInviteRequest
(*CreateChannelRequest)(nil), // 5: protocol.chat.v1.CreateChannelRequest
(*GetGuildListRequest)(nil), // 6: protocol.chat.v1.GetGuildListRequest
(*InviteUserToGuildRequest)(nil), // 7: protocol.chat.v1.InviteUserToGuildRequest
(*GetPendingInvitesRequest)(nil), // 8: protocol.chat.v1.GetPendingInvitesRequest
(*RejectPendingInviteRequest)(nil), // 9: protocol.chat.v1.RejectPendingInviteRequest
(*IgnorePendingInviteRequest)(nil), // 10: protocol.chat.v1.IgnorePendingInviteRequest
(*GetGuildRequest)(nil), // 11: protocol.chat.v1.GetGuildRequest
(*GetGuildInvitesRequest)(nil), // 12: protocol.chat.v1.GetGuildInvitesRequest
(*GetGuildMembersRequest)(nil), // 13: protocol.chat.v1.GetGuildMembersRequest
(*GetGuildChannelsRequest)(nil), // 14: protocol.chat.v1.GetGuildChannelsRequest
(*GetChannelMessagesRequest)(nil), // 15: protocol.chat.v1.GetChannelMessagesRequest
(*GetMessageRequest)(nil), // 16: protocol.chat.v1.GetMessageRequest
(*UpdateGuildInformationRequest)(nil), // 17: protocol.chat.v1.UpdateGuildInformationRequest
(*UpdateChannelInformationRequest)(nil), // 18: protocol.chat.v1.UpdateChannelInformationRequest
(*UpdateChannelOrderRequest)(nil), // 19: protocol.chat.v1.UpdateChannelOrderRequest
(*UpdateAllChannelOrderRequest)(nil), // 20: protocol.chat.v1.UpdateAllChannelOrderRequest
(*UpdateMessageTextRequest)(nil), // 21: protocol.chat.v1.UpdateMessageTextRequest
(*DeleteGuildRequest)(nil), // 22: protocol.chat.v1.DeleteGuildRequest
(*DeleteInviteRequest)(nil), // 23: protocol.chat.v1.DeleteInviteRequest
(*DeleteChannelRequest)(nil), // 24: protocol.chat.v1.DeleteChannelRequest
(*DeleteMessageRequest)(nil), // 25: protocol.chat.v1.DeleteMessageRequest
(*JoinGuildRequest)(nil), // 26: protocol.chat.v1.JoinGuildRequest
(*LeaveGuildRequest)(nil), // 27: protocol.chat.v1.LeaveGuildRequest
(*TriggerActionRequest)(nil), // 28: protocol.chat.v1.TriggerActionRequest
(*SendMessageRequest)(nil), // 29: protocol.chat.v1.SendMessageRequest
(*QueryHasPermissionRequest)(nil), // 30: protocol.chat.v1.QueryHasPermissionRequest
(*SetPermissionsRequest)(nil), // 31: protocol.chat.v1.SetPermissionsRequest
(*GetPermissionsRequest)(nil), // 32: protocol.chat.v1.GetPermissionsRequest
(*MoveRoleRequest)(nil), // 33: protocol.chat.v1.MoveRoleRequest
(*GetGuildRolesRequest)(nil), // 34: protocol.chat.v1.GetGuildRolesRequest
(*AddGuildRoleRequest)(nil), // 35: protocol.chat.v1.AddGuildRoleRequest
(*ModifyGuildRoleRequest)(nil), // 36: protocol.chat.v1.ModifyGuildRoleRequest
(*DeleteGuildRoleRequest)(nil), // 37: protocol.chat.v1.DeleteGuildRoleRequest
(*ManageUserRolesRequest)(nil), // 38: protocol.chat.v1.ManageUserRolesRequest
(*GetUserRolesRequest)(nil), // 39: protocol.chat.v1.GetUserRolesRequest
(*TypingRequest)(nil), // 40: protocol.chat.v1.TypingRequest
(*PreviewGuildRequest)(nil), // 41: protocol.chat.v1.PreviewGuildRequest
(*GetBannedUsersRequest)(nil), // 42: protocol.chat.v1.GetBannedUsersRequest
(*BanUserRequest)(nil), // 43: protocol.chat.v1.BanUserRequest
(*KickUserRequest)(nil), // 44: protocol.chat.v1.KickUserRequest
(*UnbanUserRequest)(nil), // 45: protocol.chat.v1.UnbanUserRequest
(*GetPinnedMessagesRequest)(nil), // 46: protocol.chat.v1.GetPinnedMessagesRequest
(*PinMessageRequest)(nil), // 47: protocol.chat.v1.PinMessageRequest
(*UnpinMessageRequest)(nil), // 48: protocol.chat.v1.UnpinMessageRequest
(*StreamEventsRequest)(nil), // 49: protocol.chat.v1.StreamEventsRequest
(*AddReactionRequest)(nil), // 50: protocol.chat.v1.AddReactionRequest
(*RemoveReactionRequest)(nil), // 51: protocol.chat.v1.RemoveReactionRequest
(*GrantOwnershipRequest)(nil), // 52: protocol.chat.v1.GrantOwnershipRequest
(*GiveUpOwnershipRequest)(nil), // 53: protocol.chat.v1.GiveUpOwnershipRequest
(*CreateGuildResponse)(nil), // 54: protocol.chat.v1.CreateGuildResponse
(*CreateRoomResponse)(nil), // 55: protocol.chat.v1.CreateRoomResponse
(*CreateDirectMessageResponse)(nil), // 56: protocol.chat.v1.CreateDirectMessageResponse
(*UpgradeRoomToGuildResponse)(nil), // 57: protocol.chat.v1.UpgradeRoomToGuildResponse
(*CreateInviteResponse)(nil), // 58: protocol.chat.v1.CreateInviteResponse
(*CreateChannelResponse)(nil), // 59: protocol.chat.v1.CreateChannelResponse
(*GetGuildListResponse)(nil), // 60: protocol.chat.v1.GetGuildListResponse
(*InviteUserToGuildResponse)(nil), // 61: protocol.chat.v1.InviteUserToGuildResponse
(*GetPendingInvitesResponse)(nil), // 62: protocol.chat.v1.GetPendingInvitesResponse
(*RejectPendingInviteResponse)(nil), // 63: protocol.chat.v1.RejectPendingInviteResponse
(*IgnorePendingInviteResponse)(nil), // 64: protocol.chat.v1.IgnorePendingInviteResponse
(*GetGuildResponse)(nil), // 65: protocol.chat.v1.GetGuildResponse
(*GetGuildInvitesResponse)(nil), // 66: protocol.chat.v1.GetGuildInvitesResponse
(*GetGuildMembersResponse)(nil), // 67: protocol.chat.v1.GetGuildMembersResponse
(*GetGuildChannelsResponse)(nil), // 68: protocol.chat.v1.GetGuildChannelsResponse
(*GetChannelMessagesResponse)(nil), // 69: protocol.chat.v1.GetChannelMessagesResponse
(*GetMessageResponse)(nil), // 70: protocol.chat.v1.GetMessageResponse
(*UpdateGuildInformationResponse)(nil), // 71: protocol.chat.v1.UpdateGuildInformationResponse
(*UpdateChannelInformationResponse)(nil), // 72: protocol.chat.v1.UpdateChannelInformationResponse
(*UpdateChannelOrderResponse)(nil), // 73: protocol.chat.v1.UpdateChannelOrderResponse
(*UpdateAllChannelOrderResponse)(nil), // 74: protocol.chat.v1.UpdateAllChannelOrderResponse
(*UpdateMessageTextResponse)(nil), // 75: protocol.chat.v1.UpdateMessageTextResponse
(*DeleteGuildResponse)(nil), // 76: protocol.chat.v1.DeleteGuildResponse
(*DeleteInviteResponse)(nil), // 77: protocol.chat.v1.DeleteInviteResponse
(*DeleteChannelResponse)(nil), // 78: protocol.chat.v1.DeleteChannelResponse
(*DeleteMessageResponse)(nil), // 79: protocol.chat.v1.DeleteMessageResponse
(*JoinGuildResponse)(nil), // 80: protocol.chat.v1.JoinGuildResponse
(*LeaveGuildResponse)(nil), // 81: protocol.chat.v1.LeaveGuildResponse
(*TriggerActionResponse)(nil), // 82: protocol.chat.v1.TriggerActionResponse
(*SendMessageResponse)(nil), // 83: protocol.chat.v1.SendMessageResponse
(*QueryHasPermissionResponse)(nil), // 84: protocol.chat.v1.QueryHasPermissionResponse
(*SetPermissionsResponse)(nil), // 85: protocol.chat.v1.SetPermissionsResponse
(*GetPermissionsResponse)(nil), // 86: protocol.chat.v1.GetPermissionsResponse
(*MoveRoleResponse)(nil), // 87: protocol.chat.v1.MoveRoleResponse
(*GetGuildRolesResponse)(nil), // 88: protocol.chat.v1.GetGuildRolesResponse
(*AddGuildRoleResponse)(nil), // 89: protocol.chat.v1.AddGuildRoleResponse
(*ModifyGuildRoleResponse)(nil), // 90: protocol.chat.v1.ModifyGuildRoleResponse
(*DeleteGuildRoleResponse)(nil), // 91: protocol.chat.v1.DeleteGuildRoleResponse
(*ManageUserRolesResponse)(nil), // 92: protocol.chat.v1.ManageUserRolesResponse
(*GetUserRolesResponse)(nil), // 93: protocol.chat.v1.GetUserRolesResponse
(*TypingResponse)(nil), // 94: protocol.chat.v1.TypingResponse
(*PreviewGuildResponse)(nil), // 95: protocol.chat.v1.PreviewGuildResponse
(*GetBannedUsersResponse)(nil), // 96: protocol.chat.v1.GetBannedUsersResponse
(*BanUserResponse)(nil), // 97: protocol.chat.v1.BanUserResponse
(*KickUserResponse)(nil), // 98: protocol.chat.v1.KickUserResponse
(*UnbanUserResponse)(nil), // 99: protocol.chat.v1.UnbanUserResponse
(*GetPinnedMessagesResponse)(nil), // 100: protocol.chat.v1.GetPinnedMessagesResponse
(*PinMessageResponse)(nil), // 101: protocol.chat.v1.PinMessageResponse
(*UnpinMessageResponse)(nil), // 102: protocol.chat.v1.UnpinMessageResponse
(*StreamEventsResponse)(nil), // 103: protocol.chat.v1.StreamEventsResponse
(*AddReactionResponse)(nil), // 104: protocol.chat.v1.AddReactionResponse
(*RemoveReactionResponse)(nil), // 105: protocol.chat.v1.RemoveReactionResponse
(*GrantOwnershipResponse)(nil), // 106: protocol.chat.v1.GrantOwnershipResponse
(*GiveUpOwnershipResponse)(nil), // 107: protocol.chat.v1.GiveUpOwnershipResponse
}
var file_chat_v1_chat_proto_depIdxs = []int32{
0, // 0: protocol.chat.v1.ChatService.CreateGuild:input_type -> protocol.chat.v1.CreateGuildRequest
1, // 1: protocol.chat.v1.ChatService.CreateRoom:input_type -> protocol.chat.v1.CreateRoomRequest
2, // 2: protocol.chat.v1.ChatService.CreateDirectMessage:input_type -> protocol.chat.v1.CreateDirectMessageRequest
3, // 3: protocol.chat.v1.ChatService.UpgradeRoomToGuild:input_type -> protocol.chat.v1.UpgradeRoomToGuildRequest
4, // 4: protocol.chat.v1.ChatService.CreateInvite:input_type -> protocol.chat.v1.CreateInviteRequest
5, // 5: protocol.chat.v1.ChatService.CreateChannel:input_type -> protocol.chat.v1.CreateChannelRequest
6, // 6: protocol.chat.v1.ChatService.GetGuildList:input_type -> protocol.chat.v1.GetGuildListRequest
7, // 7: protocol.chat.v1.ChatService.InviteUserToGuild:input_type -> protocol.chat.v1.InviteUserToGuildRequest
8, // 8: protocol.chat.v1.ChatService.GetPendingInvites:input_type -> protocol.chat.v1.GetPendingInvitesRequest
9, // 9: protocol.chat.v1.ChatService.RejectPendingInvite:input_type -> protocol.chat.v1.RejectPendingInviteRequest
10, // 10: protocol.chat.v1.ChatService.IgnorePendingInvite:input_type -> protocol.chat.v1.IgnorePendingInviteRequest
11, // 11: protocol.chat.v1.ChatService.GetGuild:input_type -> protocol.chat.v1.GetGuildRequest
12, // 12: protocol.chat.v1.ChatService.GetGuildInvites:input_type -> protocol.chat.v1.GetGuildInvitesRequest
13, // 13: protocol.chat.v1.ChatService.GetGuildMembers:input_type -> protocol.chat.v1.GetGuildMembersRequest
14, // 14: protocol.chat.v1.ChatService.GetGuildChannels:input_type -> protocol.chat.v1.GetGuildChannelsRequest
15, // 15: protocol.chat.v1.ChatService.GetChannelMessages:input_type -> protocol.chat.v1.GetChannelMessagesRequest
16, // 16: protocol.chat.v1.ChatService.GetMessage:input_type -> protocol.chat.v1.GetMessageRequest
17, // 17: protocol.chat.v1.ChatService.UpdateGuildInformation:input_type -> protocol.chat.v1.UpdateGuildInformationRequest
18, // 18: protocol.chat.v1.ChatService.UpdateChannelInformation:input_type -> protocol.chat.v1.UpdateChannelInformationRequest
19, // 19: protocol.chat.v1.ChatService.UpdateChannelOrder:input_type -> protocol.chat.v1.UpdateChannelOrderRequest
20, // 20: protocol.chat.v1.ChatService.UpdateAllChannelOrder:input_type -> protocol.chat.v1.UpdateAllChannelOrderRequest
21, // 21: protocol.chat.v1.ChatService.UpdateMessageText:input_type -> protocol.chat.v1.UpdateMessageTextRequest
22, // 22: protocol.chat.v1.ChatService.DeleteGuild:input_type -> protocol.chat.v1.DeleteGuildRequest
23, // 23: protocol.chat.v1.ChatService.DeleteInvite:input_type -> protocol.chat.v1.DeleteInviteRequest
24, // 24: protocol.chat.v1.ChatService.DeleteChannel:input_type -> protocol.chat.v1.DeleteChannelRequest
25, // 25: protocol.chat.v1.ChatService.DeleteMessage:input_type -> protocol.chat.v1.DeleteMessageRequest
26, // 26: protocol.chat.v1.ChatService.JoinGuild:input_type -> protocol.chat.v1.JoinGuildRequest
27, // 27: protocol.chat.v1.ChatService.LeaveGuild:input_type -> protocol.chat.v1.LeaveGuildRequest
28, // 28: protocol.chat.v1.ChatService.TriggerAction:input_type -> protocol.chat.v1.TriggerActionRequest
29, // 29: protocol.chat.v1.ChatService.SendMessage:input_type -> protocol.chat.v1.SendMessageRequest
30, // 30: protocol.chat.v1.ChatService.QueryHasPermission:input_type -> protocol.chat.v1.QueryHasPermissionRequest
31, // 31: protocol.chat.v1.ChatService.SetPermissions:input_type -> protocol.chat.v1.SetPermissionsRequest
32, // 32: protocol.chat.v1.ChatService.GetPermissions:input_type -> protocol.chat.v1.GetPermissionsRequest
33, // 33: protocol.chat.v1.ChatService.MoveRole:input_type -> protocol.chat.v1.MoveRoleRequest
34, // 34: protocol.chat.v1.ChatService.GetGuildRoles:input_type -> protocol.chat.v1.GetGuildRolesRequest
35, // 35: protocol.chat.v1.ChatService.AddGuildRole:input_type -> protocol.chat.v1.AddGuildRoleRequest
36, // 36: protocol.chat.v1.ChatService.ModifyGuildRole:input_type -> protocol.chat.v1.ModifyGuildRoleRequest
37, // 37: protocol.chat.v1.ChatService.DeleteGuildRole:input_type -> protocol.chat.v1.DeleteGuildRoleRequest
38, // 38: protocol.chat.v1.ChatService.ManageUserRoles:input_type -> protocol.chat.v1.ManageUserRolesRequest
39, // 39: protocol.chat.v1.ChatService.GetUserRoles:input_type -> protocol.chat.v1.GetUserRolesRequest
40, // 40: protocol.chat.v1.ChatService.Typing:input_type -> protocol.chat.v1.TypingRequest
41, // 41: protocol.chat.v1.ChatService.PreviewGuild:input_type -> protocol.chat.v1.PreviewGuildRequest
42, // 42: protocol.chat.v1.ChatService.GetBannedUsers:input_type -> protocol.chat.v1.GetBannedUsersRequest
43, // 43: protocol.chat.v1.ChatService.BanUser:input_type -> protocol.chat.v1.BanUserRequest
44, // 44: protocol.chat.v1.ChatService.KickUser:input_type -> protocol.chat.v1.KickUserRequest
45, // 45: protocol.chat.v1.ChatService.UnbanUser:input_type -> protocol.chat.v1.UnbanUserRequest
46, // 46: protocol.chat.v1.ChatService.GetPinnedMessages:input_type -> protocol.chat.v1.GetPinnedMessagesRequest
47, // 47: protocol.chat.v1.ChatService.PinMessage:input_type -> protocol.chat.v1.PinMessageRequest
48, // 48: protocol.chat.v1.ChatService.UnpinMessage:input_type -> protocol.chat.v1.UnpinMessageRequest
49, // 49: protocol.chat.v1.ChatService.StreamEvents:input_type -> protocol.chat.v1.StreamEventsRequest
50, // 50: protocol.chat.v1.ChatService.AddReaction:input_type -> protocol.chat.v1.AddReactionRequest
51, // 51: protocol.chat.v1.ChatService.RemoveReaction:input_type -> protocol.chat.v1.RemoveReactionRequest
52, // 52: protocol.chat.v1.ChatService.GrantOwnership:input_type -> protocol.chat.v1.GrantOwnershipRequest
53, // 53: protocol.chat.v1.ChatService.GiveUpOwnership:input_type -> protocol.chat.v1.GiveUpOwnershipRequest
54, // 54: protocol.chat.v1.ChatService.CreateGuild:output_type -> protocol.chat.v1.CreateGuildResponse
55, // 55: protocol.chat.v1.ChatService.CreateRoom:output_type -> protocol.chat.v1.CreateRoomResponse
56, // 56: protocol.chat.v1.ChatService.CreateDirectMessage:output_type -> protocol.chat.v1.CreateDirectMessageResponse
57, // 57: protocol.chat.v1.ChatService.UpgradeRoomToGuild:output_type -> protocol.chat.v1.UpgradeRoomToGuildResponse
58, // 58: protocol.chat.v1.ChatService.CreateInvite:output_type -> protocol.chat.v1.CreateInviteResponse
59, // 59: protocol.chat.v1.ChatService.CreateChannel:output_type -> protocol.chat.v1.CreateChannelResponse
60, // 60: protocol.chat.v1.ChatService.GetGuildList:output_type -> protocol.chat.v1.GetGuildListResponse
61, // 61: protocol.chat.v1.ChatService.InviteUserToGuild:output_type -> protocol.chat.v1.InviteUserToGuildResponse
62, // 62: protocol.chat.v1.ChatService.GetPendingInvites:output_type -> protocol.chat.v1.GetPendingInvitesResponse
63, // 63: protocol.chat.v1.ChatService.RejectPendingInvite:output_type -> protocol.chat.v1.RejectPendingInviteResponse
64, // 64: protocol.chat.v1.ChatService.IgnorePendingInvite:output_type -> protocol.chat.v1.IgnorePendingInviteResponse
65, // 65: protocol.chat.v1.ChatService.GetGuild:output_type -> protocol.chat.v1.GetGuildResponse
66, // 66: protocol.chat.v1.ChatService.GetGuildInvites:output_type -> protocol.chat.v1.GetGuildInvitesResponse
67, // 67: protocol.chat.v1.ChatService.GetGuildMembers:output_type -> protocol.chat.v1.GetGuildMembersResponse
68, // 68: protocol.chat.v1.ChatService.GetGuildChannels:output_type -> protocol.chat.v1.GetGuildChannelsResponse
69, // 69: protocol.chat.v1.ChatService.GetChannelMessages:output_type -> protocol.chat.v1.GetChannelMessagesResponse
70, // 70: protocol.chat.v1.ChatService.GetMessage:output_type -> protocol.chat.v1.GetMessageResponse
71, // 71: protocol.chat.v1.ChatService.UpdateGuildInformation:output_type -> protocol.chat.v1.UpdateGuildInformationResponse
72, // 72: protocol.chat.v1.ChatService.UpdateChannelInformation:output_type -> protocol.chat.v1.UpdateChannelInformationResponse
73, // 73: protocol.chat.v1.ChatService.UpdateChannelOrder:output_type -> protocol.chat.v1.UpdateChannelOrderResponse
74, // 74: protocol.chat.v1.ChatService.UpdateAllChannelOrder:output_type -> protocol.chat.v1.UpdateAllChannelOrderResponse
75, // 75: protocol.chat.v1.ChatService.UpdateMessageText:output_type -> protocol.chat.v1.UpdateMessageTextResponse
76, // 76: protocol.chat.v1.ChatService.DeleteGuild:output_type -> protocol.chat.v1.DeleteGuildResponse
77, // 77: protocol.chat.v1.ChatService.DeleteInvite:output_type -> protocol.chat.v1.DeleteInviteResponse
78, // 78: protocol.chat.v1.ChatService.DeleteChannel:output_type -> protocol.chat.v1.DeleteChannelResponse
79, // 79: protocol.chat.v1.ChatService.DeleteMessage:output_type -> protocol.chat.v1.DeleteMessageResponse
80, // 80: protocol.chat.v1.ChatService.JoinGuild:output_type -> protocol.chat.v1.JoinGuildResponse
81, // 81: protocol.chat.v1.ChatService.LeaveGuild:output_type -> protocol.chat.v1.LeaveGuildResponse
82, // 82: protocol.chat.v1.ChatService.TriggerAction:output_type -> protocol.chat.v1.TriggerActionResponse
83, // 83: protocol.chat.v1.ChatService.SendMessage:output_type -> protocol.chat.v1.SendMessageResponse
84, // 84: protocol.chat.v1.ChatService.QueryHasPermission:output_type -> protocol.chat.v1.QueryHasPermissionResponse
85, // 85: protocol.chat.v1.ChatService.SetPermissions:output_type -> protocol.chat.v1.SetPermissionsResponse
86, // 86: protocol.chat.v1.ChatService.GetPermissions:output_type -> protocol.chat.v1.GetPermissionsResponse
87, // 87: protocol.chat.v1.ChatService.MoveRole:output_type -> protocol.chat.v1.MoveRoleResponse
88, // 88: protocol.chat.v1.ChatService.GetGuildRoles:output_type -> protocol.chat.v1.GetGuildRolesResponse
89, // 89: protocol.chat.v1.ChatService.AddGuildRole:output_type -> protocol.chat.v1.AddGuildRoleResponse
90, // 90: protocol.chat.v1.ChatService.ModifyGuildRole:output_type -> protocol.chat.v1.ModifyGuildRoleResponse
91, // 91: protocol.chat.v1.ChatService.DeleteGuildRole:output_type -> protocol.chat.v1.DeleteGuildRoleResponse
92, // 92: protocol.chat.v1.ChatService.ManageUserRoles:output_type -> protocol.chat.v1.ManageUserRolesResponse
93, // 93: protocol.chat.v1.ChatService.GetUserRoles:output_type -> protocol.chat.v1.GetUserRolesResponse
94, // 94: protocol.chat.v1.ChatService.Typing:output_type -> protocol.chat.v1.TypingResponse
95, // 95: protocol.chat.v1.ChatService.PreviewGuild:output_type -> protocol.chat.v1.PreviewGuildResponse
96, // 96: protocol.chat.v1.ChatService.GetBannedUsers:output_type -> protocol.chat.v1.GetBannedUsersResponse
97, // 97: protocol.chat.v1.ChatService.BanUser:output_type -> protocol.chat.v1.BanUserResponse
98, // 98: protocol.chat.v1.ChatService.KickUser:output_type -> protocol.chat.v1.KickUserResponse
99, // 99: protocol.chat.v1.ChatService.UnbanUser:output_type -> protocol.chat.v1.UnbanUserResponse
100, // 100: protocol.chat.v1.ChatService.GetPinnedMessages:output_type -> protocol.chat.v1.GetPinnedMessagesResponse
101, // 101: protocol.chat.v1.ChatService.PinMessage:output_type -> protocol.chat.v1.PinMessageResponse
102, // 102: protocol.chat.v1.ChatService.UnpinMessage:output_type -> protocol.chat.v1.UnpinMessageResponse
103, // 103: protocol.chat.v1.ChatService.StreamEvents:output_type -> protocol.chat.v1.StreamEventsResponse
104, // 104: protocol.chat.v1.ChatService.AddReaction:output_type -> protocol.chat.v1.AddReactionResponse
105, // 105: protocol.chat.v1.ChatService.RemoveReaction:output_type -> protocol.chat.v1.RemoveReactionResponse
106, // 106: protocol.chat.v1.ChatService.GrantOwnership:output_type -> protocol.chat.v1.GrantOwnershipResponse
107, // 107: protocol.chat.v1.ChatService.GiveUpOwnership:output_type -> protocol.chat.v1.GiveUpOwnershipResponse
54, // [54:108] is the sub-list for method output_type
0, // [0:54] 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_chat_v1_chat_proto_init() }
func file_chat_v1_chat_proto_init() {
if File_chat_v1_chat_proto != nil {
return
}
file_chat_v1_guilds_proto_init()
file_chat_v1_channels_proto_init()
file_chat_v1_messages_proto_init()
file_chat_v1_permissions_proto_init()
file_chat_v1_stream_proto_init()
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_chat_v1_chat_proto_rawDesc,
NumEnums: 0,
NumMessages: 0,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_chat_v1_chat_proto_goTypes,
DependencyIndexes: file_chat_v1_chat_proto_depIdxs,
}.Build()
File_chat_v1_chat_proto = out.File
file_chat_v1_chat_proto_rawDesc = nil
file_chat_v1_chat_proto_goTypes = nil
file_chat_v1_chat_proto_depIdxs = nil
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,175 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.23.0
// protoc v3.17.3
// source: emote/v1/emote.proto
package emotev1
import (
proto "github.com/golang/protobuf/proto"
_ "github.com/harmony-development/shibshib/gen/harmonytypes/v1"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
)
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)
)
// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
var File_emote_v1_emote_proto protoreflect.FileDescriptor
var file_emote_v1_emote_proto_rawDesc = []byte{
0x0a, 0x14, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6d, 0x6f, 0x74, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x68, 0x61, 0x72, 0x6d, 0x6f,
0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2f, 0x76, 0x31,
0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x9f, 0x07, 0x0a,
0x0c, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6f, 0x0a,
0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b,
0x12, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74,
0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6d, 0x6f, 0x74, 0x65,
0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x69,
0x0a, 0x0d, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x12,
0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65,
0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b,
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x78, 0x0a, 0x12, 0x47, 0x65, 0x74,
0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x73, 0x12,
0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65,
0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b,
0x45, 0x6d, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76,
0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x45, 0x6d,
0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44,
0x02, 0x08, 0x01, 0x12, 0x6c, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x54,
0x6f, 0x50, 0x61, 0x63, 0x6b, 0x12, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x6d, 0x6f,
0x74, 0x65, 0x54, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65,
0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x54, 0x6f, 0x50, 0x61,
0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08,
0x01, 0x12, 0x6f, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6d, 0x6f, 0x74, 0x65,
0x50, 0x61, 0x63, 0x6b, 0x12, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45,
0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65,
0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50,
0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02,
0x08, 0x01, 0x12, 0x7b, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6d, 0x6f, 0x74,
0x65, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x12, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
0x6c, 0x65, 0x74, 0x65, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x63,
0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c,
0x65, 0x74, 0x65, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x63, 0x6b,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12,
0x6f, 0x0a, 0x0f, 0x44, 0x65, 0x71, 0x75, 0x69, 0x70, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61,
0x63, 0x6b, 0x12, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d,
0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x71, 0x75, 0x69, 0x70, 0x45, 0x6d, 0x6f,
0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76,
0x31, 0x2e, 0x44, 0x65, 0x71, 0x75, 0x69, 0x70, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63,
0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01,
0x12, 0x6c, 0x0a, 0x0e, 0x45, 0x71, 0x75, 0x69, 0x70, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61,
0x63, 0x6b, 0x12, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d,
0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x71, 0x75, 0x69, 0x70, 0x45, 0x6d, 0x6f, 0x74,
0x65, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31,
0x2e, 0x45, 0x71, 0x75, 0x69, 0x70, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x42, 0xc7,
0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50,
0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x2d, 0x64, 0x65, 0x76, 0x65, 0x6c,
0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69, 0x62, 0x73, 0x68, 0x69, 0x62, 0x2f,
0x67, 0x65, 0x6e, 0x2f, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x6d, 0x6f,
0x74, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x45, 0x58, 0xaa, 0x02, 0x11, 0x50, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02,
0x11, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x5c,
0x56, 0x31, 0xe2, 0x02, 0x1d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x45, 0x6d,
0x6f, 0x74, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0xea, 0x02, 0x13, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a, 0x45,
0x6d, 0x6f, 0x74, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var file_emote_v1_emote_proto_goTypes = []interface{}{
(*CreateEmotePackRequest)(nil), // 0: protocol.emote.v1.CreateEmotePackRequest
(*GetEmotePacksRequest)(nil), // 1: protocol.emote.v1.GetEmotePacksRequest
(*GetEmotePackEmotesRequest)(nil), // 2: protocol.emote.v1.GetEmotePackEmotesRequest
(*AddEmoteToPackRequest)(nil), // 3: protocol.emote.v1.AddEmoteToPackRequest
(*DeleteEmotePackRequest)(nil), // 4: protocol.emote.v1.DeleteEmotePackRequest
(*DeleteEmoteFromPackRequest)(nil), // 5: protocol.emote.v1.DeleteEmoteFromPackRequest
(*DequipEmotePackRequest)(nil), // 6: protocol.emote.v1.DequipEmotePackRequest
(*EquipEmotePackRequest)(nil), // 7: protocol.emote.v1.EquipEmotePackRequest
(*CreateEmotePackResponse)(nil), // 8: protocol.emote.v1.CreateEmotePackResponse
(*GetEmotePacksResponse)(nil), // 9: protocol.emote.v1.GetEmotePacksResponse
(*GetEmotePackEmotesResponse)(nil), // 10: protocol.emote.v1.GetEmotePackEmotesResponse
(*AddEmoteToPackResponse)(nil), // 11: protocol.emote.v1.AddEmoteToPackResponse
(*DeleteEmotePackResponse)(nil), // 12: protocol.emote.v1.DeleteEmotePackResponse
(*DeleteEmoteFromPackResponse)(nil), // 13: protocol.emote.v1.DeleteEmoteFromPackResponse
(*DequipEmotePackResponse)(nil), // 14: protocol.emote.v1.DequipEmotePackResponse
(*EquipEmotePackResponse)(nil), // 15: protocol.emote.v1.EquipEmotePackResponse
}
var file_emote_v1_emote_proto_depIdxs = []int32{
0, // 0: protocol.emote.v1.EmoteService.CreateEmotePack:input_type -> protocol.emote.v1.CreateEmotePackRequest
1, // 1: protocol.emote.v1.EmoteService.GetEmotePacks:input_type -> protocol.emote.v1.GetEmotePacksRequest
2, // 2: protocol.emote.v1.EmoteService.GetEmotePackEmotes:input_type -> protocol.emote.v1.GetEmotePackEmotesRequest
3, // 3: protocol.emote.v1.EmoteService.AddEmoteToPack:input_type -> protocol.emote.v1.AddEmoteToPackRequest
4, // 4: protocol.emote.v1.EmoteService.DeleteEmotePack:input_type -> protocol.emote.v1.DeleteEmotePackRequest
5, // 5: protocol.emote.v1.EmoteService.DeleteEmoteFromPack:input_type -> protocol.emote.v1.DeleteEmoteFromPackRequest
6, // 6: protocol.emote.v1.EmoteService.DequipEmotePack:input_type -> protocol.emote.v1.DequipEmotePackRequest
7, // 7: protocol.emote.v1.EmoteService.EquipEmotePack:input_type -> protocol.emote.v1.EquipEmotePackRequest
8, // 8: protocol.emote.v1.EmoteService.CreateEmotePack:output_type -> protocol.emote.v1.CreateEmotePackResponse
9, // 9: protocol.emote.v1.EmoteService.GetEmotePacks:output_type -> protocol.emote.v1.GetEmotePacksResponse
10, // 10: protocol.emote.v1.EmoteService.GetEmotePackEmotes:output_type -> protocol.emote.v1.GetEmotePackEmotesResponse
11, // 11: protocol.emote.v1.EmoteService.AddEmoteToPack:output_type -> protocol.emote.v1.AddEmoteToPackResponse
12, // 12: protocol.emote.v1.EmoteService.DeleteEmotePack:output_type -> protocol.emote.v1.DeleteEmotePackResponse
13, // 13: protocol.emote.v1.EmoteService.DeleteEmoteFromPack:output_type -> protocol.emote.v1.DeleteEmoteFromPackResponse
14, // 14: protocol.emote.v1.EmoteService.DequipEmotePack:output_type -> protocol.emote.v1.DequipEmotePackResponse
15, // 15: protocol.emote.v1.EmoteService.EquipEmotePack:output_type -> protocol.emote.v1.EquipEmotePackResponse
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_emote_v1_emote_proto_init() }
func file_emote_v1_emote_proto_init() {
if File_emote_v1_emote_proto != nil {
return
}
file_emote_v1_types_proto_init()
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_emote_v1_emote_proto_rawDesc,
NumEnums: 0,
NumMessages: 0,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_emote_v1_emote_proto_goTypes,
DependencyIndexes: file_emote_v1_emote_proto_depIdxs,
}.Build()
File_emote_v1_emote_proto = out.File
file_emote_v1_emote_proto_rawDesc = nil
file_emote_v1_emote_proto_goTypes = nil
file_emote_v1_emote_proto_depIdxs = nil
}

View File

@ -0,0 +1,455 @@
// Code generated by protoc-gen-go-hrpc. DO NOT EDIT.
package emotev1
import (
bytes "bytes"
context "context"
proto "google.golang.org/protobuf/proto"
ioutil "io/ioutil"
http "net/http"
httptest "net/http/httptest"
)
type EmoteServiceClient interface {
// Endpoint to create an emote pack.
CreateEmotePack(context.Context, *CreateEmotePackRequest) (*CreateEmotePackResponse, error)
// Endpoint to get the emote packs you have equipped.
GetEmotePacks(context.Context, *GetEmotePacksRequest) (*GetEmotePacksResponse, error)
// Endpoint to get the emotes in an emote pack.
GetEmotePackEmotes(context.Context, *GetEmotePackEmotesRequest) (*GetEmotePackEmotesResponse, error)
// Endpoint to add an emote to an emote pack that you own.
AddEmoteToPack(context.Context, *AddEmoteToPackRequest) (*AddEmoteToPackResponse, error)
// Endpoint to delete an emote pack that you own.
DeleteEmotePack(context.Context, *DeleteEmotePackRequest) (*DeleteEmotePackResponse, error)
// Endpoint to delete an emote from an emote pack.
DeleteEmoteFromPack(context.Context, *DeleteEmoteFromPackRequest) (*DeleteEmoteFromPackResponse, error)
// Endpoint to dequip an emote pack that you have equipped.
DequipEmotePack(context.Context, *DequipEmotePackRequest) (*DequipEmotePackResponse, error)
// Endpoint to equip an emote pack.
EquipEmotePack(context.Context, *EquipEmotePackRequest) (*EquipEmotePackResponse, error)
}
type HTTPEmoteServiceClient struct {
Client http.Client
BaseURL string
WebsocketProto string
WebsocketHost string
Header http.Header
}
func (client *HTTPEmoteServiceClient) CreateEmotePack(req *CreateEmotePackRequest) (*CreateEmotePackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.emote.v1.EmoteService/CreateEmotePack", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &CreateEmotePackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPEmoteServiceClient) GetEmotePacks(req *GetEmotePacksRequest) (*GetEmotePacksResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.emote.v1.EmoteService/GetEmotePacks", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &GetEmotePacksResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPEmoteServiceClient) GetEmotePackEmotes(req *GetEmotePackEmotesRequest) (*GetEmotePackEmotesResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.emote.v1.EmoteService/GetEmotePackEmotes", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &GetEmotePackEmotesResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPEmoteServiceClient) AddEmoteToPack(req *AddEmoteToPackRequest) (*AddEmoteToPackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.emote.v1.EmoteService/AddEmoteToPack", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &AddEmoteToPackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPEmoteServiceClient) DeleteEmotePack(req *DeleteEmotePackRequest) (*DeleteEmotePackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.emote.v1.EmoteService/DeleteEmotePack", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &DeleteEmotePackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPEmoteServiceClient) DeleteEmoteFromPack(req *DeleteEmoteFromPackRequest) (*DeleteEmoteFromPackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.emote.v1.EmoteService/DeleteEmoteFromPack", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &DeleteEmoteFromPackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPEmoteServiceClient) DequipEmotePack(req *DequipEmotePackRequest) (*DequipEmotePackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.emote.v1.EmoteService/DequipEmotePack", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &DequipEmotePackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPEmoteServiceClient) EquipEmotePack(req *EquipEmotePackRequest) (*EquipEmotePackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.emote.v1.EmoteService/EquipEmotePack", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &EquipEmotePackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
type HTTPTestEmoteServiceClient struct {
Client interface {
Test(*http.Request, ...int) (*http.Response, error)
}
}
func (client *HTTPTestEmoteServiceClient) CreateEmotePack(req *CreateEmotePackRequest) (*CreateEmotePackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.emote.v1.EmoteService/CreateEmotePack", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &CreateEmotePackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestEmoteServiceClient) GetEmotePacks(req *GetEmotePacksRequest) (*GetEmotePacksResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.emote.v1.EmoteService/GetEmotePacks", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &GetEmotePacksResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestEmoteServiceClient) GetEmotePackEmotes(req *GetEmotePackEmotesRequest) (*GetEmotePackEmotesResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.emote.v1.EmoteService/GetEmotePackEmotes", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &GetEmotePackEmotesResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestEmoteServiceClient) AddEmoteToPack(req *AddEmoteToPackRequest) (*AddEmoteToPackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.emote.v1.EmoteService/AddEmoteToPack", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &AddEmoteToPackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestEmoteServiceClient) DeleteEmotePack(req *DeleteEmotePackRequest) (*DeleteEmotePackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.emote.v1.EmoteService/DeleteEmotePack", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &DeleteEmotePackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestEmoteServiceClient) DeleteEmoteFromPack(req *DeleteEmoteFromPackRequest) (*DeleteEmoteFromPackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.emote.v1.EmoteService/DeleteEmoteFromPack", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &DeleteEmoteFromPackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestEmoteServiceClient) DequipEmotePack(req *DequipEmotePackRequest) (*DequipEmotePackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.emote.v1.EmoteService/DequipEmotePack", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &DequipEmotePackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestEmoteServiceClient) EquipEmotePack(req *EquipEmotePackRequest) (*EquipEmotePackResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.emote.v1.EmoteService/EquipEmotePack", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &EquipEmotePackResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}

View File

@ -0,0 +1,573 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.23.0
// protoc v3.17.3
// source: emote/v1/stream.proto
package emotev1
import (
proto "github.com/golang/protobuf/proto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
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)
)
// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
// Event sent when an emote pack's information is changed.
//
// Should only be sent to users who have the pack equipped.
type EmotePackUpdated struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// ID of the pack that was updated.
PackId uint64 `protobuf:"varint,1,opt,name=pack_id,json=packId,proto3" json:"pack_id,omitempty"`
// New pack name of the pack.
NewPackName *string `protobuf:"bytes,2,opt,name=new_pack_name,json=newPackName,proto3,oneof" json:"new_pack_name,omitempty"`
}
func (x *EmotePackUpdated) Reset() {
*x = EmotePackUpdated{}
if protoimpl.UnsafeEnabled {
mi := &file_emote_v1_stream_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EmotePackUpdated) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EmotePackUpdated) ProtoMessage() {}
func (x *EmotePackUpdated) ProtoReflect() protoreflect.Message {
mi := &file_emote_v1_stream_proto_msgTypes[0]
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 EmotePackUpdated.ProtoReflect.Descriptor instead.
func (*EmotePackUpdated) Descriptor() ([]byte, []int) {
return file_emote_v1_stream_proto_rawDescGZIP(), []int{0}
}
func (x *EmotePackUpdated) GetPackId() uint64 {
if x != nil {
return x.PackId
}
return 0
}
func (x *EmotePackUpdated) GetNewPackName() string {
if x != nil && x.NewPackName != nil {
return *x.NewPackName
}
return ""
}
// Event sent when an emote pack is deleted.
//
// Should only be sent to users who have the pack equipped.
// Should also be sent if a user dequips an emote pack, only to the user that dequipped it.
type EmotePackDeleted struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// ID of the pack that was deleted.
PackId uint64 `protobuf:"varint,1,opt,name=pack_id,json=packId,proto3" json:"pack_id,omitempty"`
}
func (x *EmotePackDeleted) Reset() {
*x = EmotePackDeleted{}
if protoimpl.UnsafeEnabled {
mi := &file_emote_v1_stream_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EmotePackDeleted) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EmotePackDeleted) ProtoMessage() {}
func (x *EmotePackDeleted) ProtoReflect() protoreflect.Message {
mi := &file_emote_v1_stream_proto_msgTypes[1]
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 EmotePackDeleted.ProtoReflect.Descriptor instead.
func (*EmotePackDeleted) Descriptor() ([]byte, []int) {
return file_emote_v1_stream_proto_rawDescGZIP(), []int{1}
}
func (x *EmotePackDeleted) GetPackId() uint64 {
if x != nil {
return x.PackId
}
return 0
}
// Event sent when an emote pack is added.
//
// Should only be sent to the user who equipped the pack.
type EmotePackAdded struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Emote pack that was equipped by the user.
Pack *EmotePack `protobuf:"bytes,1,opt,name=pack,proto3" json:"pack,omitempty"`
}
func (x *EmotePackAdded) Reset() {
*x = EmotePackAdded{}
if protoimpl.UnsafeEnabled {
mi := &file_emote_v1_stream_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EmotePackAdded) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EmotePackAdded) ProtoMessage() {}
func (x *EmotePackAdded) ProtoReflect() protoreflect.Message {
mi := &file_emote_v1_stream_proto_msgTypes[2]
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 EmotePackAdded.ProtoReflect.Descriptor instead.
func (*EmotePackAdded) Descriptor() ([]byte, []int) {
return file_emote_v1_stream_proto_rawDescGZIP(), []int{2}
}
func (x *EmotePackAdded) GetPack() *EmotePack {
if x != nil {
return x.Pack
}
return nil
}
// Event sent when an emote pack's emotes were changed.
//
// Should only be sent to users who have the pack equipped.
type EmotePackEmotesUpdated struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// ID of the pack to update the emotes of.
PackId uint64 `protobuf:"varint,1,opt,name=pack_id,json=packId,proto3" json:"pack_id,omitempty"`
// The added emotes.
AddedEmotes []*Emote `protobuf:"bytes,2,rep,name=added_emotes,json=addedEmotes,proto3" json:"added_emotes,omitempty"`
// The names of the deleted emotes.
DeletedEmotes []string `protobuf:"bytes,3,rep,name=deleted_emotes,json=deletedEmotes,proto3" json:"deleted_emotes,omitempty"`
}
func (x *EmotePackEmotesUpdated) Reset() {
*x = EmotePackEmotesUpdated{}
if protoimpl.UnsafeEnabled {
mi := &file_emote_v1_stream_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *EmotePackEmotesUpdated) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*EmotePackEmotesUpdated) ProtoMessage() {}
func (x *EmotePackEmotesUpdated) ProtoReflect() protoreflect.Message {
mi := &file_emote_v1_stream_proto_msgTypes[3]
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 EmotePackEmotesUpdated.ProtoReflect.Descriptor instead.
func (*EmotePackEmotesUpdated) Descriptor() ([]byte, []int) {
return file_emote_v1_stream_proto_rawDescGZIP(), []int{3}
}
func (x *EmotePackEmotesUpdated) GetPackId() uint64 {
if x != nil {
return x.PackId
}
return 0
}
func (x *EmotePackEmotesUpdated) GetAddedEmotes() []*Emote {
if x != nil {
return x.AddedEmotes
}
return nil
}
func (x *EmotePackEmotesUpdated) GetDeletedEmotes() []string {
if x != nil {
return x.DeletedEmotes
}
return nil
}
// Describes an emote service event.
type StreamEvent struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The event type.
//
// Types that are assignable to Event:
// *StreamEvent_EmotePackAdded
// *StreamEvent_EmotePackUpdated
// *StreamEvent_EmotePackDeleted
// *StreamEvent_EmotePackEmotesUpdated
Event isStreamEvent_Event `protobuf_oneof:"event"`
}
func (x *StreamEvent) Reset() {
*x = StreamEvent{}
if protoimpl.UnsafeEnabled {
mi := &file_emote_v1_stream_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *StreamEvent) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*StreamEvent) ProtoMessage() {}
func (x *StreamEvent) ProtoReflect() protoreflect.Message {
mi := &file_emote_v1_stream_proto_msgTypes[4]
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 StreamEvent.ProtoReflect.Descriptor instead.
func (*StreamEvent) Descriptor() ([]byte, []int) {
return file_emote_v1_stream_proto_rawDescGZIP(), []int{4}
}
func (m *StreamEvent) GetEvent() isStreamEvent_Event {
if m != nil {
return m.Event
}
return nil
}
func (x *StreamEvent) GetEmotePackAdded() *EmotePackAdded {
if x, ok := x.GetEvent().(*StreamEvent_EmotePackAdded); ok {
return x.EmotePackAdded
}
return nil
}
func (x *StreamEvent) GetEmotePackUpdated() *EmotePackUpdated {
if x, ok := x.GetEvent().(*StreamEvent_EmotePackUpdated); ok {
return x.EmotePackUpdated
}
return nil
}
func (x *StreamEvent) GetEmotePackDeleted() *EmotePackDeleted {
if x, ok := x.GetEvent().(*StreamEvent_EmotePackDeleted); ok {
return x.EmotePackDeleted
}
return nil
}
func (x *StreamEvent) GetEmotePackEmotesUpdated() *EmotePackEmotesUpdated {
if x, ok := x.GetEvent().(*StreamEvent_EmotePackEmotesUpdated); ok {
return x.EmotePackEmotesUpdated
}
return nil
}
type isStreamEvent_Event interface {
isStreamEvent_Event()
}
type StreamEvent_EmotePackAdded struct {
// Send the emote pack added event.
EmotePackAdded *EmotePackAdded `protobuf:"bytes,1,opt,name=emote_pack_added,json=emotePackAdded,proto3,oneof"`
}
type StreamEvent_EmotePackUpdated struct {
// Send the emote pack updated event.
EmotePackUpdated *EmotePackUpdated `protobuf:"bytes,2,opt,name=emote_pack_updated,json=emotePackUpdated,proto3,oneof"`
}
type StreamEvent_EmotePackDeleted struct {
// Send the emote pack deleted event.
EmotePackDeleted *EmotePackDeleted `protobuf:"bytes,3,opt,name=emote_pack_deleted,json=emotePackDeleted,proto3,oneof"`
}
type StreamEvent_EmotePackEmotesUpdated struct {
// Send the emote pack emotes updated event.
EmotePackEmotesUpdated *EmotePackEmotesUpdated `protobuf:"bytes,4,opt,name=emote_pack_emotes_updated,json=emotePackEmotesUpdated,proto3,oneof"`
}
func (*StreamEvent_EmotePackAdded) isStreamEvent_Event() {}
func (*StreamEvent_EmotePackUpdated) isStreamEvent_Event() {}
func (*StreamEvent_EmotePackDeleted) isStreamEvent_Event() {}
func (*StreamEvent_EmotePackEmotesUpdated) isStreamEvent_Event() {}
var File_emote_v1_stream_proto protoreflect.FileDescriptor
var file_emote_v1_stream_proto_rawDesc = []byte{
0x0a, 0x15, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61,
0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x14, 0x65, 0x6d, 0x6f, 0x74,
0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x22, 0x66, 0x0a, 0x10, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x27, 0x0a,
0x0d, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x61, 0x63, 0x6b, 0x4e,
0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x70,
0x61, 0x63, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2b, 0x0a, 0x10, 0x45, 0x6d, 0x6f, 0x74,
0x65, 0x50, 0x61, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07,
0x70, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70,
0x61, 0x63, 0x6b, 0x49, 0x64, 0x22, 0x42, 0x0a, 0x0e, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61,
0x63, 0x6b, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x61, 0x63, 0x6b, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50,
0x61, 0x63, 0x6b, 0x52, 0x04, 0x70, 0x61, 0x63, 0x6b, 0x22, 0x95, 0x01, 0x0a, 0x16, 0x45, 0x6d,
0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x73, 0x55, 0x70, 0x64,
0x61, 0x74, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x3b, 0x0a,
0x0c, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65,
0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x0b, 0x61,
0x64, 0x64, 0x65, 0x64, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65,
0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03,
0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x6d, 0x6f, 0x74, 0x65,
0x73, 0x22, 0xf7, 0x02, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e,
0x74, 0x12, 0x4d, 0x0a, 0x10, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f,
0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e,
0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x65, 0x64, 0x48, 0x00,
0x52, 0x0e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x65, 0x64,
0x12, 0x53, 0x0a, 0x12, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31,
0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x64, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x12, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x70,
0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f,
0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x44,
0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50,
0x61, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x66, 0x0a, 0x19, 0x65, 0x6d,
0x6f, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x73, 0x5f,
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76,
0x31, 0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x45, 0x6d, 0x6f, 0x74, 0x65,
0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x16, 0x65, 0x6d, 0x6f, 0x74,
0x65, 0x50, 0x61, 0x63, 0x6b, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74,
0x65, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0xc8, 0x01, 0x0a, 0x15,
0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f,
0x74, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f,
0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x2d, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70,
0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69, 0x62, 0x73, 0x68, 0x69, 0x62, 0x2f, 0x67, 0x65,
0x6e, 0x2f, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x65, 0x6d, 0x6f, 0x74, 0x65,
0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x45, 0x58, 0xaa, 0x02, 0x11, 0x50, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x11, 0x50,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x45, 0x6d, 0x6f, 0x74, 0x65, 0x5c, 0x56, 0x31,
0xe2, 0x02, 0x1d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x45, 0x6d, 0x6f, 0x74,
0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
0xea, 0x02, 0x13, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a, 0x45, 0x6d, 0x6f,
0x74, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_emote_v1_stream_proto_rawDescOnce sync.Once
file_emote_v1_stream_proto_rawDescData = file_emote_v1_stream_proto_rawDesc
)
func file_emote_v1_stream_proto_rawDescGZIP() []byte {
file_emote_v1_stream_proto_rawDescOnce.Do(func() {
file_emote_v1_stream_proto_rawDescData = protoimpl.X.CompressGZIP(file_emote_v1_stream_proto_rawDescData)
})
return file_emote_v1_stream_proto_rawDescData
}
var file_emote_v1_stream_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
var file_emote_v1_stream_proto_goTypes = []interface{}{
(*EmotePackUpdated)(nil), // 0: protocol.emote.v1.EmotePackUpdated
(*EmotePackDeleted)(nil), // 1: protocol.emote.v1.EmotePackDeleted
(*EmotePackAdded)(nil), // 2: protocol.emote.v1.EmotePackAdded
(*EmotePackEmotesUpdated)(nil), // 3: protocol.emote.v1.EmotePackEmotesUpdated
(*StreamEvent)(nil), // 4: protocol.emote.v1.StreamEvent
(*EmotePack)(nil), // 5: protocol.emote.v1.EmotePack
(*Emote)(nil), // 6: protocol.emote.v1.Emote
}
var file_emote_v1_stream_proto_depIdxs = []int32{
5, // 0: protocol.emote.v1.EmotePackAdded.pack:type_name -> protocol.emote.v1.EmotePack
6, // 1: protocol.emote.v1.EmotePackEmotesUpdated.added_emotes:type_name -> protocol.emote.v1.Emote
2, // 2: protocol.emote.v1.StreamEvent.emote_pack_added:type_name -> protocol.emote.v1.EmotePackAdded
0, // 3: protocol.emote.v1.StreamEvent.emote_pack_updated:type_name -> protocol.emote.v1.EmotePackUpdated
1, // 4: protocol.emote.v1.StreamEvent.emote_pack_deleted:type_name -> protocol.emote.v1.EmotePackDeleted
3, // 5: protocol.emote.v1.StreamEvent.emote_pack_emotes_updated:type_name -> protocol.emote.v1.EmotePackEmotesUpdated
6, // [6:6] is the sub-list for method output_type
6, // [6:6] is the sub-list for method input_type
6, // [6:6] is the sub-list for extension type_name
6, // [6:6] is the sub-list for extension extendee
0, // [0:6] is the sub-list for field type_name
}
func init() { file_emote_v1_stream_proto_init() }
func file_emote_v1_stream_proto_init() {
if File_emote_v1_stream_proto != nil {
return
}
file_emote_v1_types_proto_init()
if !protoimpl.UnsafeEnabled {
file_emote_v1_stream_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EmotePackUpdated); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_emote_v1_stream_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EmotePackDeleted); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_emote_v1_stream_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EmotePackAdded); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_emote_v1_stream_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*EmotePackEmotesUpdated); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_emote_v1_stream_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*StreamEvent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_emote_v1_stream_proto_msgTypes[0].OneofWrappers = []interface{}{}
file_emote_v1_stream_proto_msgTypes[4].OneofWrappers = []interface{}{
(*StreamEvent_EmotePackAdded)(nil),
(*StreamEvent_EmotePackUpdated)(nil),
(*StreamEvent_EmotePackDeleted)(nil),
(*StreamEvent_EmotePackEmotesUpdated)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_emote_v1_stream_proto_rawDesc,
NumEnums: 0,
NumMessages: 5,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_emote_v1_stream_proto_goTypes,
DependencyIndexes: file_emote_v1_stream_proto_depIdxs,
MessageInfos: file_emote_v1_stream_proto_msgTypes,
}.Build()
File_emote_v1_stream_proto = out.File
file_emote_v1_stream_proto_rawDesc = nil
file_emote_v1_stream_proto_goTypes = nil
file_emote_v1_stream_proto_depIdxs = nil
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,754 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.23.0
// protoc v3.17.3
// source: harmonytypes/v1/types.proto
package harmonytypesv1
import (
proto "github.com/golang/protobuf/proto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
descriptorpb "google.golang.org/protobuf/types/descriptorpb"
reflect "reflect"
sync "sync"
)
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)
)
// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
// The position
type ItemPosition_Position int32
const (
// The position is before the item
ItemPosition_POSITION_BEFORE_UNSPECIFIED ItemPosition_Position = 0
// The position is after the item
ItemPosition_POSITION_AFTER ItemPosition_Position = 1
)
// Enum value maps for ItemPosition_Position.
var (
ItemPosition_Position_name = map[int32]string{
0: "POSITION_BEFORE_UNSPECIFIED",
1: "POSITION_AFTER",
}
ItemPosition_Position_value = map[string]int32{
"POSITION_BEFORE_UNSPECIFIED": 0,
"POSITION_AFTER": 1,
}
)
func (x ItemPosition_Position) Enum() *ItemPosition_Position {
p := new(ItemPosition_Position)
*p = x
return p
}
func (x ItemPosition_Position) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ItemPosition_Position) Descriptor() protoreflect.EnumDescriptor {
return file_harmonytypes_v1_types_proto_enumTypes[0].Descriptor()
}
func (ItemPosition_Position) Type() protoreflect.EnumType {
return &file_harmonytypes_v1_types_proto_enumTypes[0]
}
func (x ItemPosition_Position) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ItemPosition_Position.Descriptor instead.
func (ItemPosition_Position) EnumDescriptor() ([]byte, []int) {
return file_harmonytypes_v1_types_proto_rawDescGZIP(), []int{6, 0}
}
// Metadata for methods. These are set in individual RPC endpoints and are
// typically used by servers.
type HarmonyMethodMetadata struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// whether the method requires authentication.
RequiresAuthentication bool `protobuf:"varint,1,opt,name=requires_authentication,json=requiresAuthentication,proto3" json:"requires_authentication,omitempty"`
// whether the method allows federation or not.
RequiresLocal bool `protobuf:"varint,2,opt,name=requires_local,json=requiresLocal,proto3" json:"requires_local,omitempty"`
// the permission nodes required to invoke the method.
RequiresPermissionNode string `protobuf:"bytes,3,opt,name=requires_permission_node,json=requiresPermissionNode,proto3" json:"requires_permission_node,omitempty"`
// whether the method requires owner
RequiresOwner bool `protobuf:"varint,4,opt,name=requires_owner,json=requiresOwner,proto3" json:"requires_owner,omitempty"`
}
func (x *HarmonyMethodMetadata) Reset() {
*x = HarmonyMethodMetadata{}
if protoimpl.UnsafeEnabled {
mi := &file_harmonytypes_v1_types_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *HarmonyMethodMetadata) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*HarmonyMethodMetadata) ProtoMessage() {}
func (x *HarmonyMethodMetadata) ProtoReflect() protoreflect.Message {
mi := &file_harmonytypes_v1_types_proto_msgTypes[0]
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 HarmonyMethodMetadata.ProtoReflect.Descriptor instead.
func (*HarmonyMethodMetadata) Descriptor() ([]byte, []int) {
return file_harmonytypes_v1_types_proto_rawDescGZIP(), []int{0}
}
func (x *HarmonyMethodMetadata) GetRequiresAuthentication() bool {
if x != nil {
return x.RequiresAuthentication
}
return false
}
func (x *HarmonyMethodMetadata) GetRequiresLocal() bool {
if x != nil {
return x.RequiresLocal
}
return false
}
func (x *HarmonyMethodMetadata) GetRequiresPermissionNode() string {
if x != nil {
return x.RequiresPermissionNode
}
return ""
}
func (x *HarmonyMethodMetadata) GetRequiresOwner() bool {
if x != nil {
return x.RequiresOwner
}
return false
}
// Anything holds anything
type Anything struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Kind is the kind of the message
Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
// Body is the serialised bytes
Body []byte `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"`
}
func (x *Anything) Reset() {
*x = Anything{}
if protoimpl.UnsafeEnabled {
mi := &file_harmonytypes_v1_types_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Anything) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Anything) ProtoMessage() {}
func (x *Anything) ProtoReflect() protoreflect.Message {
mi := &file_harmonytypes_v1_types_proto_msgTypes[1]
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 Anything.ProtoReflect.Descriptor instead.
func (*Anything) Descriptor() ([]byte, []int) {
return file_harmonytypes_v1_types_proto_rawDescGZIP(), []int{1}
}
func (x *Anything) GetKind() string {
if x != nil {
return x.Kind
}
return ""
}
func (x *Anything) GetBody() []byte {
if x != nil {
return x.Body
}
return nil
}
// Metadata type used by many messages.
type Metadata struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Kind of this metadata.
Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
// A map containing information.
Extension map[string]*Anything `protobuf:"bytes,2,rep,name=extension,proto3" json:"extension,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *Metadata) Reset() {
*x = Metadata{}
if protoimpl.UnsafeEnabled {
mi := &file_harmonytypes_v1_types_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Metadata) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Metadata) ProtoMessage() {}
func (x *Metadata) ProtoReflect() protoreflect.Message {
mi := &file_harmonytypes_v1_types_proto_msgTypes[2]
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 Metadata.ProtoReflect.Descriptor instead.
func (*Metadata) Descriptor() ([]byte, []int) {
return file_harmonytypes_v1_types_proto_rawDescGZIP(), []int{2}
}
func (x *Metadata) GetKind() string {
if x != nil {
return x.Kind
}
return ""
}
func (x *Metadata) GetExtension() map[string]*Anything {
if x != nil {
return x.Extension
}
return nil
}
// Error type that will be returned by servers.
type Error struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The identifier of this error, can be used as an i18n key.
Identifier string `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"`
// A (usually english) human message for this error.
HumanMessage string `protobuf:"bytes,2,opt,name=human_message,json=humanMessage,proto3" json:"human_message,omitempty"`
// More details about this message. Is dependent on the endpoint.
MoreDetails []byte `protobuf:"bytes,3,opt,name=more_details,json=moreDetails,proto3" json:"more_details,omitempty"`
}
func (x *Error) Reset() {
*x = Error{}
if protoimpl.UnsafeEnabled {
mi := &file_harmonytypes_v1_types_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Error) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Error) ProtoMessage() {}
func (x *Error) ProtoReflect() protoreflect.Message {
mi := &file_harmonytypes_v1_types_proto_msgTypes[3]
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 Error.ProtoReflect.Descriptor instead.
func (*Error) Descriptor() ([]byte, []int) {
return file_harmonytypes_v1_types_proto_rawDescGZIP(), []int{3}
}
func (x *Error) GetIdentifier() string {
if x != nil {
return x.Identifier
}
return ""
}
func (x *Error) GetHumanMessage() string {
if x != nil {
return x.HumanMessage
}
return ""
}
func (x *Error) GetMoreDetails() []byte {
if x != nil {
return x.MoreDetails
}
return nil
}
// Token that will be used for authentication.
type Token struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Ed25519 signature of the following serialized protobuf data, signed
// with a private key. Which private key used to sign will be described
// in the documentation.
//
// Has to be 64 bytes long, otherwise it will be rejected.
Sig []byte `protobuf:"bytes,1,opt,name=sig,proto3" json:"sig,omitempty"`
// Serialized protobuf data.
// The protobuf type of this serialized data is dependent on the API endpoint
// used.
Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
}
func (x *Token) Reset() {
*x = Token{}
if protoimpl.UnsafeEnabled {
mi := &file_harmonytypes_v1_types_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Token) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Token) ProtoMessage() {}
func (x *Token) ProtoReflect() protoreflect.Message {
mi := &file_harmonytypes_v1_types_proto_msgTypes[4]
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 Token.ProtoReflect.Descriptor instead.
func (*Token) Descriptor() ([]byte, []int) {
return file_harmonytypes_v1_types_proto_rawDescGZIP(), []int{4}
}
func (x *Token) GetSig() []byte {
if x != nil {
return x.Sig
}
return nil
}
func (x *Token) GetData() []byte {
if x != nil {
return x.Data
}
return nil
}
// An empty message
type Empty struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *Empty) Reset() {
*x = Empty{}
if protoimpl.UnsafeEnabled {
mi := &file_harmonytypes_v1_types_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Empty) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Empty) ProtoMessage() {}
func (x *Empty) ProtoReflect() protoreflect.Message {
mi := &file_harmonytypes_v1_types_proto_msgTypes[5]
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 Empty.ProtoReflect.Descriptor instead.
func (*Empty) Descriptor() ([]byte, []int) {
return file_harmonytypes_v1_types_proto_rawDescGZIP(), []int{5}
}
// An object representing an item position between two other items.
type ItemPosition struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The ID of the item the position is relative to
ItemId uint64 `protobuf:"varint,1,opt,name=item_id,json=itemId,proto3" json:"item_id,omitempty"`
// Whether the position is before or after the given ID
Position ItemPosition_Position `protobuf:"varint,2,opt,name=position,proto3,enum=protocol.harmonytypes.v1.ItemPosition_Position" json:"position,omitempty"`
}
func (x *ItemPosition) Reset() {
*x = ItemPosition{}
if protoimpl.UnsafeEnabled {
mi := &file_harmonytypes_v1_types_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ItemPosition) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ItemPosition) ProtoMessage() {}
func (x *ItemPosition) ProtoReflect() protoreflect.Message {
mi := &file_harmonytypes_v1_types_proto_msgTypes[6]
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 ItemPosition.ProtoReflect.Descriptor instead.
func (*ItemPosition) Descriptor() ([]byte, []int) {
return file_harmonytypes_v1_types_proto_rawDescGZIP(), []int{6}
}
func (x *ItemPosition) GetItemId() uint64 {
if x != nil {
return x.ItemId
}
return 0
}
func (x *ItemPosition) GetPosition() ItemPosition_Position {
if x != nil {
return x.Position
}
return ItemPosition_POSITION_BEFORE_UNSPECIFIED
}
var file_harmonytypes_v1_types_proto_extTypes = []protoimpl.ExtensionInfo{
{
ExtendedType: (*descriptorpb.MethodOptions)(nil),
ExtensionType: (*HarmonyMethodMetadata)(nil),
Field: 1091,
Name: "protocol.harmonytypes.v1.metadata",
Tag: "bytes,1091,opt,name=metadata",
Filename: "harmonytypes/v1/types.proto",
},
}
// Extension fields to descriptorpb.MethodOptions.
var (
// Harmony method metadata.
//
// optional protocol.harmonytypes.v1.HarmonyMethodMetadata metadata = 1091;
E_Metadata = &file_harmonytypes_v1_types_proto_extTypes[0]
)
var File_harmonytypes_v1_types_proto protoreflect.FileDescriptor
var file_harmonytypes_v1_types_proto_rawDesc = []byte{
0x0a, 0x1b, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x76,
0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd8, 0x01, 0x0a, 0x15, 0x48, 0x61,
0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0x12, 0x37, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f,
0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x41, 0x75,
0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e,
0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x02,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x4c, 0x6f,
0x63, 0x61, 0x6c, 0x12, 0x38, 0x0a, 0x18, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f,
0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x50,
0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a,
0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18,
0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x73, 0x4f,
0x77, 0x6e, 0x65, 0x72, 0x22, 0x32, 0x0a, 0x08, 0x41, 0x6e, 0x79, 0x74, 0x68, 0x69, 0x6e, 0x67,
0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xd1, 0x01, 0x0a, 0x08, 0x4d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x4f, 0x0a, 0x09, 0x65, 0x78, 0x74,
0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x60, 0x0a, 0x0e, 0x45, 0x78,
0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x38,
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79,
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x79, 0x74, 0x68, 0x69, 0x6e,
0x67, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6f, 0x0a, 0x05,
0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74,
0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x5f, 0x6d,
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x68, 0x75,
0x6d, 0x61, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x6f,
0x72, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c,
0x52, 0x0b, 0x6d, 0x6f, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x2d, 0x0a,
0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x67, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x07, 0x0a, 0x05,
0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xb5, 0x01, 0x0a, 0x0c, 0x49, 0x74, 0x65, 0x6d, 0x50, 0x6f,
0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x69, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12,
0x4b, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72,
0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x74, 0x65,
0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69,
0x6f, 0x6e, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3f, 0x0a, 0x08,
0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x53, 0x49,
0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x45, 0x46, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50,
0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x4f, 0x53,
0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x46, 0x54, 0x45, 0x52, 0x10, 0x01, 0x3a, 0x6c, 0x0a,
0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68,
0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xc3, 0x08, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x2f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d,
0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x61, 0x72, 0x6d,
0x6f, 0x6e, 0x79, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0xf8, 0x01, 0x0a, 0x1c,
0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72,
0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x54, 0x79,
0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68,
0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x2d, 0x64,
0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69, 0x62, 0x73,
0x68, 0x69, 0x62, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74,
0x79, 0x70, 0x65, 0x73, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x48, 0x58, 0xaa, 0x02, 0x18, 0x50,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74,
0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x18, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63,
0x6f, 0x6c, 0x5c, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x5c,
0x56, 0x31, 0xe2, 0x02, 0x24, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x48, 0x61,
0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50,
0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1a, 0x50, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a, 0x48, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70,
0x65, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_harmonytypes_v1_types_proto_rawDescOnce sync.Once
file_harmonytypes_v1_types_proto_rawDescData = file_harmonytypes_v1_types_proto_rawDesc
)
func file_harmonytypes_v1_types_proto_rawDescGZIP() []byte {
file_harmonytypes_v1_types_proto_rawDescOnce.Do(func() {
file_harmonytypes_v1_types_proto_rawDescData = protoimpl.X.CompressGZIP(file_harmonytypes_v1_types_proto_rawDescData)
})
return file_harmonytypes_v1_types_proto_rawDescData
}
var file_harmonytypes_v1_types_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_harmonytypes_v1_types_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_harmonytypes_v1_types_proto_goTypes = []interface{}{
(ItemPosition_Position)(0), // 0: protocol.harmonytypes.v1.ItemPosition.Position
(*HarmonyMethodMetadata)(nil), // 1: protocol.harmonytypes.v1.HarmonyMethodMetadata
(*Anything)(nil), // 2: protocol.harmonytypes.v1.Anything
(*Metadata)(nil), // 3: protocol.harmonytypes.v1.Metadata
(*Error)(nil), // 4: protocol.harmonytypes.v1.Error
(*Token)(nil), // 5: protocol.harmonytypes.v1.Token
(*Empty)(nil), // 6: protocol.harmonytypes.v1.Empty
(*ItemPosition)(nil), // 7: protocol.harmonytypes.v1.ItemPosition
nil, // 8: protocol.harmonytypes.v1.Metadata.ExtensionEntry
(*descriptorpb.MethodOptions)(nil), // 9: google.protobuf.MethodOptions
}
var file_harmonytypes_v1_types_proto_depIdxs = []int32{
8, // 0: protocol.harmonytypes.v1.Metadata.extension:type_name -> protocol.harmonytypes.v1.Metadata.ExtensionEntry
0, // 1: protocol.harmonytypes.v1.ItemPosition.position:type_name -> protocol.harmonytypes.v1.ItemPosition.Position
2, // 2: protocol.harmonytypes.v1.Metadata.ExtensionEntry.value:type_name -> protocol.harmonytypes.v1.Anything
9, // 3: protocol.harmonytypes.v1.metadata:extendee -> google.protobuf.MethodOptions
1, // 4: protocol.harmonytypes.v1.metadata:type_name -> protocol.harmonytypes.v1.HarmonyMethodMetadata
5, // [5:5] is the sub-list for method output_type
5, // [5:5] is the sub-list for method input_type
4, // [4:5] is the sub-list for extension type_name
3, // [3:4] is the sub-list for extension extendee
0, // [0:3] is the sub-list for field type_name
}
func init() { file_harmonytypes_v1_types_proto_init() }
func file_harmonytypes_v1_types_proto_init() {
if File_harmonytypes_v1_types_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_harmonytypes_v1_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*HarmonyMethodMetadata); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_harmonytypes_v1_types_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Anything); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_harmonytypes_v1_types_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Metadata); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_harmonytypes_v1_types_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Error); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_harmonytypes_v1_types_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Token); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_harmonytypes_v1_types_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Empty); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_harmonytypes_v1_types_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ItemPosition); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_harmonytypes_v1_types_proto_rawDesc,
NumEnums: 1,
NumMessages: 8,
NumExtensions: 1,
NumServices: 0,
},
GoTypes: file_harmonytypes_v1_types_proto_goTypes,
DependencyIndexes: file_harmonytypes_v1_types_proto_depIdxs,
EnumInfos: file_harmonytypes_v1_types_proto_enumTypes,
MessageInfos: file_harmonytypes_v1_types_proto_msgTypes,
ExtensionInfos: file_harmonytypes_v1_types_proto_extTypes,
}.Build()
File_harmonytypes_v1_types_proto = out.File
file_harmonytypes_v1_types_proto_rawDesc = nil
file_harmonytypes_v1_types_proto_goTypes = nil
file_harmonytypes_v1_types_proto_depIdxs = nil
}

View File

@ -0,0 +1,130 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.23.0
// protoc v3.17.3
// source: profile/v1/profile.proto
package profilev1
import (
proto "github.com/golang/protobuf/proto"
_ "github.com/harmony-development/shibshib/gen/harmonytypes/v1"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
)
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)
)
// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
var File_profile_v1_profile_proto protoreflect.FileDescriptor
var file_profile_v1_profile_proto_rawDesc = []byte{
0x0a, 0x18, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f,
0x66, 0x69, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a,
0x1b, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x76, 0x31,
0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x72,
0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x32, 0xb1, 0x03, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x64, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72,
0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50,
0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x6d, 0x0a,
0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x29,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c,
0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69,
0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x12, 0x64, 0x0a, 0x0a,
0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31,
0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72,
0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x44,
0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x05, 0x9a, 0x44, 0x02,
0x08, 0x01, 0x12, 0x64, 0x0a, 0x0a, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61,
0x12, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66,
0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74,
0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53,
0x65, 0x74, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x05, 0x9a, 0x44, 0x02, 0x08, 0x01, 0x42, 0xd7, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c,
0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x72, 0x6f,
0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x2d, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70,
0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69, 0x62, 0x73, 0x68, 0x69, 0x62, 0x2f, 0x67, 0x65,
0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x70, 0x72, 0x6f,
0x66, 0x69, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x50, 0x58, 0xaa, 0x02, 0x13, 0x50,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e,
0x56, 0x31, 0xca, 0x02, 0x13, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x50, 0x72,
0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x50, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x5c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47,
0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x50, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x3a,
0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var file_profile_v1_profile_proto_goTypes = []interface{}{
(*GetProfileRequest)(nil), // 0: protocol.profile.v1.GetProfileRequest
(*UpdateProfileRequest)(nil), // 1: protocol.profile.v1.UpdateProfileRequest
(*GetAppDataRequest)(nil), // 2: protocol.profile.v1.GetAppDataRequest
(*SetAppDataRequest)(nil), // 3: protocol.profile.v1.SetAppDataRequest
(*GetProfileResponse)(nil), // 4: protocol.profile.v1.GetProfileResponse
(*UpdateProfileResponse)(nil), // 5: protocol.profile.v1.UpdateProfileResponse
(*GetAppDataResponse)(nil), // 6: protocol.profile.v1.GetAppDataResponse
(*SetAppDataResponse)(nil), // 7: protocol.profile.v1.SetAppDataResponse
}
var file_profile_v1_profile_proto_depIdxs = []int32{
0, // 0: protocol.profile.v1.ProfileService.GetProfile:input_type -> protocol.profile.v1.GetProfileRequest
1, // 1: protocol.profile.v1.ProfileService.UpdateProfile:input_type -> protocol.profile.v1.UpdateProfileRequest
2, // 2: protocol.profile.v1.ProfileService.GetAppData:input_type -> protocol.profile.v1.GetAppDataRequest
3, // 3: protocol.profile.v1.ProfileService.SetAppData:input_type -> protocol.profile.v1.SetAppDataRequest
4, // 4: protocol.profile.v1.ProfileService.GetProfile:output_type -> protocol.profile.v1.GetProfileResponse
5, // 5: protocol.profile.v1.ProfileService.UpdateProfile:output_type -> protocol.profile.v1.UpdateProfileResponse
6, // 6: protocol.profile.v1.ProfileService.GetAppData:output_type -> protocol.profile.v1.GetAppDataResponse
7, // 7: protocol.profile.v1.ProfileService.SetAppData:output_type -> protocol.profile.v1.SetAppDataResponse
4, // [4:8] is the sub-list for method output_type
0, // [0:4] 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_profile_v1_profile_proto_init() }
func file_profile_v1_profile_proto_init() {
if File_profile_v1_profile_proto != nil {
return
}
file_profile_v1_types_proto_init()
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_profile_v1_profile_proto_rawDesc,
NumEnums: 0,
NumMessages: 0,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_profile_v1_profile_proto_goTypes,
DependencyIndexes: file_profile_v1_profile_proto_depIdxs,
}.Build()
File_profile_v1_profile_proto = out.File
file_profile_v1_profile_proto_rawDesc = nil
file_profile_v1_profile_proto_goTypes = nil
file_profile_v1_profile_proto_depIdxs = nil
}

View File

@ -0,0 +1,244 @@
// Code generated by protoc-gen-go-hrpc. DO NOT EDIT.
package profilev1
import (
bytes "bytes"
context "context"
proto "google.golang.org/protobuf/proto"
ioutil "io/ioutil"
http "net/http"
httptest "net/http/httptest"
)
type ProfileServiceClient interface {
// Gets a user's profile.
GetProfile(context.Context, *GetProfileRequest) (*GetProfileResponse, error)
// Updates the user's profile.
UpdateProfile(context.Context, *UpdateProfileRequest) (*UpdateProfileResponse, error)
// Gets app data for a user (this can be used to store user preferences which
// is synchronized across devices).
GetAppData(context.Context, *GetAppDataRequest) (*GetAppDataResponse, error)
// Sets the app data for a user.
SetAppData(context.Context, *SetAppDataRequest) (*SetAppDataResponse, error)
}
type HTTPProfileServiceClient struct {
Client http.Client
BaseURL string
WebsocketProto string
WebsocketHost string
Header http.Header
}
func (client *HTTPProfileServiceClient) GetProfile(req *GetProfileRequest) (*GetProfileResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.profile.v1.ProfileService/GetProfile", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &GetProfileResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPProfileServiceClient) UpdateProfile(req *UpdateProfileRequest) (*UpdateProfileResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.profile.v1.ProfileService/UpdateProfile", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &UpdateProfileResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPProfileServiceClient) GetAppData(req *GetAppDataRequest) (*GetAppDataResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.profile.v1.ProfileService/GetAppData", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &GetAppDataResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPProfileServiceClient) SetAppData(req *SetAppDataRequest) (*SetAppDataResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
hreq, err := http.NewRequest("POST", client.BaseURL+"/protocol.profile.v1.ProfileService/SetAppData", reader)
if err != nil {
return nil, err
}
for k, v := range client.Header {
hreq.Header[k] = v
}
hreq.Header.Add("content-type", "application/hrpc")
resp, err := client.Client.Do(hreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &SetAppDataResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
type HTTPTestProfileServiceClient struct {
Client interface {
Test(*http.Request, ...int) (*http.Response, error)
}
}
func (client *HTTPTestProfileServiceClient) GetProfile(req *GetProfileRequest) (*GetProfileResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.profile.v1.ProfileService/GetProfile", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &GetProfileResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestProfileServiceClient) UpdateProfile(req *UpdateProfileRequest) (*UpdateProfileResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.profile.v1.ProfileService/UpdateProfile", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &UpdateProfileResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestProfileServiceClient) GetAppData(req *GetAppDataRequest) (*GetAppDataResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.profile.v1.ProfileService/GetAppData", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &GetAppDataResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}
func (client *HTTPTestProfileServiceClient) SetAppData(req *SetAppDataRequest) (*SetAppDataResponse, error) {
data, marshalErr := proto.Marshal(req)
if marshalErr != nil {
return nil, marshalErr
}
reader := bytes.NewReader(data)
testreq := httptest.NewRequest("POST", "/protocol.profile.v1.ProfileService/SetAppData", reader)
resp, err := client.Client.Test(testreq)
if err != nil {
return nil, err
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
ret := &SetAppDataResponse{}
unmarshalErr := proto.Unmarshal(body, ret)
if unmarshalErr != nil {
return nil, unmarshalErr
}
return ret, nil
}

View File

@ -0,0 +1,316 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.23.0
// protoc v3.17.3
// source: profile/v1/stream.proto
package profilev1
import (
proto "github.com/golang/protobuf/proto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
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)
)
// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
// Event sent when a user's profile is updated.
//
// Servers should sent this event only to users that can "see" (eg. they are
// in the same guild) the user this event was triggered by.
type ProfileUpdated struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// User ID of the user that had it's profile updated.
UserId uint64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
// New username for this user.
NewUsername *string `protobuf:"bytes,2,opt,name=new_username,json=newUsername,proto3,oneof" json:"new_username,omitempty"`
// New avatar for this user.
NewAvatar *string `protobuf:"bytes,3,opt,name=new_avatar,json=newAvatar,proto3,oneof" json:"new_avatar,omitempty"`
// New status for this user.
NewStatus *UserStatus `protobuf:"varint,4,opt,name=new_status,json=newStatus,proto3,enum=protocol.profile.v1.UserStatus,oneof" json:"new_status,omitempty"`
// New is bot or not for this user.
NewIsBot *bool `protobuf:"varint,5,opt,name=new_is_bot,json=newIsBot,proto3,oneof" json:"new_is_bot,omitempty"`
}
func (x *ProfileUpdated) Reset() {
*x = ProfileUpdated{}
if protoimpl.UnsafeEnabled {
mi := &file_profile_v1_stream_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ProfileUpdated) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ProfileUpdated) ProtoMessage() {}
func (x *ProfileUpdated) ProtoReflect() protoreflect.Message {
mi := &file_profile_v1_stream_proto_msgTypes[0]
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 ProfileUpdated.ProtoReflect.Descriptor instead.
func (*ProfileUpdated) Descriptor() ([]byte, []int) {
return file_profile_v1_stream_proto_rawDescGZIP(), []int{0}
}
func (x *ProfileUpdated) GetUserId() uint64 {
if x != nil {
return x.UserId
}
return 0
}
func (x *ProfileUpdated) GetNewUsername() string {
if x != nil && x.NewUsername != nil {
return *x.NewUsername
}
return ""
}
func (x *ProfileUpdated) GetNewAvatar() string {
if x != nil && x.NewAvatar != nil {
return *x.NewAvatar
}
return ""
}
func (x *ProfileUpdated) GetNewStatus() UserStatus {
if x != nil && x.NewStatus != nil {
return *x.NewStatus
}
return UserStatus_USER_STATUS_OFFLINE_UNSPECIFIED
}
func (x *ProfileUpdated) GetNewIsBot() bool {
if x != nil && x.NewIsBot != nil {
return *x.NewIsBot
}
return false
}
// Describes an emote service event.
type StreamEvent struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The event type.
//
// Types that are assignable to Event:
// *StreamEvent_ProfileUpdated
Event isStreamEvent_Event `protobuf_oneof:"event"`
}
func (x *StreamEvent) Reset() {
*x = StreamEvent{}
if protoimpl.UnsafeEnabled {
mi := &file_profile_v1_stream_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *StreamEvent) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*StreamEvent) ProtoMessage() {}
func (x *StreamEvent) ProtoReflect() protoreflect.Message {
mi := &file_profile_v1_stream_proto_msgTypes[1]
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 StreamEvent.ProtoReflect.Descriptor instead.
func (*StreamEvent) Descriptor() ([]byte, []int) {
return file_profile_v1_stream_proto_rawDescGZIP(), []int{1}
}
func (m *StreamEvent) GetEvent() isStreamEvent_Event {
if m != nil {
return m.Event
}
return nil
}
func (x *StreamEvent) GetProfileUpdated() *ProfileUpdated {
if x, ok := x.GetEvent().(*StreamEvent_ProfileUpdated); ok {
return x.ProfileUpdated
}
return nil
}
type isStreamEvent_Event interface {
isStreamEvent_Event()
}
type StreamEvent_ProfileUpdated struct {
// Send the profile updated event.
ProfileUpdated *ProfileUpdated `protobuf:"bytes,14,opt,name=profile_updated,json=profileUpdated,proto3,oneof"`
}
func (*StreamEvent_ProfileUpdated) isStreamEvent_Event() {}
var File_profile_v1_stream_proto protoreflect.FileDescriptor
var file_profile_v1_stream_proto_rawDesc = []byte{
0x0a, 0x17, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x72,
0x65, 0x61, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x16,
0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9b, 0x02, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69,
0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65,
0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72,
0x49, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x55,
0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x6e, 0x65,
0x77, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01,
0x52, 0x09, 0x6e, 0x65, 0x77, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x88, 0x01, 0x01, 0x12, 0x43,
0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72,
0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61,
0x74, 0x75, 0x73, 0x48, 0x02, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x69, 0x73, 0x5f, 0x62, 0x6f,
0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x49, 0x73,
0x42, 0x6f, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x75,
0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x65, 0x77, 0x5f,
0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x73,
0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x69, 0x73,
0x5f, 0x62, 0x6f, 0x74, 0x22, 0x66, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76,
0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x75,
0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e,
0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
0x64, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61,
0x74, 0x65, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0xd6, 0x01, 0x0a,
0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72,
0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x2d, 0x64, 0x65, 0x76, 0x65,
0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69, 0x62, 0x73, 0x68, 0x69, 0x62,
0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x3b,
0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x50, 0x58, 0xaa,
0x02, 0x13, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69,
0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
0x5c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x50, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x56,
0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_profile_v1_stream_proto_rawDescOnce sync.Once
file_profile_v1_stream_proto_rawDescData = file_profile_v1_stream_proto_rawDesc
)
func file_profile_v1_stream_proto_rawDescGZIP() []byte {
file_profile_v1_stream_proto_rawDescOnce.Do(func() {
file_profile_v1_stream_proto_rawDescData = protoimpl.X.CompressGZIP(file_profile_v1_stream_proto_rawDescData)
})
return file_profile_v1_stream_proto_rawDescData
}
var file_profile_v1_stream_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_profile_v1_stream_proto_goTypes = []interface{}{
(*ProfileUpdated)(nil), // 0: protocol.profile.v1.ProfileUpdated
(*StreamEvent)(nil), // 1: protocol.profile.v1.StreamEvent
(UserStatus)(0), // 2: protocol.profile.v1.UserStatus
}
var file_profile_v1_stream_proto_depIdxs = []int32{
2, // 0: protocol.profile.v1.ProfileUpdated.new_status:type_name -> protocol.profile.v1.UserStatus
0, // 1: protocol.profile.v1.StreamEvent.profile_updated:type_name -> protocol.profile.v1.ProfileUpdated
2, // [2:2] is the sub-list for method output_type
2, // [2:2] is the sub-list for method input_type
2, // [2:2] is the sub-list for extension type_name
2, // [2:2] is the sub-list for extension extendee
0, // [0:2] is the sub-list for field type_name
}
func init() { file_profile_v1_stream_proto_init() }
func file_profile_v1_stream_proto_init() {
if File_profile_v1_stream_proto != nil {
return
}
file_profile_v1_types_proto_init()
if !protoimpl.UnsafeEnabled {
file_profile_v1_stream_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ProfileUpdated); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_profile_v1_stream_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*StreamEvent); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_profile_v1_stream_proto_msgTypes[0].OneofWrappers = []interface{}{}
file_profile_v1_stream_proto_msgTypes[1].OneofWrappers = []interface{}{
(*StreamEvent_ProfileUpdated)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_profile_v1_stream_proto_rawDesc,
NumEnums: 0,
NumMessages: 2,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_profile_v1_stream_proto_goTypes,
DependencyIndexes: file_profile_v1_stream_proto_depIdxs,
MessageInfos: file_profile_v1_stream_proto_msgTypes,
}.Build()
File_profile_v1_stream_proto = out.File
file_profile_v1_stream_proto_rawDesc = nil
file_profile_v1_stream_proto_goTypes = nil
file_profile_v1_stream_proto_depIdxs = nil
}

View File

@ -0,0 +1,835 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.23.0
// protoc v3.17.3
// source: profile/v1/types.proto
package profilev1
import (
proto "github.com/golang/protobuf/proto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
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)
)
// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
// The possible statuses a user can have.
type UserStatus int32
const (
// User is offline (not connected to the server).
UserStatus_USER_STATUS_OFFLINE_UNSPECIFIED UserStatus = 0
// User is online (this is the default value if ommitted).
UserStatus_USER_STATUS_ONLINE UserStatus = 1
// User is away.
UserStatus_USER_STATUS_IDLE UserStatus = 2
// User does not want to be disturbed.
UserStatus_USER_STATUS_DO_NOT_DISTURB UserStatus = 3
// User is on mobile.
UserStatus_USER_STATUS_MOBILE UserStatus = 4
// User is streaming
UserStatus_USER_STATUS_STREAMING UserStatus = 5
)
// Enum value maps for UserStatus.
var (
UserStatus_name = map[int32]string{
0: "USER_STATUS_OFFLINE_UNSPECIFIED",
1: "USER_STATUS_ONLINE",
2: "USER_STATUS_IDLE",
3: "USER_STATUS_DO_NOT_DISTURB",
4: "USER_STATUS_MOBILE",
5: "USER_STATUS_STREAMING",
}
UserStatus_value = map[string]int32{
"USER_STATUS_OFFLINE_UNSPECIFIED": 0,
"USER_STATUS_ONLINE": 1,
"USER_STATUS_IDLE": 2,
"USER_STATUS_DO_NOT_DISTURB": 3,
"USER_STATUS_MOBILE": 4,
"USER_STATUS_STREAMING": 5,
}
)
func (x UserStatus) Enum() *UserStatus {
p := new(UserStatus)
*p = x
return p
}
func (x UserStatus) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (UserStatus) Descriptor() protoreflect.EnumDescriptor {
return file_profile_v1_types_proto_enumTypes[0].Descriptor()
}
func (UserStatus) Type() protoreflect.EnumType {
return &file_profile_v1_types_proto_enumTypes[0]
}
func (x UserStatus) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use UserStatus.Descriptor instead.
func (UserStatus) EnumDescriptor() ([]byte, []int) {
return file_profile_v1_types_proto_rawDescGZIP(), []int{0}
}
// Data for a single profile, without the user's ID.
type Profile struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// the name of the user.
UserName string `protobuf:"bytes,1,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"`
// the user's avatar.
UserAvatar *string `protobuf:"bytes,2,opt,name=user_avatar,json=userAvatar,proto3,oneof" json:"user_avatar,omitempty"`
// the status of the user.
UserStatus UserStatus `protobuf:"varint,3,opt,name=user_status,json=userStatus,proto3,enum=protocol.profile.v1.UserStatus" json:"user_status,omitempty"`
// whether the user is a bot or not.
IsBot bool `protobuf:"varint,4,opt,name=is_bot,json=isBot,proto3" json:"is_bot,omitempty"`
}
func (x *Profile) Reset() {
*x = Profile{}
if protoimpl.UnsafeEnabled {
mi := &file_profile_v1_types_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Profile) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Profile) ProtoMessage() {}
func (x *Profile) ProtoReflect() protoreflect.Message {
mi := &file_profile_v1_types_proto_msgTypes[0]
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 Profile.ProtoReflect.Descriptor instead.
func (*Profile) Descriptor() ([]byte, []int) {
return file_profile_v1_types_proto_rawDescGZIP(), []int{0}
}
func (x *Profile) GetUserName() string {
if x != nil {
return x.UserName
}
return ""
}
func (x *Profile) GetUserAvatar() string {
if x != nil && x.UserAvatar != nil {
return *x.UserAvatar
}
return ""
}
func (x *Profile) GetUserStatus() UserStatus {
if x != nil {
return x.UserStatus
}
return UserStatus_USER_STATUS_OFFLINE_UNSPECIFIED
}
func (x *Profile) GetIsBot() bool {
if x != nil {
return x.IsBot
}
return false
}
// Used in `GetProfile` endpoint.
type GetProfileRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The id of the user to get.
UserId uint64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
}
func (x *GetProfileRequest) Reset() {
*x = GetProfileRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_profile_v1_types_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetProfileRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetProfileRequest) ProtoMessage() {}
func (x *GetProfileRequest) ProtoReflect() protoreflect.Message {
mi := &file_profile_v1_types_proto_msgTypes[1]
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 GetProfileRequest.ProtoReflect.Descriptor instead.
func (*GetProfileRequest) Descriptor() ([]byte, []int) {
return file_profile_v1_types_proto_rawDescGZIP(), []int{1}
}
func (x *GetProfileRequest) GetUserId() uint64 {
if x != nil {
return x.UserId
}
return 0
}
// Used in `GetProfile` endpoint.
type GetProfileResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The user's profile
Profile *Profile `protobuf:"bytes,1,opt,name=profile,proto3" json:"profile,omitempty"`
}
func (x *GetProfileResponse) Reset() {
*x = GetProfileResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_profile_v1_types_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetProfileResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetProfileResponse) ProtoMessage() {}
func (x *GetProfileResponse) ProtoReflect() protoreflect.Message {
mi := &file_profile_v1_types_proto_msgTypes[2]
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 GetProfileResponse.ProtoReflect.Descriptor instead.
func (*GetProfileResponse) Descriptor() ([]byte, []int) {
return file_profile_v1_types_proto_rawDescGZIP(), []int{2}
}
func (x *GetProfileResponse) GetProfile() *Profile {
if x != nil {
return x.Profile
}
return nil
}
// Used in `UpdateProfile` endpoint.
type UpdateProfileRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// new name of the user.
NewUserName *string `protobuf:"bytes,1,opt,name=new_user_name,json=newUserName,proto3,oneof" json:"new_user_name,omitempty"`
// new user avatar. The avatar will be removed if the string is empty.
NewUserAvatar *string `protobuf:"bytes,2,opt,name=new_user_avatar,json=newUserAvatar,proto3,oneof" json:"new_user_avatar,omitempty"`
// new status of the user.
NewUserStatus *UserStatus `protobuf:"varint,3,opt,name=new_user_status,json=newUserStatus,proto3,enum=protocol.profile.v1.UserStatus,oneof" json:"new_user_status,omitempty"`
// new whether the user is a bot or not.
NewIsBot *bool `protobuf:"varint,4,opt,name=new_is_bot,json=newIsBot,proto3,oneof" json:"new_is_bot,omitempty"`
}
func (x *UpdateProfileRequest) Reset() {
*x = UpdateProfileRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_profile_v1_types_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateProfileRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateProfileRequest) ProtoMessage() {}
func (x *UpdateProfileRequest) ProtoReflect() protoreflect.Message {
mi := &file_profile_v1_types_proto_msgTypes[3]
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 UpdateProfileRequest.ProtoReflect.Descriptor instead.
func (*UpdateProfileRequest) Descriptor() ([]byte, []int) {
return file_profile_v1_types_proto_rawDescGZIP(), []int{3}
}
func (x *UpdateProfileRequest) GetNewUserName() string {
if x != nil && x.NewUserName != nil {
return *x.NewUserName
}
return ""
}
func (x *UpdateProfileRequest) GetNewUserAvatar() string {
if x != nil && x.NewUserAvatar != nil {
return *x.NewUserAvatar
}
return ""
}
func (x *UpdateProfileRequest) GetNewUserStatus() UserStatus {
if x != nil && x.NewUserStatus != nil {
return *x.NewUserStatus
}
return UserStatus_USER_STATUS_OFFLINE_UNSPECIFIED
}
func (x *UpdateProfileRequest) GetNewIsBot() bool {
if x != nil && x.NewIsBot != nil {
return *x.NewIsBot
}
return false
}
// Used in `UpdateProfile` endpoint.
type UpdateProfileResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *UpdateProfileResponse) Reset() {
*x = UpdateProfileResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_profile_v1_types_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateProfileResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateProfileResponse) ProtoMessage() {}
func (x *UpdateProfileResponse) ProtoReflect() protoreflect.Message {
mi := &file_profile_v1_types_proto_msgTypes[4]
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 UpdateProfileResponse.ProtoReflect.Descriptor instead.
func (*UpdateProfileResponse) Descriptor() ([]byte, []int) {
return file_profile_v1_types_proto_rawDescGZIP(), []int{4}
}
// Used in `GetAppData` endpoint.
type GetAppDataRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// the app id.
AppId string `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
}
func (x *GetAppDataRequest) Reset() {
*x = GetAppDataRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_profile_v1_types_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetAppDataRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetAppDataRequest) ProtoMessage() {}
func (x *GetAppDataRequest) ProtoReflect() protoreflect.Message {
mi := &file_profile_v1_types_proto_msgTypes[5]
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 GetAppDataRequest.ProtoReflect.Descriptor instead.
func (*GetAppDataRequest) Descriptor() ([]byte, []int) {
return file_profile_v1_types_proto_rawDescGZIP(), []int{5}
}
func (x *GetAppDataRequest) GetAppId() string {
if x != nil {
return x.AppId
}
return ""
}
// Used in `GetAppData` endpoint.
type GetAppDataResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// the app data.
AppData []byte `protobuf:"bytes,1,opt,name=app_data,json=appData,proto3" json:"app_data,omitempty"`
}
func (x *GetAppDataResponse) Reset() {
*x = GetAppDataResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_profile_v1_types_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetAppDataResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetAppDataResponse) ProtoMessage() {}
func (x *GetAppDataResponse) ProtoReflect() protoreflect.Message {
mi := &file_profile_v1_types_proto_msgTypes[6]
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 GetAppDataResponse.ProtoReflect.Descriptor instead.
func (*GetAppDataResponse) Descriptor() ([]byte, []int) {
return file_profile_v1_types_proto_rawDescGZIP(), []int{6}
}
func (x *GetAppDataResponse) GetAppData() []byte {
if x != nil {
return x.AppData
}
return nil
}
// Used in `SetAppData` endpoint.
type SetAppDataRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// the app id.
AppId string `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
// the app data.
AppData []byte `protobuf:"bytes,2,opt,name=app_data,json=appData,proto3" json:"app_data,omitempty"`
}
func (x *SetAppDataRequest) Reset() {
*x = SetAppDataRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_profile_v1_types_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SetAppDataRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SetAppDataRequest) ProtoMessage() {}
func (x *SetAppDataRequest) ProtoReflect() protoreflect.Message {
mi := &file_profile_v1_types_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 SetAppDataRequest.ProtoReflect.Descriptor instead.
func (*SetAppDataRequest) Descriptor() ([]byte, []int) {
return file_profile_v1_types_proto_rawDescGZIP(), []int{7}
}
func (x *SetAppDataRequest) GetAppId() string {
if x != nil {
return x.AppId
}
return ""
}
func (x *SetAppDataRequest) GetAppData() []byte {
if x != nil {
return x.AppData
}
return nil
}
// Used in `SetAppData` endpoint.
type SetAppDataResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *SetAppDataResponse) Reset() {
*x = SetAppDataResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_profile_v1_types_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SetAppDataResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SetAppDataResponse) ProtoMessage() {}
func (x *SetAppDataResponse) ProtoReflect() protoreflect.Message {
mi := &file_profile_v1_types_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 SetAppDataResponse.ProtoReflect.Descriptor instead.
func (*SetAppDataResponse) Descriptor() ([]byte, []int) {
return file_profile_v1_types_proto_rawDescGZIP(), []int{8}
}
var File_profile_v1_types_proto protoreflect.FileDescriptor
var file_profile_v1_types_proto_rawDesc = []byte{
0x0a, 0x16, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70,
0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x22, 0xb5, 0x01,
0x0a, 0x07, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65,
0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73,
0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61,
0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x75,
0x73, 0x65, 0x72, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0b,
0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f,
0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
0x75, 0x73, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x15,
0x0a, 0x06, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05,
0x69, 0x73, 0x42, 0x6f, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61,
0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x2c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66,
0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73,
0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65,
0x72, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x70, 0x72, 0x6f,
0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31,
0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c,
0x65, 0x22, 0xa6, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66,
0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0d, 0x6e, 0x65,
0x77, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f,
0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0d,
0x6e, 0x65, 0x77, 0x55, 0x73, 0x65, 0x72, 0x41, 0x76, 0x61, 0x74, 0x61, 0x72, 0x88, 0x01, 0x01,
0x12, 0x4c, 0x0a, 0x0f, 0x6e, 0x65, 0x77, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61,
0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e,
0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x02, 0x52, 0x0d, 0x6e, 0x65,
0x77, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x21,
0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01,
0x28, 0x08, 0x48, 0x03, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x49, 0x73, 0x42, 0x6f, 0x74, 0x88, 0x01,
0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e,
0x61, 0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x75, 0x73, 0x65, 0x72,
0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6e, 0x65, 0x77, 0x5f,
0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
0x6e, 0x65, 0x77, 0x5f, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x74, 0x22, 0x17, 0x0a, 0x15, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74,
0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x22,
0x2f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x64, 0x61, 0x74,
0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61,
0x22, 0x45, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08,
0x61, 0x70, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07,
0x61, 0x70, 0x70, 0x44, 0x61, 0x74, 0x61, 0x22, 0x14, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x41, 0x70,
0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0xb2, 0x01,
0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x1f,
0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x46, 0x46, 0x4c,
0x49, 0x4e, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
0x00, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x53, 0x45,
0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x44, 0x4c, 0x45, 0x10, 0x02, 0x12,
0x1e, 0x0a, 0x1a, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44,
0x4f, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x55, 0x52, 0x42, 0x10, 0x03, 0x12,
0x16, 0x0a, 0x12, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4d,
0x4f, 0x42, 0x49, 0x4c, 0x45, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x53, 0x45, 0x52, 0x5f,
0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x49, 0x4e, 0x47,
0x10, 0x05, 0x42, 0xd5, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0a,
0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x69,
0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79,
0x2d, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69,
0x62, 0x73, 0x68, 0x69, 0x62, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c,
0x65, 0x2f, 0x76, 0x31, 0x3b, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02,
0x03, 0x50, 0x50, 0x58, 0xaa, 0x02, 0x13, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x50, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x56, 0x31,
0xe2, 0x02, 0x1f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x50, 0x72, 0x6f, 0x66,
0x69, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0xea, 0x02, 0x15, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a, 0x50,
0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
}
var (
file_profile_v1_types_proto_rawDescOnce sync.Once
file_profile_v1_types_proto_rawDescData = file_profile_v1_types_proto_rawDesc
)
func file_profile_v1_types_proto_rawDescGZIP() []byte {
file_profile_v1_types_proto_rawDescOnce.Do(func() {
file_profile_v1_types_proto_rawDescData = protoimpl.X.CompressGZIP(file_profile_v1_types_proto_rawDescData)
})
return file_profile_v1_types_proto_rawDescData
}
var file_profile_v1_types_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_profile_v1_types_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_profile_v1_types_proto_goTypes = []interface{}{
(UserStatus)(0), // 0: protocol.profile.v1.UserStatus
(*Profile)(nil), // 1: protocol.profile.v1.Profile
(*GetProfileRequest)(nil), // 2: protocol.profile.v1.GetProfileRequest
(*GetProfileResponse)(nil), // 3: protocol.profile.v1.GetProfileResponse
(*UpdateProfileRequest)(nil), // 4: protocol.profile.v1.UpdateProfileRequest
(*UpdateProfileResponse)(nil), // 5: protocol.profile.v1.UpdateProfileResponse
(*GetAppDataRequest)(nil), // 6: protocol.profile.v1.GetAppDataRequest
(*GetAppDataResponse)(nil), // 7: protocol.profile.v1.GetAppDataResponse
(*SetAppDataRequest)(nil), // 8: protocol.profile.v1.SetAppDataRequest
(*SetAppDataResponse)(nil), // 9: protocol.profile.v1.SetAppDataResponse
}
var file_profile_v1_types_proto_depIdxs = []int32{
0, // 0: protocol.profile.v1.Profile.user_status:type_name -> protocol.profile.v1.UserStatus
1, // 1: protocol.profile.v1.GetProfileResponse.profile:type_name -> protocol.profile.v1.Profile
0, // 2: protocol.profile.v1.UpdateProfileRequest.new_user_status:type_name -> protocol.profile.v1.UserStatus
3, // [3:3] is the sub-list for method output_type
3, // [3:3] is the sub-list for method input_type
3, // [3:3] is the sub-list for extension type_name
3, // [3:3] is the sub-list for extension extendee
0, // [0:3] is the sub-list for field type_name
}
func init() { file_profile_v1_types_proto_init() }
func file_profile_v1_types_proto_init() {
if File_profile_v1_types_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_profile_v1_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Profile); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_profile_v1_types_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetProfileRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_profile_v1_types_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetProfileResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_profile_v1_types_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateProfileRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_profile_v1_types_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UpdateProfileResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_profile_v1_types_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetAppDataRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_profile_v1_types_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GetAppDataResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_profile_v1_types_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SetAppDataRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_profile_v1_types_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SetAppDataResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_profile_v1_types_proto_msgTypes[0].OneofWrappers = []interface{}{}
file_profile_v1_types_proto_msgTypes[3].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_profile_v1_types_proto_rawDesc,
NumEnums: 1,
NumMessages: 9,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_profile_v1_types_proto_goTypes,
DependencyIndexes: file_profile_v1_types_proto_depIdxs,
EnumInfos: file_profile_v1_types_proto_enumTypes,
MessageInfos: file_profile_v1_types_proto_msgTypes,
}.Build()
File_profile_v1_types_proto = out.File
file_profile_v1_types_proto_rawDesc = nil
file_profile_v1_types_proto_goTypes = nil
file_profile_v1_types_proto_depIdxs = nil
}

View File

@ -0,0 +1,10 @@
package shibshib
import chatv1 "github.com/harmony-development/shibshib/gen/chat/v1"
type LocatedMessage struct {
chatv1.MessageWithId
GuildID uint64
ChannelID uint64
}

View File

@ -35,3 +35,14 @@ const (
QUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008 QUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008
QUOTA_LIMITS_HARDWS_MAX_ENABLE = 0x00000004 QUOTA_LIMITS_HARDWS_MAX_ENABLE = 0x00000004
) )
type MemoryBasicInformation struct {
BaseAddress uintptr
AllocationBase uintptr
AllocationProtect uint32
PartitionId uint16
RegionSize uintptr
State uint32
Protect uint32
Type uint32
}

View File

@ -274,6 +274,11 @@ func NewCallbackCDecl(fn interface{}) uintptr {
//sys VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc //sys VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc
//sys VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree //sys VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree
//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect //sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect
//sys VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) = kernel32.VirtualProtectEx
//sys VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQuery
//sys VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQueryEx
//sys ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) = kernel32.ReadProcessMemory
//sys WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) = kernel32.WriteProcessMemory
//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile //sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile
//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW //sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW
//sys FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW //sys FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW

View File

@ -303,6 +303,7 @@ var (
procReadConsoleW = modkernel32.NewProc("ReadConsoleW") procReadConsoleW = modkernel32.NewProc("ReadConsoleW")
procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW")
procReadFile = modkernel32.NewProc("ReadFile") procReadFile = modkernel32.NewProc("ReadFile")
procReadProcessMemory = modkernel32.NewProc("ReadProcessMemory")
procReleaseMutex = modkernel32.NewProc("ReleaseMutex") procReleaseMutex = modkernel32.NewProc("ReleaseMutex")
procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW")
procResetEvent = modkernel32.NewProc("ResetEvent") procResetEvent = modkernel32.NewProc("ResetEvent")
@ -345,12 +346,16 @@ var (
procVirtualFree = modkernel32.NewProc("VirtualFree") procVirtualFree = modkernel32.NewProc("VirtualFree")
procVirtualLock = modkernel32.NewProc("VirtualLock") procVirtualLock = modkernel32.NewProc("VirtualLock")
procVirtualProtect = modkernel32.NewProc("VirtualProtect") procVirtualProtect = modkernel32.NewProc("VirtualProtect")
procVirtualProtectEx = modkernel32.NewProc("VirtualProtectEx")
procVirtualQuery = modkernel32.NewProc("VirtualQuery")
procVirtualQueryEx = modkernel32.NewProc("VirtualQueryEx")
procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") procVirtualUnlock = modkernel32.NewProc("VirtualUnlock")
procWTSGetActiveConsoleSessionId = modkernel32.NewProc("WTSGetActiveConsoleSessionId") procWTSGetActiveConsoleSessionId = modkernel32.NewProc("WTSGetActiveConsoleSessionId")
procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects") procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects")
procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject")
procWriteConsoleW = modkernel32.NewProc("WriteConsoleW") procWriteConsoleW = modkernel32.NewProc("WriteConsoleW")
procWriteFile = modkernel32.NewProc("WriteFile") procWriteFile = modkernel32.NewProc("WriteFile")
procWriteProcessMemory = modkernel32.NewProc("WriteProcessMemory")
procAcceptEx = modmswsock.NewProc("AcceptEx") procAcceptEx = modmswsock.NewProc("AcceptEx")
procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs") procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs")
procTransmitFile = modmswsock.NewProc("TransmitFile") procTransmitFile = modmswsock.NewProc("TransmitFile")
@ -2636,6 +2641,14 @@ func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (
return return
} }
func ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) {
r1, _, e1 := syscall.Syscall6(procReadProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesRead)), 0)
if r1 == 0 {
err = errnoErr(e1)
}
return
}
func ReleaseMutex(mutex Handle) (err error) { func ReleaseMutex(mutex Handle) (err error) {
r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0) r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0)
if r1 == 0 { if r1 == 0 {
@ -2990,6 +3003,30 @@ func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect
return return
} }
func VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) {
r1, _, e1 := syscall.Syscall6(procVirtualProtectEx.Addr(), 5, uintptr(process), uintptr(address), uintptr(size), uintptr(newProtect), uintptr(unsafe.Pointer(oldProtect)), 0)
if r1 == 0 {
err = errnoErr(e1)
}
return
}
func VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {
r1, _, e1 := syscall.Syscall(procVirtualQuery.Addr(), 3, uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length))
if r1 == 0 {
err = errnoErr(e1)
}
return
}
func VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {
r1, _, e1 := syscall.Syscall6(procVirtualQueryEx.Addr(), 4, uintptr(process), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length), 0, 0)
if r1 == 0 {
err = errnoErr(e1)
}
return
}
func VirtualUnlock(addr uintptr, length uintptr) (err error) { func VirtualUnlock(addr uintptr, length uintptr) (err error) {
r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0) r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)
if r1 == 0 { if r1 == 0 {
@ -3046,6 +3083,14 @@ func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped)
return return
} }
func WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) {
r1, _, e1 := syscall.Syscall6(procWriteProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesWritten)), 0)
if r1 == 0 {
err = errnoErr(e1)
}
return
}
func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) { func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {
r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0) r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0)
if r1 == 0 { if r1 == 0 {

8
vendor/modules.txt vendored
View File

@ -109,6 +109,14 @@ github.com/gorilla/schema
# github.com/gorilla/websocket v1.4.2 # github.com/gorilla/websocket v1.4.2
## explicit; go 1.12 ## explicit; go 1.12
github.com/gorilla/websocket github.com/gorilla/websocket
# github.com/harmony-development/shibshib v0.0.0-20211127182844-512296f7c548
## explicit; go 1.15
github.com/harmony-development/shibshib
github.com/harmony-development/shibshib/gen/auth/v1
github.com/harmony-development/shibshib/gen/chat/v1
github.com/harmony-development/shibshib/gen/emote/v1
github.com/harmony-development/shibshib/gen/harmonytypes/v1
github.com/harmony-development/shibshib/gen/profile/v1
# github.com/hashicorp/errwrap v1.1.0 # github.com/hashicorp/errwrap v1.1.0
## explicit ## explicit
github.com/hashicorp/errwrap github.com/hashicorp/errwrap