Compare commits
51 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
148f7d2a91 | ||
![]() |
1aa662f763 | ||
![]() |
0b86b88de7 | ||
![]() |
98033b1ba7 | ||
![]() |
2b7eab629d | ||
![]() |
0e4973e15c | ||
![]() |
af0acf0dae | ||
![]() |
76e5fe5a87 | ||
![]() |
802c80f40c | ||
![]() |
a51c5bd905 | ||
![]() |
8c68556f52 | ||
![]() |
cca1ea2404 | ||
![]() |
281016a501 | ||
![]() |
d4acdf2f89 | ||
![]() |
0951e75c85 | ||
![]() |
6b017b226a | ||
![]() |
9e3bd7398c | ||
![]() |
79f764c7a8 | ||
![]() |
b5dc4353fb | ||
![]() |
2fbac73c29 | ||
![]() |
6616d105d1 | ||
![]() |
6b4b19194e | ||
![]() |
9785edd263 | ||
![]() |
2a0bc11b68 | ||
![]() |
dd0325a88d | ||
![]() |
20783c0978 | ||
![]() |
3f06a40bd5 | ||
![]() |
68f43985ad | ||
![]() |
915ca8f817 | ||
![]() |
a65a81610b | ||
![]() |
8eb6ed5639 | ||
![]() |
795a8705c3 | ||
![]() |
3af0dc3b3a | ||
![]() |
9cf9b958a3 | ||
![]() |
3ac2ba8d5a | ||
![]() |
d893421c7b | ||
![]() |
250b3bb579 | ||
![]() |
e9edbfc051 | ||
![]() |
e343db6f72 | ||
![]() |
4d57d66f85 | ||
![]() |
54ed6320c2 | ||
![]() |
23083f3ae0 | ||
![]() |
1985873494 | ||
![]() |
8ae5917659 | ||
![]() |
c91bfd08d8 | ||
![]() |
49110a5872 | ||
![]() |
c01c8edeb8 | ||
![]() |
ff8cf067b8 | ||
![]() |
1420f68050 | ||
![]() |
c0be3e585a | ||
![]() |
3049ef9151 |
1
.github/ISSUE_TEMPLATE/Bug_report.md
vendored
1
.github/ISSUE_TEMPLATE/Bug_report.md
vendored
@@ -1,6 +1,7 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve. (Check the FAQ on the wiki first)
|
||||
labels: bug
|
||||
|
||||
---
|
||||
|
||||
|
1
.github/ISSUE_TEMPLATE/Feature_request.md
vendored
1
.github/ISSUE_TEMPLATE/Feature_request.md
vendored
@@ -1,6 +1,7 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
labels: enhancement
|
||||
|
||||
---
|
||||
|
||||
|
@@ -23,7 +23,7 @@ run:
|
||||
# default value is empty list, but next dirs are always skipped independently
|
||||
# from this option's value:
|
||||
# vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
|
||||
skip-dirs:
|
||||
skip-dirs: gateway/bridgemap$
|
||||
|
||||
# which files to skip: they will be analyzed, but issues from them
|
||||
# won't be reported. Default value is empty list, but there is
|
||||
@@ -175,6 +175,7 @@ linters:
|
||||
- maligned
|
||||
- prealloc
|
||||
- wsl
|
||||
- gomnd
|
||||
|
||||
|
||||
# rules to deal with reported isues
|
||||
|
12
.travis.yml
12
.travis.yml
@@ -20,22 +20,22 @@ jobs:
|
||||
- stage: lint
|
||||
# Run linting in one Go environment only.
|
||||
script: ./ci/lint.sh
|
||||
go: 1.13.x
|
||||
go: 1.14.x
|
||||
env:
|
||||
- GO111MODULE=on
|
||||
- GOLANGCI_VERSION="v1.21.0"
|
||||
- GOLANGCI_VERSION="v1.23.7"
|
||||
- stage: test
|
||||
# Run tests in a combination of Go environments.
|
||||
script: ./ci/test.sh
|
||||
go: 1.12.x
|
||||
go: 1.13.x
|
||||
env:
|
||||
- GO111MODULE=off
|
||||
- GOFLAGS=-mod=vendor
|
||||
- script: ./ci/test.sh
|
||||
go: 1.12.x
|
||||
go: 1.13.x
|
||||
env:
|
||||
- GO111MODULE=on
|
||||
- script: ./ci/test.sh
|
||||
go: 1.13.x
|
||||
go: 1.14.x
|
||||
env:
|
||||
- GO111MODULE=on
|
||||
- REPORT_COVERAGE=1
|
||||
|
14
Dockerfile
14
Dockerfile
@@ -1,11 +1,13 @@
|
||||
FROM alpine:edge
|
||||
ENTRYPOINT ["/bin/matterbridge"]
|
||||
FROM alpine:edge AS builder
|
||||
|
||||
COPY . /go/src/github.com/42wim/matterbridge
|
||||
RUN apk update && apk add go git gcc musl-dev ca-certificates mailcap \
|
||||
RUN apk update && apk add go git gcc musl-dev \
|
||||
&& cd /go/src/github.com/42wim/matterbridge \
|
||||
&& export GOPATH=/go \
|
||||
&& go get \
|
||||
&& go build -x -ldflags "-X main.githash=$(git log --pretty=format:'%h' -n 1)" -o /bin/matterbridge \
|
||||
&& rm -rf /go \
|
||||
&& apk del --purge git go gcc musl-dev
|
||||
&& go build -x -ldflags "-X main.githash=$(git log --pretty=format:'%h' -n 1)" -o /bin/matterbridge
|
||||
|
||||
FROM alpine:edge
|
||||
RUN apk --no-cache add ca-certificates mailcap
|
||||
COPY --from=builder /bin/matterbridge /bin/matterbridge
|
||||
ENTRYPOINT ["/bin/matterbridge"]
|
||||
|
@@ -22,6 +22,7 @@ Letting people be where they want to be.<br />
|
||||
[Zulip][mb-zulip] |
|
||||
[Telegram][mb-telegram] |
|
||||
[Keybase][mb-keybase] |
|
||||
[MSTeams][mb-msteams] |
|
||||
And more...
|
||||
</sup>
|
||||
|
||||
@@ -95,6 +96,7 @@ And more...
|
||||
- [Telegram](https://telegram.org)
|
||||
- [Rocket.chat](https://rocket.chat)
|
||||
- [Matrix](https://matrix.org)
|
||||
- [Microsoft Teams](https://teams.microsoft.com)
|
||||
- [Steam](https://store.steampowered.com/)
|
||||
- [Twitch](https://twitch.tv)
|
||||
- [Ssh-chat](https://github.com/shazow/ssh-chat)
|
||||
@@ -139,6 +141,7 @@ Questions or want to test on your favorite platform? Join below:
|
||||
- [Twitch][mb-twitch]
|
||||
- [Zulip][mb-zulip]
|
||||
- [Telegram][mb-telegram]
|
||||
- [Keybase][mb-keybase]
|
||||
|
||||
## Screenshots
|
||||
|
||||
@@ -148,7 +151,7 @@ See https://github.com/42wim/matterbridge/wiki
|
||||
|
||||
### Binaries
|
||||
|
||||
- Latest stable release [v1.16.5](https://github.com/42wim/matterbridge/releases/latest)
|
||||
- Latest stable release [v1.17.1](https://github.com/42wim/matterbridge/releases/latest)
|
||||
- Development releases (follows master) can be downloaded [here](https://dl.bintray.com/42wim/nightly/)
|
||||
|
||||
To install or upgrade just download the latest [binary](https://github.com/42wim/matterbridge/releases/latest) and follow the instructions on the [howto](https://github.com/42wim/matterbridge/wiki/How-to-create-your-config) for a step by step walkthrough for creating your configuration.
|
||||
@@ -332,6 +335,7 @@ Matterbridge wouldn't exist without these libraries:
|
||||
- zulip - https://github.com/ifo/gozulipbot
|
||||
- tengo - https://github.com/d5/tengo
|
||||
- keybase - https://github.com/keybase/go-keybase-chat-bot
|
||||
- msgraph.go - https://github.com/yaegashi/msgraph.go
|
||||
|
||||
<!-- Links -->
|
||||
|
||||
@@ -345,6 +349,7 @@ Matterbridge wouldn't exist without these libraries:
|
||||
[mb-xmpp]: https://inverse.chat/
|
||||
[mb-twitch]: https://www.twitch.tv/matterbridge
|
||||
[mb-whatsapp]: https://www.whatsapp.com/
|
||||
[mb-keybase]: https://keybase.io
|
||||
[mb-keybase]: https://keybase.io/team/matterbridge
|
||||
[mb-zulip]: https://matterbridge.zulipchat.com/register/
|
||||
[mb-telegram]: https://t.me/Matterbridge
|
||||
[mb-msteams]: https://teams.microsoft.com/join/hj92x75gd3y7
|
||||
|
@@ -3,6 +3,7 @@ package config
|
||||
import (
|
||||
"bytes"
|
||||
"io/ioutil"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -76,6 +77,7 @@ type Protocol struct {
|
||||
BindAddress string // mattermost, slack // DEPRECATED
|
||||
Buffer int // api
|
||||
Charset string // irc
|
||||
ClientID string // msteams
|
||||
ColorNicks bool // only irc for now
|
||||
Debug bool // general
|
||||
DebugLevel int // only for irc now
|
||||
@@ -124,6 +126,7 @@ type Protocol struct {
|
||||
RemoteNickFormat string // all protocols
|
||||
RunCommands []string // IRC
|
||||
Server string // IRC,mattermost,XMPP,discord
|
||||
SessionFile string // msteams,whatsapp
|
||||
ShowJoinPart bool // all protocols
|
||||
ShowTopicChange bool // slack
|
||||
ShowUserTyping bool // slack
|
||||
@@ -134,10 +137,13 @@ type Protocol struct {
|
||||
SyncTopic bool // slack
|
||||
TengoModifyMessage string // general
|
||||
Team string // mattermost, keybase
|
||||
TeamID string // msteams
|
||||
TenantID string // msteams
|
||||
Token string // gitter, slack, discord, api
|
||||
Topic string // zulip
|
||||
URL string // mattermost, slack // DEPRECATED
|
||||
UseAPI bool // mattermost, slack
|
||||
UseLocalAvatar []string // discord
|
||||
UseSASL bool // IRC
|
||||
UseTLS bool // IRC
|
||||
UseDiscriminator bool // discord
|
||||
@@ -235,7 +241,8 @@ func NewConfig(rootLogger *logrus.Logger, cfgfile string) Config {
|
||||
logger.Fatalf("Failed to read configuration file: %#v", err)
|
||||
}
|
||||
|
||||
mycfg := newConfigFromString(logger, input)
|
||||
cfgtype := detectConfigType(cfgfile)
|
||||
mycfg := newConfigFromString(logger, input, cfgtype)
|
||||
if mycfg.cv.General.MediaDownloadSize == 0 {
|
||||
mycfg.cv.General.MediaDownloadSize = 1000000
|
||||
}
|
||||
@@ -246,14 +253,26 @@ func NewConfig(rootLogger *logrus.Logger, cfgfile string) Config {
|
||||
return mycfg
|
||||
}
|
||||
|
||||
// detectConfigType detects JSON and YAML formats, defaults to TOML.
|
||||
func detectConfigType(cfgfile string) string {
|
||||
fileExt := filepath.Ext(cfgfile)
|
||||
switch fileExt {
|
||||
case ".json":
|
||||
return "json"
|
||||
case ".yaml", ".yml":
|
||||
return "yaml"
|
||||
}
|
||||
return "toml"
|
||||
}
|
||||
|
||||
// NewConfigFromString instantiates a new configuration based on the specified string.
|
||||
func NewConfigFromString(rootLogger *logrus.Logger, input []byte) Config {
|
||||
logger := rootLogger.WithFields(logrus.Fields{"prefix": "config"})
|
||||
return newConfigFromString(logger, input)
|
||||
return newConfigFromString(logger, input, "toml")
|
||||
}
|
||||
|
||||
func newConfigFromString(logger *logrus.Entry, input []byte) *config {
|
||||
viper.SetConfigType("toml")
|
||||
func newConfigFromString(logger *logrus.Entry, input []byte, cfgtype string) *config {
|
||||
viper.SetConfigType(cfgtype)
|
||||
viper.SetEnvPrefix("matterbridge")
|
||||
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_", "-", "_"))
|
||||
viper.AutomaticEnv()
|
||||
|
@@ -10,7 +10,7 @@ import (
|
||||
"github.com/42wim/matterbridge/bridge"
|
||||
"github.com/42wim/matterbridge/bridge/config"
|
||||
"github.com/42wim/matterbridge/bridge/helper"
|
||||
"github.com/bwmarrin/discordgo"
|
||||
"github.com/matterbridge/discordgo"
|
||||
)
|
||||
|
||||
const MessageLength = 1950
|
||||
@@ -21,6 +21,7 @@ type Bdiscord struct {
|
||||
c *discordgo.Session
|
||||
|
||||
nick string
|
||||
userID string
|
||||
guildID string
|
||||
webhookID string
|
||||
webhookToken string
|
||||
@@ -92,6 +93,7 @@ func (b *Bdiscord) Connect() error {
|
||||
}
|
||||
serverName := strings.Replace(b.GetString("Server"), "ID:", "", -1)
|
||||
b.nick = userinfo.Username
|
||||
b.userID = userinfo.ID
|
||||
b.channelsMutex.Lock()
|
||||
for _, guild := range guilds {
|
||||
if guild.Name == serverName || guild.ID == serverName {
|
||||
@@ -114,30 +116,37 @@ func (b *Bdiscord) Connect() error {
|
||||
b.Log.Infof("Server=\"%s\" # Server ID", guild.ID)
|
||||
}
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
b.channelsMutex.RLock()
|
||||
if b.GetString("WebhookURL") == "" {
|
||||
for _, channel := range b.channels {
|
||||
b.Log.Debugf("found channel %#v", channel)
|
||||
}
|
||||
} else {
|
||||
b.canEditWebhooks = true
|
||||
for _, channel := range b.channels {
|
||||
b.Log.Debugf("found channel %#v; verifying PermissionManageWebhooks", channel)
|
||||
perms, permsErr := b.c.State.UserChannelPermissions(userinfo.ID, channel.ID)
|
||||
manageWebhooks := discordgo.PermissionManageWebhooks
|
||||
if permsErr != nil || perms&manageWebhooks != manageWebhooks {
|
||||
b.Log.Warnf("Can't manage webhooks in channel \"%s\"", channel.Name)
|
||||
b.canEditWebhooks = false
|
||||
manageWebhooks := discordgo.PermissionManageWebhooks
|
||||
var channelsDenied []string
|
||||
for _, info := range b.Channels {
|
||||
id := b.getChannelID(info.Name) // note(qaisjp): this readlocks channelsMutex
|
||||
b.Log.Debugf("Verifying PermissionManageWebhooks for %s with ID %s", info.ID, id)
|
||||
|
||||
perms, permsErr := b.c.UserChannelPermissions(userinfo.ID, id)
|
||||
if permsErr != nil {
|
||||
b.Log.Warnf("Failed to check PermissionManageWebhooks in channel \"%s\": %s", info.Name, permsErr.Error())
|
||||
} else if perms&manageWebhooks == manageWebhooks {
|
||||
continue
|
||||
}
|
||||
channelsDenied = append(channelsDenied, fmt.Sprintf("%#v", info.Name))
|
||||
}
|
||||
|
||||
b.canEditWebhooks = len(channelsDenied) == 0
|
||||
if b.canEditWebhooks {
|
||||
b.Log.Info("Can manage webhooks; will edit channel for global webhook on send")
|
||||
} else {
|
||||
b.Log.Warn("Can't manage webhooks; won't edit channel for global webhook on send")
|
||||
b.Log.Warn("Can't manage webhooks in channels: ", strings.Join(channelsDenied, ", "))
|
||||
}
|
||||
}
|
||||
b.channelsMutex.RUnlock()
|
||||
@@ -380,6 +389,19 @@ func (b *Bdiscord) webhookSend(msg *config.Message, webhookID, token string) (*d
|
||||
err error
|
||||
)
|
||||
|
||||
// If avatar is unset, check if UseLocalAvatar contains the message's
|
||||
// account or protocol, and if so, try to find a local avatar
|
||||
if msg.Avatar == "" {
|
||||
for _, val := range b.GetStringSlice("UseLocalAvatar") {
|
||||
if msg.Protocol == val || msg.Account == val {
|
||||
if avatar := b.findAvatar(msg); avatar != "" {
|
||||
msg.Avatar = avatar
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// WebhookParams can have either `Content` or `File`.
|
||||
|
||||
// We can't send empty messages.
|
||||
@@ -429,3 +451,11 @@ func (b *Bdiscord) webhookSend(msg *config.Message, webhookID, token string) (*d
|
||||
}
|
||||
return res, err
|
||||
}
|
||||
|
||||
func (b *Bdiscord) findAvatar(m *config.Message) string {
|
||||
member, err := b.getGuildMemberByNick(m.Username)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return member.User.AvatarURL("")
|
||||
}
|
||||
|
@@ -2,7 +2,7 @@ package bdiscord
|
||||
|
||||
import (
|
||||
"github.com/42wim/matterbridge/bridge/config"
|
||||
"github.com/bwmarrin/discordgo"
|
||||
"github.com/matterbridge/discordgo"
|
||||
)
|
||||
|
||||
func (b *Bdiscord) messageDelete(s *discordgo.Session, m *discordgo.MessageDelete) { //nolint:unparam
|
||||
@@ -36,6 +36,11 @@ func (b *Bdiscord) messageTyping(s *discordgo.Session, m *discordgo.TypingStart)
|
||||
return
|
||||
}
|
||||
|
||||
// Ignore our own typing messages
|
||||
if m.UserID == b.userID {
|
||||
return
|
||||
}
|
||||
|
||||
rmsg := config.Message{Account: b.Account, Event: config.EventUserTyping}
|
||||
rmsg.Channel = b.getChannelName(m.ChannelID)
|
||||
b.Remote <- rmsg
|
||||
@@ -90,12 +95,12 @@ func (b *Bdiscord) messageCreate(s *discordgo.Session, m *discordgo.MessageCreat
|
||||
// set channel name
|
||||
rmsg.Channel = b.getChannelName(m.ChannelID)
|
||||
|
||||
// set username
|
||||
if !b.GetBool("UseUserName") {
|
||||
fromWebhook := m.WebhookID != ""
|
||||
if !fromWebhook && !b.GetBool("UseUserName") {
|
||||
rmsg.Username = b.getNick(m.Author, m.GuildID)
|
||||
} else {
|
||||
rmsg.Username = m.Author.Username
|
||||
if b.GetBool("UseDiscriminator") {
|
||||
if !fromWebhook && b.GetBool("UseDiscriminator") {
|
||||
rmsg.Username += "#" + m.Author.Discriminator
|
||||
}
|
||||
}
|
||||
@@ -103,7 +108,7 @@ func (b *Bdiscord) messageCreate(s *discordgo.Session, m *discordgo.MessageCreat
|
||||
// if we have embedded content add it to text
|
||||
if b.GetBool("ShowEmbeds") && m.Message.Embeds != nil {
|
||||
for _, embed := range m.Message.Embeds {
|
||||
rmsg.Text = rmsg.Text + "embed: " + embed.Title + " - " + embed.Description + " - " + embed.URL + "\n"
|
||||
rmsg.Text += handleEmbed(embed)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,6 +124,9 @@ func (b *Bdiscord) messageCreate(s *discordgo.Session, m *discordgo.MessageCreat
|
||||
rmsg.Event = config.EventUserAction
|
||||
}
|
||||
|
||||
// Replace emotes
|
||||
rmsg.Text = replaceEmotes(rmsg.Text)
|
||||
|
||||
b.Log.Debugf("<= Sending message from %s on %s to gateway", m.Author.Username, b.Account)
|
||||
b.Log.Debugf("<= Message is %#v", rmsg)
|
||||
b.Remote <- rmsg
|
||||
@@ -192,3 +200,33 @@ func (b *Bdiscord) memberRemove(s *discordgo.Session, m *discordgo.GuildMemberRe
|
||||
b.Log.Debugf("<= Message is %#v", rmsg)
|
||||
b.Remote <- rmsg
|
||||
}
|
||||
|
||||
func handleEmbed(embed *discordgo.MessageEmbed) string {
|
||||
var t []string
|
||||
var result string
|
||||
|
||||
t = append(t, embed.Title)
|
||||
t = append(t, embed.Description)
|
||||
t = append(t, embed.URL)
|
||||
|
||||
i := 0
|
||||
for _, e := range t {
|
||||
if e == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
i++
|
||||
if i == 1 {
|
||||
result += "embed: " + e
|
||||
continue
|
||||
}
|
||||
|
||||
result += " - " + e
|
||||
}
|
||||
|
||||
if result != "" {
|
||||
result += "\n"
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
58
bridge/discord/handlers_test.go
Normal file
58
bridge/discord/handlers_test.go
Normal file
@@ -0,0 +1,58 @@
|
||||
package bdiscord
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/matterbridge/discordgo"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestHandleEmbed(t *testing.T) {
|
||||
testcases := map[string]struct {
|
||||
embed *discordgo.MessageEmbed
|
||||
result string
|
||||
}{
|
||||
"allempty": {
|
||||
embed: &discordgo.MessageEmbed{},
|
||||
result: "",
|
||||
},
|
||||
"one": {
|
||||
embed: &discordgo.MessageEmbed{
|
||||
Title: "blah",
|
||||
},
|
||||
result: "embed: blah\n",
|
||||
},
|
||||
"two": {
|
||||
embed: &discordgo.MessageEmbed{
|
||||
Title: "blah",
|
||||
Description: "blah2",
|
||||
},
|
||||
result: "embed: blah - blah2\n",
|
||||
},
|
||||
"three": {
|
||||
embed: &discordgo.MessageEmbed{
|
||||
Title: "blah",
|
||||
Description: "blah2",
|
||||
URL: "blah3",
|
||||
},
|
||||
result: "embed: blah - blah2 - blah3\n",
|
||||
},
|
||||
"twob": {
|
||||
embed: &discordgo.MessageEmbed{
|
||||
Description: "blah2",
|
||||
URL: "blah3",
|
||||
},
|
||||
result: "embed: blah2 - blah3\n",
|
||||
},
|
||||
"oneb": {
|
||||
embed: &discordgo.MessageEmbed{
|
||||
URL: "blah3",
|
||||
},
|
||||
result: "embed: blah3\n",
|
||||
},
|
||||
}
|
||||
|
||||
for name, tc := range testcases {
|
||||
assert.Equalf(t, tc.result, handleEmbed(tc.embed), "Testcases %s", name)
|
||||
}
|
||||
}
|
@@ -6,7 +6,7 @@ import (
|
||||
"strings"
|
||||
"unicode"
|
||||
|
||||
"github.com/bwmarrin/discordgo"
|
||||
"github.com/matterbridge/discordgo"
|
||||
)
|
||||
|
||||
func (b *Bdiscord) getNick(user *discordgo.User, guildID string) string {
|
||||
@@ -137,6 +137,7 @@ var (
|
||||
// See https://discordapp.com/developers/docs/reference#message-formatting.
|
||||
channelMentionRE = regexp.MustCompile("<#[0-9]+>")
|
||||
userMentionRE = regexp.MustCompile("@[^@\n]{1,32}")
|
||||
emoteRE = regexp.MustCompile(`<a?(:\w+:)\d+>`)
|
||||
)
|
||||
|
||||
func (b *Bdiscord) replaceChannelMentions(text string) string {
|
||||
@@ -182,6 +183,10 @@ func (b *Bdiscord) replaceUserMentions(text string) string {
|
||||
return userMentionRE.ReplaceAllStringFunc(text, replaceUserMentionFunc)
|
||||
}
|
||||
|
||||
func replaceEmotes(text string) string {
|
||||
return emoteRE.ReplaceAllString(text, "$1")
|
||||
}
|
||||
|
||||
func (b *Bdiscord) replaceAction(text string) (string, bool) {
|
||||
if strings.HasPrefix(text, "_") && strings.HasSuffix(text, "_") {
|
||||
return text[1 : len(text)-1], true
|
||||
|
@@ -180,7 +180,7 @@ func ClipMessage(text string, length int) string {
|
||||
|
||||
// ParseMarkdown takes in an input string as markdown and parses it to html
|
||||
func ParseMarkdown(input string) string {
|
||||
extensions := parser.HardLineBreak
|
||||
extensions := parser.HardLineBreak | parser.NoIntraEmphasis
|
||||
markdownParser := parser.NewWithExtensions(extensions)
|
||||
renderer := html.NewRenderer(html.RendererOptions{
|
||||
Flags: 0,
|
||||
|
@@ -167,12 +167,8 @@ func (b *Birc) Send(msg config.Message) (string, error) {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
b.Local <- config.Message{
|
||||
Text: msgLines[i],
|
||||
Username: msg.Username,
|
||||
Channel: msg.Channel,
|
||||
Event: msg.Event,
|
||||
}
|
||||
msg.Text = msgLines[i]
|
||||
b.Local <- msg
|
||||
}
|
||||
return "", nil
|
||||
}
|
||||
|
@@ -4,7 +4,7 @@ import (
|
||||
"strconv"
|
||||
|
||||
"github.com/42wim/matterbridge/bridge/config"
|
||||
"github.com/keybase/go-keybase-chat-bot/kbchat"
|
||||
"github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1"
|
||||
)
|
||||
|
||||
func (b *Bkeybase) handleKeybase() {
|
||||
@@ -20,7 +20,7 @@ func (b *Bkeybase) handleKeybase() {
|
||||
b.Log.Errorf("failed to read message: %s", err.Error())
|
||||
}
|
||||
|
||||
if msg.Message.Content.Type != "text" {
|
||||
if msg.Message.Content.TypeName != "text" {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ func (b *Bkeybase) handleKeybase() {
|
||||
}()
|
||||
}
|
||||
|
||||
func (b *Bkeybase) handleMessage(msg kbchat.Message) {
|
||||
func (b *Bkeybase) handleMessage(msg chat1.MsgSummary) {
|
||||
b.Log.Debugf("== Receiving event: %#v", msg)
|
||||
if msg.Channel.TopicName != b.channel || msg.Channel.Name != b.team {
|
||||
return
|
||||
@@ -45,10 +45,10 @@ func (b *Bkeybase) handleMessage(msg kbchat.Message) {
|
||||
// TODO download avatar
|
||||
|
||||
// Create our message
|
||||
rmsg := config.Message{Username: msg.Sender.Username, Text: msg.Content.Text.Body, UserID: msg.Sender.Uid, Channel: msg.Channel.TopicName, ID: strconv.Itoa(msg.MsgID), Account: b.Account}
|
||||
rmsg := config.Message{Username: msg.Sender.Username, Text: msg.Content.Text.Body, UserID: string(msg.Sender.Uid), Channel: msg.Channel.TopicName, ID: strconv.Itoa(int(msg.Id)), Account: b.Account}
|
||||
|
||||
// Text must be a string
|
||||
if msg.Content.Type != "text" {
|
||||
if msg.Content.TypeName != "text" {
|
||||
b.Log.Errorf("message is not text")
|
||||
return
|
||||
}
|
||||
|
@@ -90,16 +90,17 @@ func (b *Bkeybase) Send(msg config.Message) (string, error) {
|
||||
return "", err
|
||||
}
|
||||
|
||||
_, _ = b.kbc.SendAttachmentByTeam(b.team, fpath, fcaption, &b.channel)
|
||||
_, _ = b.kbc.SendAttachmentByTeam(b.team, &b.channel, fpath, fcaption)
|
||||
}
|
||||
|
||||
return "", nil
|
||||
}
|
||||
|
||||
// Send regular message
|
||||
resp, err := b.kbc.SendMessageByTeamName(b.team, msg.Username+msg.Text, &b.channel)
|
||||
text := msg.Username + msg.Text
|
||||
resp, err := b.kbc.SendMessageByTeamName(b.team, &b.channel, text)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return strconv.Itoa(resp.Result.MsgID), err
|
||||
return strconv.Itoa(int(*resp.Result.MessageID)), err
|
||||
}
|
||||
|
@@ -172,10 +172,15 @@ func (b *Bmatrix) handleEvent(ev *matrix.Event) {
|
||||
return
|
||||
}
|
||||
|
||||
// TODO download avatar
|
||||
|
||||
// Create our message
|
||||
rmsg := config.Message{Username: ev.Sender[1:], Channel: channel, Account: b.Account, UserID: ev.Sender, ID: ev.ID}
|
||||
rmsg := config.Message{
|
||||
Username: ev.Sender[1:],
|
||||
Channel: channel,
|
||||
Account: b.Account,
|
||||
UserID: ev.Sender,
|
||||
ID: ev.ID,
|
||||
Avatar: b.getAvatarURL(ev.Sender),
|
||||
}
|
||||
|
||||
// Text must be a string
|
||||
if rmsg.Text, ok = ev.Content["body"].(string); !ok {
|
||||
@@ -358,3 +363,15 @@ func (b *Bmatrix) containsAttachment(content map[string]interface{}) bool {
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// getAvatarURL returns the avatar URL of the specified sender
|
||||
func (b *Bmatrix) getAvatarURL(sender string) string {
|
||||
mxcURL, err := b.mc.GetSenderAvatarURL(sender)
|
||||
if err != nil {
|
||||
b.Log.Errorf("getAvatarURL failed: %s", err)
|
||||
return ""
|
||||
}
|
||||
url := strings.ReplaceAll(mxcURL, "mxc://", b.GetString("Server")+"/_matrix/media/r0/thumbnail/")
|
||||
url += "?width=37&height=37&method=crop"
|
||||
return url
|
||||
}
|
||||
|
101
bridge/msteams/handler.go
Normal file
101
bridge/msteams/handler.go
Normal file
@@ -0,0 +1,101 @@
|
||||
package bmsteams
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"strings"
|
||||
|
||||
"github.com/42wim/matterbridge/bridge/config"
|
||||
"github.com/42wim/matterbridge/bridge/helper"
|
||||
|
||||
msgraph "github.com/yaegashi/msgraph.go/beta"
|
||||
)
|
||||
|
||||
func (b *Bmsteams) findFile(weburl string) (string, error) {
|
||||
itemRB, err := b.gc.GetDriveItemByURL(b.ctx, weburl)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
itemRB.Workbook().Worksheets()
|
||||
b.gc.Workbooks()
|
||||
item, err := itemRB.Request().Get(b.ctx)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if url, ok := item.GetAdditionalData("@microsoft.graph.downloadUrl"); ok {
|
||||
return url.(string), nil
|
||||
}
|
||||
return "", nil
|
||||
}
|
||||
|
||||
// handleDownloadFile handles file download
|
||||
func (b *Bmsteams) handleDownloadFile(rmsg *config.Message, filename, weburl string) error {
|
||||
realURL, err := b.findFile(weburl)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Actually download the file.
|
||||
data, err := helper.DownloadFile(realURL)
|
||||
if err != nil {
|
||||
return fmt.Errorf("download %s failed %#v", weburl, err)
|
||||
}
|
||||
|
||||
// If a comment is attached to the file(s) it is in the 'Text' field of the teams messge event
|
||||
// and should be added as comment to only one of the files. We reset the 'Text' field to ensure
|
||||
// that the comment is not duplicated.
|
||||
comment := rmsg.Text
|
||||
rmsg.Text = ""
|
||||
helper.HandleDownloadData(b.Log, rmsg, filename, comment, weburl, data, b.General)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *Bmsteams) handleAttachments(rmsg *config.Message, msg msgraph.ChatMessage) {
|
||||
for _, a := range msg.Attachments {
|
||||
//remove the attachment tags from the text
|
||||
rmsg.Text = attachRE.ReplaceAllString(rmsg.Text, "")
|
||||
|
||||
//handle a code snippet (code block)
|
||||
if *a.ContentType == "application/vnd.microsoft.card.codesnippet" {
|
||||
b.handleCodeSnippet(rmsg, a)
|
||||
continue
|
||||
}
|
||||
|
||||
//handle the download
|
||||
err := b.handleDownloadFile(rmsg, *a.Name, *a.ContentURL)
|
||||
if err != nil {
|
||||
b.Log.Errorf("download of %s failed: %s", *a.Name, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type AttachContent struct {
|
||||
Language string `json:"language"`
|
||||
CodeSnippetURL string `json:"codeSnippetUrl"`
|
||||
}
|
||||
|
||||
func (b *Bmsteams) handleCodeSnippet(rmsg *config.Message, attach msgraph.ChatMessageAttachment) {
|
||||
var content AttachContent
|
||||
err := json.Unmarshal([]byte(*attach.Content), &content)
|
||||
if err != nil {
|
||||
b.Log.Errorf("unmarshal codesnippet failed: %s", err)
|
||||
return
|
||||
}
|
||||
s := strings.Split(content.CodeSnippetURL, "/")
|
||||
if len(s) != 13 {
|
||||
b.Log.Errorf("codesnippetUrl has unexpected size: %s", content.CodeSnippetURL)
|
||||
return
|
||||
}
|
||||
resp, err := b.gc.Teams().Request().Client().Get(content.CodeSnippetURL)
|
||||
if err != nil {
|
||||
b.Log.Errorf("retrieving snippet content failed:%s", err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
res, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
b.Log.Errorf("reading snippet data failed: %s", err)
|
||||
return
|
||||
}
|
||||
rmsg.Text = rmsg.Text + "\n```" + content.Language + "\n" + string(res) + "\n```\n"
|
||||
}
|
205
bridge/msteams/msteams.go
Normal file
205
bridge/msteams/msteams.go
Normal file
@@ -0,0 +1,205 @@
|
||||
package bmsteams
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/42wim/matterbridge/bridge"
|
||||
"github.com/42wim/matterbridge/bridge/config"
|
||||
|
||||
// "github.com/davecgh/go-spew/spew"
|
||||
"github.com/matterbridge/msgraph.go/msauth"
|
||||
"github.com/mattn/godown"
|
||||
msgraph "github.com/yaegashi/msgraph.go/beta"
|
||||
|
||||
"golang.org/x/oauth2"
|
||||
)
|
||||
|
||||
var defaultScopes = []string{"openid", "profile", "offline_access", "Group.Read.All", "Group.ReadWrite.All"}
|
||||
var attachRE = regexp.MustCompile(`<attachment id=.*?attachment>`)
|
||||
|
||||
type Bmsteams struct {
|
||||
gc *msgraph.GraphServiceRequestBuilder
|
||||
ctx context.Context
|
||||
botID string
|
||||
*bridge.Config
|
||||
}
|
||||
|
||||
func New(cfg *bridge.Config) bridge.Bridger {
|
||||
return &Bmsteams{Config: cfg}
|
||||
}
|
||||
|
||||
func (b *Bmsteams) Connect() error {
|
||||
tokenCachePath := b.GetString("sessionFile")
|
||||
if tokenCachePath == "" {
|
||||
tokenCachePath = "msteams_session.json"
|
||||
}
|
||||
ctx := context.Background()
|
||||
m := msauth.NewManager()
|
||||
m.LoadFile(tokenCachePath) //nolint:errcheck
|
||||
ts, err := m.DeviceAuthorizationGrant(ctx, b.GetString("TenantID"), b.GetString("ClientID"), defaultScopes, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = m.SaveFile(tokenCachePath)
|
||||
if err != nil {
|
||||
b.Log.Errorf("Couldn't save sessionfile in %s: %s", tokenCachePath, err)
|
||||
}
|
||||
// make file readable only for matterbridge user
|
||||
err = os.Chmod(tokenCachePath, 0600)
|
||||
if err != nil {
|
||||
b.Log.Errorf("Couldn't change permissions for %s: %s", tokenCachePath, err)
|
||||
}
|
||||
httpClient := oauth2.NewClient(ctx, ts)
|
||||
graphClient := msgraph.NewClient(httpClient)
|
||||
b.gc = graphClient
|
||||
b.ctx = ctx
|
||||
|
||||
err = b.setBotID()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
b.Log.Info("Connection succeeded")
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *Bmsteams) Disconnect() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *Bmsteams) JoinChannel(channel config.ChannelInfo) error {
|
||||
go b.poll(channel.Name)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *Bmsteams) Send(msg config.Message) (string, error) {
|
||||
b.Log.Debugf("=> Receiving %#v", msg)
|
||||
if msg.ParentID != "" && msg.ParentID != "msg-parent-not-found" {
|
||||
return b.sendReply(msg)
|
||||
}
|
||||
if msg.ParentID == "msg-parent-not-found" {
|
||||
msg.ParentID = ""
|
||||
msg.Text = fmt.Sprintf("[thread]: %s", msg.Text)
|
||||
}
|
||||
ct := b.gc.Teams().ID(b.GetString("TeamID")).Channels().ID(msg.Channel).Messages().Request()
|
||||
text := msg.Username + msg.Text
|
||||
content := &msgraph.ItemBody{Content: &text}
|
||||
rmsg := &msgraph.ChatMessage{Body: content}
|
||||
res, err := ct.Add(b.ctx, rmsg)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return *res.ID, nil
|
||||
}
|
||||
|
||||
func (b *Bmsteams) sendReply(msg config.Message) (string, error) {
|
||||
ct := b.gc.Teams().ID(b.GetString("TeamID")).Channels().ID(msg.Channel).Messages().ID(msg.ParentID).Replies().Request()
|
||||
// Handle prefix hint for unthreaded messages.
|
||||
|
||||
text := msg.Username + msg.Text
|
||||
content := &msgraph.ItemBody{Content: &text}
|
||||
rmsg := &msgraph.ChatMessage{Body: content}
|
||||
res, err := ct.Add(b.ctx, rmsg)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return *res.ID, nil
|
||||
}
|
||||
|
||||
func (b *Bmsteams) getMessages(channel string) ([]msgraph.ChatMessage, error) {
|
||||
ct := b.gc.Teams().ID(b.GetString("TeamID")).Channels().ID(channel).Messages().Request()
|
||||
rct, err := ct.Get(b.ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
b.Log.Debugf("got %#v messages", len(rct))
|
||||
return rct, nil
|
||||
}
|
||||
|
||||
//nolint:gocognit
|
||||
func (b *Bmsteams) poll(channelName string) {
|
||||
msgmap := make(map[string]time.Time)
|
||||
b.Log.Debug("getting initial messages")
|
||||
res, err := b.getMessages(channelName)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
for _, msg := range res {
|
||||
msgmap[*msg.ID] = *msg.CreatedDateTime
|
||||
if msg.LastModifiedDateTime != nil {
|
||||
msgmap[*msg.ID] = *msg.LastModifiedDateTime
|
||||
}
|
||||
}
|
||||
time.Sleep(time.Second * 5)
|
||||
b.Log.Debug("polling for messages")
|
||||
for {
|
||||
res, err := b.getMessages(channelName)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
for i := len(res) - 1; i >= 0; i-- {
|
||||
msg := res[i]
|
||||
if mtime, ok := msgmap[*msg.ID]; ok {
|
||||
if mtime == *msg.CreatedDateTime && msg.LastModifiedDateTime == nil {
|
||||
continue
|
||||
}
|
||||
if msg.LastModifiedDateTime != nil && mtime == *msg.LastModifiedDateTime {
|
||||
continue
|
||||
}
|
||||
}
|
||||
if *msg.From.User.ID == b.botID {
|
||||
b.Log.Debug("skipping own message")
|
||||
msgmap[*msg.ID] = *msg.CreatedDateTime
|
||||
continue
|
||||
}
|
||||
msgmap[*msg.ID] = *msg.CreatedDateTime
|
||||
if msg.LastModifiedDateTime != nil {
|
||||
msgmap[*msg.ID] = *msg.LastModifiedDateTime
|
||||
}
|
||||
b.Log.Debugf("<= Sending message from %s on %s to gateway", *msg.From.User.DisplayName, b.Account)
|
||||
text := b.convertToMD(*msg.Body.Content)
|
||||
rmsg := config.Message{
|
||||
Username: *msg.From.User.DisplayName,
|
||||
Text: text,
|
||||
Channel: channelName,
|
||||
Account: b.Account,
|
||||
Avatar: "",
|
||||
UserID: *msg.From.User.ID,
|
||||
ID: *msg.ID,
|
||||
Extra: make(map[string][]interface{}),
|
||||
}
|
||||
|
||||
b.handleAttachments(&rmsg, msg)
|
||||
b.Log.Debugf("<= Message is %#v", rmsg)
|
||||
b.Remote <- rmsg
|
||||
}
|
||||
time.Sleep(time.Second * 5)
|
||||
}
|
||||
}
|
||||
|
||||
func (b *Bmsteams) setBotID() error {
|
||||
req := b.gc.Me().Request()
|
||||
r, err := req.Get(b.ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
b.botID = *r.ID
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *Bmsteams) convertToMD(text string) string {
|
||||
if !strings.Contains(text, "<div>") {
|
||||
return text
|
||||
}
|
||||
var sb strings.Builder
|
||||
err := godown.Convert(&sb, strings.NewReader(text), nil)
|
||||
if err != nil {
|
||||
b.Log.Errorf("Couldn't convert message to markdown %s", text)
|
||||
return text
|
||||
}
|
||||
return sb.String()
|
||||
}
|
@@ -1,15 +1,19 @@
|
||||
package bslack
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"html"
|
||||
"time"
|
||||
|
||||
"github.com/42wim/matterbridge/bridge/config"
|
||||
"github.com/42wim/matterbridge/bridge/helper"
|
||||
"github.com/nlopes/slack"
|
||||
"github.com/slack-go/slack"
|
||||
)
|
||||
|
||||
// ErrEventIgnored is for events that should be ignored
|
||||
var ErrEventIgnored = errors.New("this event message should ignored")
|
||||
|
||||
func (b *Bslack) handleSlack() {
|
||||
messages := make(chan *config.Message)
|
||||
if b.GetString(incomingWebhookConfig) != "" {
|
||||
@@ -53,7 +57,9 @@ func (b *Bslack) handleSlackClient(messages chan *config.Message) {
|
||||
continue
|
||||
}
|
||||
rmsg, err := b.handleTypingEvent(ev)
|
||||
if err != nil {
|
||||
if err == ErrEventIgnored {
|
||||
continue
|
||||
} else if err != nil {
|
||||
b.Log.Errorf("%#v", err)
|
||||
continue
|
||||
}
|
||||
@@ -87,7 +93,7 @@ func (b *Bslack) handleSlackClient(messages chan *config.Message) {
|
||||
b.Log.Errorf("Connection failed %#v %#v", ev.Error(), ev.ErrorObj)
|
||||
case *slack.MemberJoinedChannelEvent:
|
||||
b.users.populateUser(ev.User)
|
||||
case *slack.HelloEvent, *slack.LatencyReport:
|
||||
case *slack.HelloEvent, *slack.LatencyReport, *slack.ConnectingEvent:
|
||||
continue
|
||||
default:
|
||||
b.Log.Debugf("Unhandled incoming event: %T", ev)
|
||||
@@ -124,10 +130,16 @@ func (b *Bslack) skipMessageEvent(ev *slack.MessageEvent) bool {
|
||||
}
|
||||
}
|
||||
|
||||
// Check for our callback ID
|
||||
hasOurCallbackID := false
|
||||
if len(ev.Blocks.BlockSet) == 1 {
|
||||
block, ok := ev.Blocks.BlockSet[0].(*slack.SectionBlock)
|
||||
hasOurCallbackID = ok && block.BlockID == "matterbridge_"+b.uuid
|
||||
}
|
||||
|
||||
// Skip any messages that we made ourselves or from 'slackbot' (see #527).
|
||||
if ev.Username == sSlackBotUser ||
|
||||
(b.rtm != nil && ev.Username == b.si.User.Name) ||
|
||||
(len(ev.Attachments) > 0 && ev.Attachments[0].CallbackID == "matterbridge_"+b.uuid) {
|
||||
(b.rtm != nil && ev.Username == b.si.User.Name) || hasOurCallbackID {
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -270,6 +282,9 @@ func (b *Bslack) handleAttachments(ev *slack.MessageEvent, rmsg *config.Message)
|
||||
}
|
||||
|
||||
func (b *Bslack) handleTypingEvent(ev *slack.UserTypingEvent) (*config.Message, error) {
|
||||
if ev.User == b.si.User.ID {
|
||||
return nil, ErrEventIgnored
|
||||
}
|
||||
channelInfo, err := b.channels.getChannelByID(ev.Channel)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -7,8 +7,8 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/42wim/matterbridge/bridge/config"
|
||||
"github.com/nlopes/slack"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/slack-go/slack"
|
||||
)
|
||||
|
||||
// populateReceivedMessage shapes the initial Matterbridge message that we will forward to the
|
||||
|
@@ -5,7 +5,7 @@ import (
|
||||
|
||||
"github.com/42wim/matterbridge/bridge"
|
||||
"github.com/42wim/matterbridge/matterhook"
|
||||
"github.com/nlopes/slack"
|
||||
"github.com/slack-go/slack"
|
||||
)
|
||||
|
||||
type BLegacy struct {
|
||||
|
@@ -13,8 +13,8 @@ import (
|
||||
"github.com/42wim/matterbridge/bridge/helper"
|
||||
"github.com/42wim/matterbridge/matterhook"
|
||||
lru "github.com/hashicorp/golang-lru"
|
||||
"github.com/nlopes/slack"
|
||||
"github.com/rs/xid"
|
||||
"github.com/slack-go/slack"
|
||||
)
|
||||
|
||||
type Bslack struct {
|
||||
@@ -408,7 +408,6 @@ func (b *Bslack) editMessage(msg *config.Message, channelInfo *slack.Channel) (b
|
||||
}
|
||||
messageOptions := b.prepareMessageOptions(msg)
|
||||
for {
|
||||
messageOptions = append(messageOptions, slack.MsgOptionText(msg.Text, false))
|
||||
_, _, _, err := b.rtm.UpdateMessage(channelInfo.ID, msg.ID, messageOptions...)
|
||||
if err == nil {
|
||||
return true, nil
|
||||
@@ -427,11 +426,6 @@ func (b *Bslack) postMessage(msg *config.Message, channelInfo *slack.Channel) (s
|
||||
return "", nil
|
||||
}
|
||||
messageOptions := b.prepareMessageOptions(msg)
|
||||
messageOptions = append(
|
||||
messageOptions,
|
||||
slack.MsgOptionText(msg.Text, false),
|
||||
slack.MsgOptionEnableLinkUnfurl(),
|
||||
)
|
||||
for {
|
||||
_, id, err := b.rtm.PostMessage(channelInfo.ID, messageOptions...)
|
||||
if err == nil {
|
||||
@@ -497,8 +491,6 @@ func (b *Bslack) prepareMessageOptions(msg *config.Message) []slack.MsgOption {
|
||||
}
|
||||
|
||||
var attachments []slack.Attachment
|
||||
// add a callback ID so we can see we created it
|
||||
attachments = append(attachments, slack.Attachment{CallbackID: "matterbridge_" + b.uuid})
|
||||
// add file attachments
|
||||
attachments = append(attachments, b.createAttach(msg.Extra)...)
|
||||
// add slack attachments (from another slack bridge)
|
||||
@@ -509,6 +501,19 @@ func (b *Bslack) prepareMessageOptions(msg *config.Message) []slack.MsgOption {
|
||||
}
|
||||
|
||||
var opts []slack.MsgOption
|
||||
opts = append(opts,
|
||||
// provide regular text field (fallback used in Slack notifications, etc.)
|
||||
slack.MsgOptionText(msg.Text, false),
|
||||
|
||||
// add a callback ID so we can see we created it
|
||||
slack.MsgOptionBlocks(slack.NewSectionBlock(
|
||||
slack.NewTextBlockObject(slack.MarkdownType, msg.Text, false, false),
|
||||
nil, nil,
|
||||
slack.SectionBlockOptionBlockID("matterbridge_"+b.uuid),
|
||||
)),
|
||||
|
||||
slack.MsgOptionEnableLinkUnfurl(),
|
||||
)
|
||||
opts = append(opts, slack.MsgOptionAttachments(attachments...))
|
||||
opts = append(opts, slack.MsgOptionPostMessageParameters(params))
|
||||
return opts
|
||||
|
@@ -8,8 +8,8 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/42wim/matterbridge/bridge/config"
|
||||
"github.com/nlopes/slack"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/slack-go/slack"
|
||||
)
|
||||
|
||||
const minimumRefreshInterval = 10 * time.Second
|
||||
|
@@ -95,7 +95,7 @@ func (b *Btelegram) handleUsername(rmsg *config.Message, message *tgbotapi.Messa
|
||||
}
|
||||
}
|
||||
// only download avatars if we have a place to upload them (configured mediaserver)
|
||||
if b.General.MediaServerUpload != "" {
|
||||
if b.General.MediaServerUpload != "" || (b.General.MediaServerDownload != "" && b.General.MediaDownloadPath != "") {
|
||||
b.handleDownloadAvatar(message.From.ID, rmsg.Channel)
|
||||
}
|
||||
}
|
||||
|
@@ -9,6 +9,7 @@ import (
|
||||
"github.com/42wim/matterbridge/bridge/config"
|
||||
"github.com/42wim/matterbridge/bridge/helper"
|
||||
"github.com/Rhymen/go-whatsapp"
|
||||
"github.com/jpillora/backoff"
|
||||
)
|
||||
|
||||
/*
|
||||
@@ -25,7 +26,38 @@ func (b *Bwhatsapp) HandleError(err error) {
|
||||
if strings.Contains(err.Error(), "error processing data: received invalid data") {
|
||||
return
|
||||
}
|
||||
b.Log.Errorf("%v", err) // TODO implement proper handling? at least respond to different error types
|
||||
|
||||
switch err.(type) {
|
||||
case *whatsapp.ErrConnectionClosed, *whatsapp.ErrConnectionFailed:
|
||||
b.reconnect(err)
|
||||
default:
|
||||
switch err {
|
||||
case whatsapp.ErrConnectionTimeout:
|
||||
b.reconnect(err)
|
||||
default:
|
||||
b.Log.Errorf("%v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (b *Bwhatsapp) reconnect(err error) {
|
||||
bf := &backoff.Backoff{
|
||||
Min: time.Second,
|
||||
Max: 5 * time.Minute,
|
||||
Jitter: true,
|
||||
}
|
||||
for {
|
||||
d := bf.Duration()
|
||||
b.Log.Errorf("Connection failed, underlying error: %v", err)
|
||||
b.Log.Infof("Waiting %s...", d)
|
||||
time.Sleep(d)
|
||||
b.Log.Info("Reconnecting...")
|
||||
err := b.conn.Restore()
|
||||
if err == nil {
|
||||
bf.Reset()
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// HandleTextMessage sent from WhatsApp, relay it to the brige
|
||||
|
@@ -67,6 +67,7 @@ func (b *Bwhatsapp) Connect() error {
|
||||
// https://github.com/Rhymen/go-whatsapp#creating-a-connection
|
||||
b.Log.Debugln("Connecting to WhatsApp..")
|
||||
conn, err := whatsapp.NewConn(20 * time.Second)
|
||||
conn.SetClientVersion(0, 4, 1307)
|
||||
if err != nil {
|
||||
return errors.New("failed to connect to WhatsApp: " + err.Error())
|
||||
}
|
||||
|
52
changelog.md
52
changelog.md
@@ -1,3 +1,55 @@
|
||||
# v1.17.1
|
||||
|
||||
## Enhancements
|
||||
|
||||
- docker: Remove build dependencies from final image (multistage build) #1057
|
||||
|
||||
## Bugfix
|
||||
|
||||
- general: Don't transmit typing events from ourselves #1056
|
||||
- general: Add support for build tags #1054
|
||||
- discord: Strip extra info from emotes (discord) #1052
|
||||
- msteams: fix macos build: Update vendor yaegashi/msgraph.go to v0.1.2 #1036
|
||||
- whatsapp: Update client version whatsapp. Fixes #1061 #1062
|
||||
|
||||
This release couldn't exist without the following contributors:
|
||||
@awigen, @qaisjp, @42wim
|
||||
|
||||
# v1.17.0
|
||||
|
||||
## New features
|
||||
|
||||
- msteams: new protocol added. Add initial Microsoft Teams support #967
|
||||
See https://github.com/42wim/matterbridge/wiki/MS-Teams-setup for a complete walkthrough
|
||||
- discord: Add ability to procure avatars from the destination bridge #1000
|
||||
- matrix: Add support for avatars from matrix. #1007
|
||||
- general: support JSON and YAML config formats #1045
|
||||
|
||||
## Enhancements
|
||||
|
||||
- discord: Check only bridged channels for PermManageWebhooks #1001
|
||||
- irc: Be less lossy when throttling IRC messages #1004
|
||||
- keybase: updated library #1002, #1019
|
||||
- matrix: Rebase gomatrix vendor with upstream #1006
|
||||
- slack: Use upstream slack-go/slack again #1018
|
||||
- slack: Ignore ConnectingEvent #1041
|
||||
- slack: use blocks not attachments #1048
|
||||
- sshchat: Update vendor shazow/ssh-chat #1029
|
||||
- telegram: added markdownv2 mode for telegram #1037
|
||||
- whatsapp: Implement basic reconnect (whatsapp). Fixes #987 #1003
|
||||
|
||||
## Bugfix
|
||||
|
||||
- discord: Fix webhook permission checks sometimes failing #1043
|
||||
- discord: Fix #1027: warning when handling inbound webhooks #1044
|
||||
- discord: Fix duplicate separator on empty description/url (discord) #1035
|
||||
- matrix: Fix issue with underscores in links #999
|
||||
- slack: Fix #1039: messages sent to Slack being synced back #1046
|
||||
- telegram: Make avatars download work with mediaserverdownload (telegram). Fixes #920
|
||||
|
||||
This release couldn't exist without the following contributors:
|
||||
@qaisjp, @jakubgs, @burner1024, @notpushkin, @MartijnBraam, @42wim
|
||||
|
||||
# v1.16.5
|
||||
|
||||
- Fix version bump
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -u -e -x -o pipefail
|
||||
|
||||
go version | grep go1.13 || exit
|
||||
go version | grep go1.14 || exit
|
||||
|
||||
VERSION=$(git describe --tags)
|
||||
mkdir ci/binaries
|
||||
|
11
gateway/bridgemap/api.go
Normal file
11
gateway/bridgemap/api.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !noapi
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
"github.com/42wim/matterbridge/bridge/api"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["api"] = api.New
|
||||
}
|
12
gateway/bridgemap/bdiscord.go
Normal file
12
gateway/bridgemap/bdiscord.go
Normal file
@@ -0,0 +1,12 @@
|
||||
// +build !nodiscord
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
bdiscord "github.com/42wim/matterbridge/bridge/discord"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["discord"] = bdiscord.New
|
||||
UserTypingSupport["discord"] = struct{}{}
|
||||
}
|
11
gateway/bridgemap/bgitter.go
Normal file
11
gateway/bridgemap/bgitter.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !nogitter
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
bgitter "github.com/42wim/matterbridge/bridge/gitter"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["gitter"] = bgitter.New
|
||||
}
|
11
gateway/bridgemap/birc.go
Normal file
11
gateway/bridgemap/birc.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !noirc
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
birc "github.com/42wim/matterbridge/bridge/irc"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["irc"] = birc.New
|
||||
}
|
11
gateway/bridgemap/bkeybase.go
Normal file
11
gateway/bridgemap/bkeybase.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !nokeybase
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
bkeybase "github.com/42wim/matterbridge/bridge/keybase"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["keybase"] = bkeybase.New
|
||||
}
|
11
gateway/bridgemap/bmatrix.go
Normal file
11
gateway/bridgemap/bmatrix.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !nomatrix
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
bmatrix "github.com/42wim/matterbridge/bridge/matrix"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["matrix"] = bmatrix.New
|
||||
}
|
11
gateway/bridgemap/bmattermost.go
Normal file
11
gateway/bridgemap/bmattermost.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !nomattermost
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
bmattermost "github.com/42wim/matterbridge/bridge/mattermost"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["mattermost"] = bmattermost.New
|
||||
}
|
11
gateway/bridgemap/bmsteams.go
Normal file
11
gateway/bridgemap/bmsteams.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !nomsteams
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
bmsteams "github.com/42wim/matterbridge/bridge/msteams"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["msteams"] = bmsteams.New
|
||||
}
|
@@ -2,45 +2,9 @@ package bridgemap
|
||||
|
||||
import (
|
||||
"github.com/42wim/matterbridge/bridge"
|
||||
"github.com/42wim/matterbridge/bridge/api"
|
||||
bdiscord "github.com/42wim/matterbridge/bridge/discord"
|
||||
bgitter "github.com/42wim/matterbridge/bridge/gitter"
|
||||
birc "github.com/42wim/matterbridge/bridge/irc"
|
||||
bkeybase "github.com/42wim/matterbridge/bridge/keybase"
|
||||
bmatrix "github.com/42wim/matterbridge/bridge/matrix"
|
||||
bmattermost "github.com/42wim/matterbridge/bridge/mattermost"
|
||||
brocketchat "github.com/42wim/matterbridge/bridge/rocketchat"
|
||||
bslack "github.com/42wim/matterbridge/bridge/slack"
|
||||
bsshchat "github.com/42wim/matterbridge/bridge/sshchat"
|
||||
bsteam "github.com/42wim/matterbridge/bridge/steam"
|
||||
btelegram "github.com/42wim/matterbridge/bridge/telegram"
|
||||
bwhatsapp "github.com/42wim/matterbridge/bridge/whatsapp"
|
||||
bxmpp "github.com/42wim/matterbridge/bridge/xmpp"
|
||||
bzulip "github.com/42wim/matterbridge/bridge/zulip"
|
||||
)
|
||||
|
||||
var (
|
||||
FullMap = map[string]bridge.Factory{
|
||||
"api": api.New,
|
||||
"discord": bdiscord.New,
|
||||
"gitter": bgitter.New,
|
||||
"irc": birc.New,
|
||||
"mattermost": bmattermost.New,
|
||||
"matrix": bmatrix.New,
|
||||
"rocketchat": brocketchat.New,
|
||||
"slack-legacy": bslack.NewLegacy,
|
||||
"slack": bslack.New,
|
||||
"sshchat": bsshchat.New,
|
||||
"steam": bsteam.New,
|
||||
"telegram": btelegram.New,
|
||||
"whatsapp": bwhatsapp.New,
|
||||
"xmpp": bxmpp.New,
|
||||
"zulip": bzulip.New,
|
||||
"keybase": bkeybase.New,
|
||||
}
|
||||
|
||||
UserTypingSupport = map[string]struct{}{
|
||||
"slack": {},
|
||||
"discord": {},
|
||||
}
|
||||
FullMap = map[string]bridge.Factory{}
|
||||
UserTypingSupport = map[string]struct{}{}
|
||||
)
|
||||
|
11
gateway/bridgemap/brocketchat.go
Normal file
11
gateway/bridgemap/brocketchat.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !norocketchat
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
brocketchat "github.com/42wim/matterbridge/bridge/rocketchat"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["rocketchat"] = brocketchat.New
|
||||
}
|
13
gateway/bridgemap/bslack.go
Normal file
13
gateway/bridgemap/bslack.go
Normal file
@@ -0,0 +1,13 @@
|
||||
// +build !noslack
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
bslack "github.com/42wim/matterbridge/bridge/slack"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["slack-legacy"] = bslack.NewLegacy
|
||||
FullMap["slack"] = bslack.New
|
||||
UserTypingSupport["slack"] = struct{}{}
|
||||
}
|
11
gateway/bridgemap/bsshchat.go
Normal file
11
gateway/bridgemap/bsshchat.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !nosshchat
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
bsshchat "github.com/42wim/matterbridge/bridge/sshchat"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["sshchat"] = bsshchat.New
|
||||
}
|
11
gateway/bridgemap/bsteam.go
Normal file
11
gateway/bridgemap/bsteam.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !nosteam
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
bsteam "github.com/42wim/matterbridge/bridge/steam"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["steam"] = bsteam.New
|
||||
}
|
11
gateway/bridgemap/btelegram.go
Normal file
11
gateway/bridgemap/btelegram.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !notelegram
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
btelegram "github.com/42wim/matterbridge/bridge/telegram"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["telegram"] = btelegram.New
|
||||
}
|
11
gateway/bridgemap/bwhatsapp.go
Normal file
11
gateway/bridgemap/bwhatsapp.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !nowhatsapp
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
bwhatsapp "github.com/42wim/matterbridge/bridge/whatsapp"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["whatsapp"] = bwhatsapp.New
|
||||
}
|
11
gateway/bridgemap/bxmpp.go
Normal file
11
gateway/bridgemap/bxmpp.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !noxmpp
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
bxmpp "github.com/42wim/matterbridge/bridge/xmpp"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["xmpp"] = bxmpp.New
|
||||
}
|
11
gateway/bridgemap/bzulip.go
Normal file
11
gateway/bridgemap/bzulip.go
Normal file
@@ -0,0 +1,11 @@
|
||||
// +build !nozulip
|
||||
|
||||
package bridgemap
|
||||
|
||||
import (
|
||||
bzulip "github.com/42wim/matterbridge/bridge/zulip"
|
||||
)
|
||||
|
||||
func init() {
|
||||
FullMap["zulip"] = bzulip.New
|
||||
}
|
@@ -306,8 +306,6 @@ func (gw *Gateway) ignoreMessage(msg *config.Message) bool {
|
||||
}
|
||||
|
||||
func (gw *Gateway) modifyUsername(msg *config.Message, dest *bridge.Bridge) string {
|
||||
br := gw.Bridges[msg.Account]
|
||||
msg.Protocol = br.Protocol
|
||||
if dest.GetBool("StripNick") {
|
||||
re := regexp.MustCompile("[^a-zA-Z0-9]+")
|
||||
msg.Username = re.ReplaceAllString(msg.Username, "")
|
||||
@@ -315,6 +313,7 @@ func (gw *Gateway) modifyUsername(msg *config.Message, dest *bridge.Bridge) stri
|
||||
nick := dest.GetString("RemoteNickFormat")
|
||||
|
||||
// loop to replace nicks
|
||||
br := gw.Bridges[msg.Account]
|
||||
for _, outer := range br.GetStringSlice2D("ReplaceNicks") {
|
||||
search := outer[0]
|
||||
replace := outer[1]
|
||||
|
@@ -132,6 +132,9 @@ func (r *Router) handleReceive() {
|
||||
r.handleEventFailure(&msg)
|
||||
r.handleEventRejoinChannels(&msg)
|
||||
|
||||
// Set message protocol based on the account it came from
|
||||
msg.Protocol = r.getBridge(msg.Account).Protocol
|
||||
|
||||
filesHandled := false
|
||||
for _, gw := range r.Gateways {
|
||||
// record all the message ID's of the different bridges
|
||||
|
19
go.mod
19
go.mod
@@ -6,7 +6,6 @@ require (
|
||||
github.com/Jeffail/gabs v1.1.1 // indirect
|
||||
github.com/Philipp15b/go-steam v1.0.1-0.20190816133340-b04c5a83c1c0
|
||||
github.com/Rhymen/go-whatsapp v0.1.0
|
||||
github.com/bwmarrin/discordgo v0.20.2
|
||||
github.com/d5/tengo/v2 v2.0.2
|
||||
github.com/dfordsoft/golib v0.0.0-20180902042739-76ee6ab99bec
|
||||
github.com/fsnotify/fsnotify v1.4.7
|
||||
@@ -19,22 +18,25 @@ require (
|
||||
github.com/hashicorp/golang-lru v0.5.3
|
||||
github.com/hpcloud/tail v1.0.0 // indirect
|
||||
github.com/jpillora/backoff v1.0.0
|
||||
github.com/keybase/go-keybase-chat-bot v0.0.0-20190816161829-561f10822eb2
|
||||
github.com/keybase/go-keybase-chat-bot v0.0.0-20200226211841-4e48f3eaef3e
|
||||
github.com/labstack/echo/v4 v4.1.13
|
||||
github.com/lrstanley/girc v0.0.0-20190801035559-4fc93959e1a7
|
||||
github.com/matterbridge/Rocket.Chat.Go.SDK v0.0.0-20190210153444-cc9d05784d5d
|
||||
github.com/matterbridge/discordgo v0.18.1-0.20200308151012-aa40f01cbcc3
|
||||
github.com/matterbridge/emoji v2.1.1-0.20191117213217-af507f6b02db+incompatible
|
||||
github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91
|
||||
github.com/matterbridge/gomatrix v0.0.0-20191026211822-6fc7accd00ca
|
||||
github.com/matterbridge/gomatrix v0.0.0-20200209224845-c2104d7936a6
|
||||
github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18
|
||||
github.com/matterbridge/logrus-prefixed-formatter v0.0.0-20180806162718-01618749af61
|
||||
github.com/matterbridge/msgraph.go v0.0.0-20200308150230-9e043fe9dbaa
|
||||
github.com/mattermost/mattermost-server v5.5.0+incompatible
|
||||
github.com/mattn/go-runewidth v0.0.7 // indirect
|
||||
github.com/mattn/godown v0.0.0-20180312012330-2e9e17e0ea51
|
||||
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect
|
||||
github.com/mreiferson/go-httpclient v0.0.0-20160630210159-31f0106b4474 // indirect
|
||||
github.com/mrexodia/wray v0.0.0-20160318003008-78a2c1f284ff // indirect
|
||||
github.com/nelsonken/gomf v0.0.0-20180504123937-a9dd2f9deae9
|
||||
github.com/nicksnyder/go-i18n v1.4.0 // indirect
|
||||
github.com/nlopes/slack v0.6.0
|
||||
github.com/onsi/ginkgo v1.6.0 // indirect
|
||||
github.com/onsi/gomega v1.4.1 // indirect
|
||||
github.com/paulrosania/go-charset v0.0.0-20190326053356-55c9d7a5834c
|
||||
@@ -42,21 +44,22 @@ require (
|
||||
github.com/rs/xid v1.2.1
|
||||
github.com/russross/blackfriday v1.5.2
|
||||
github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca
|
||||
github.com/shazow/ssh-chat v1.8.2
|
||||
github.com/shazow/ssh-chat v1.8.3-0.20200308224626-80ddf1f43a98
|
||||
github.com/sirupsen/logrus v1.4.2
|
||||
github.com/slack-go/slack v0.6.3-0.20200228121756-f56d616d5901
|
||||
github.com/spf13/viper v1.6.1
|
||||
github.com/stretchr/testify v1.4.0
|
||||
github.com/technoweenie/multipartstreamer v1.0.1 // indirect
|
||||
github.com/x-cray/logrus-prefixed-formatter v0.5.2 // indirect
|
||||
github.com/yaegashi/msgraph.go v0.1.2
|
||||
github.com/zfjagann/golang-ring v0.0.0-20190106091943-a88bb6aef447
|
||||
golang.org/x/image v0.0.0-20191214001246-9130b4cfad52
|
||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
|
||||
gopkg.in/fsnotify.v1 v1.4.7 // indirect
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
|
||||
)
|
||||
|
||||
replace github.com/nlopes/slack v0.6.0 => github.com/matterbridge/slack v0.1.1-0.20191208194820-95190f11bfb6
|
||||
|
||||
replace github.com/bwmarrin/discordgo v0.20.2 => github.com/matterbridge/discordgo v0.18.1-0.20200109173909-ed873362fa43
|
||||
//replace github.com/bwmarrin/discordgo v0.20.2 => github.com/matterbridge/discordgo v0.18.1-0.20200109173909-ed873362fa43
|
||||
|
||||
go 1.13
|
||||
|
65
go.sum
65
go.sum
@@ -1,4 +1,5 @@
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
github.com/42wim/go-gitter v0.0.0-20170828205020-017310c2d557 h1:IZtuWGfzQnKnCSu+vl8WGLhpVQ5Uvy3rlSwqXSg+sQg=
|
||||
github.com/42wim/go-gitter v0.0.0-20170828205020-017310c2d557/go.mod h1:jL0YSXMs/txjtGJ4PWrmETOk6KUHMDPMshgQZlTeB3Y=
|
||||
github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f h1:2dk3eOnYllh+wUOuDhOoC2vUVoJF/5z478ryJ+wzEII=
|
||||
@@ -17,7 +18,6 @@ github.com/Rhymen/go-whatsapp/examples/echo v0.0.0-20190325075644-cc2581bbf24d/g
|
||||
github.com/Rhymen/go-whatsapp/examples/restoreSession v0.0.0-20190325075644-cc2581bbf24d/go.mod h1:5sCUSpG616ZoSJhlt9iBNI/KXBqrVLcNUJqg7J9+8pU=
|
||||
github.com/Rhymen/go-whatsapp/examples/sendImage v0.0.0-20190325075644-cc2581bbf24d/go.mod h1:RdiyhanVEGXTam+mZ3k6Y3VDCCvXYCwReOoxGozqhHw=
|
||||
github.com/Rhymen/go-whatsapp/examples/sendTextMessages v0.0.0-20190325075644-cc2581bbf24d/go.mod h1:suwzklatySS3Q0+NCxCDh5hYfgXdQUWU1DNcxwAxStM=
|
||||
github.com/StackExchange/wmi v0.0.0-20170410192909-ea383cf3ba6e h1:IHXQQIpxASe3m0Jtcd3XongL+lxHNd5nUmvHxJARUmg=
|
||||
github.com/StackExchange/wmi v0.0.0-20170410192909-ea383cf3ba6e/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
|
||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
@@ -49,18 +49,18 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME
|
||||
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
|
||||
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
|
||||
github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E=
|
||||
github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/go-telegram-bot-api/telegram-bot-api v4.6.5-0.20181225215658-ec221ba9ea45+incompatible h1:i64CCJcSqkRIkm5OSdZQjZq84/gJsk2zNwHWIRYWlKE=
|
||||
github.com/go-telegram-bot-api/telegram-bot-api v4.6.5-0.20181225215658-ec221ba9ea45+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM=
|
||||
github.com/go-test/deep v1.0.4 h1:u2CU3YKy9I2pmu9pX0eq50wCgjfGIt539SqR7FbHiho=
|
||||
github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
|
||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.0 h1:kbxbvI4Un1LUWKxufD+BiE6AEExYYgkQLQmLFqA1LFk=
|
||||
github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0=
|
||||
github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
@@ -70,6 +70,7 @@ github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/gops v0.3.6 h1:6akvbMlpZrEYOuoebn2kR+ZJekbZqJ28fJXTs84+8to=
|
||||
github.com/google/gops v0.3.6/go.mod h1:RZ1rH95wsAGX4vMWKmqBOIWynmWisBf4QFdgT/k/xOI=
|
||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/gopackage/ddp v0.0.0-20170117053602-652027933df4 h1:4EZlYQIiyecYJlUbVkFXCXHz1QPhVXcHnQKAzBTPfQo=
|
||||
github.com/gopackage/ddp v0.0.0-20170117053602-652027933df4/go.mod h1:lEO7XoHJ/xNRBCxrn4h/CEB67h0kW1B0t4ooP2yrjUA=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
|
||||
@@ -77,7 +78,6 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORR
|
||||
github.com/gorilla/schema v1.1.0 h1:CamqUDOFUBqzrvxuz2vEwo8+SUdwsluFh7IlzJh30LY=
|
||||
github.com/gorilla/schema v1.1.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU=
|
||||
github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||
github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
|
||||
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||
github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM=
|
||||
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
@@ -100,8 +100,8 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV
|
||||
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
|
||||
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1 h1:PJPDf8OUfOK1bb/NeTKd4f1QXZItOX389VN3B6qC8ro=
|
||||
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
|
||||
github.com/keybase/go-keybase-chat-bot v0.0.0-20190816161829-561f10822eb2 h1:zacJswvfPqUSGdcBXJzKvLN/dB1UjDGDvDesMBBzoA4=
|
||||
github.com/keybase/go-keybase-chat-bot v0.0.0-20190816161829-561f10822eb2/go.mod h1:vNc28YFzigVJod0j5EbuTtRIe7swx8vodh2yA4jZ2s8=
|
||||
github.com/keybase/go-keybase-chat-bot v0.0.0-20200226211841-4e48f3eaef3e h1:KbPTfR/PYuau1IzKoE4lnd8yby5I2pBj+VR6fSVbYU8=
|
||||
github.com/keybase/go-keybase-chat-bot v0.0.0-20200226211841-4e48f3eaef3e/go.mod h1:vNc28YFzigVJod0j5EbuTtRIe7swx8vodh2yA4jZ2s8=
|
||||
github.com/keybase/go-ps v0.0.0-20161005175911-668c8856d999 h1:2d+FLQbz4xRTi36DO1qYNUwfORax9XcQ0jhbO81Vago=
|
||||
github.com/keybase/go-ps v0.0.0-20161005175911-668c8856d999/go.mod h1:hY+WOq6m2FpbvyrI93sMaypsttvaIL5nhVR92dTMUcQ=
|
||||
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
|
||||
@@ -126,36 +126,35 @@ github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzR
|
||||
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/matterbridge/Rocket.Chat.Go.SDK v0.0.0-20190210153444-cc9d05784d5d h1:F+Sr+C0ojSlYQ37BLylQtSFmyQULe3jbAygcyXQ9mVs=
|
||||
github.com/matterbridge/Rocket.Chat.Go.SDK v0.0.0-20190210153444-cc9d05784d5d/go.mod h1:c6MxwqHD+0HvtAJjsHMIdPCiAwGiQwPRPTp69ACMg8A=
|
||||
github.com/matterbridge/discordgo v0.18.1-0.20200109173909-ed873362fa43 h1:xTcLiEPMp9jVh/lHEPpLc87RZ4sRWRZe0rM578/waOk=
|
||||
github.com/matterbridge/discordgo v0.18.1-0.20200109173909-ed873362fa43/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q=
|
||||
github.com/matterbridge/discordgo v0.18.1-0.20200308151012-aa40f01cbcc3 h1:VP/DNRn2HtrVRN6+X3h4FDcQI2OOKT+88WUi21ZD1Kw=
|
||||
github.com/matterbridge/discordgo v0.18.1-0.20200308151012-aa40f01cbcc3/go.mod h1:5a1bHtG/38ofcx9cgwM5eTW/Pl4SpbQksNDnTRcGA2Y=
|
||||
github.com/matterbridge/emoji v2.1.1-0.20191117213217-af507f6b02db+incompatible h1:oaOqwbg5HxHRxvAbd84ks0Okwoc1ISyUZ87EiVJFhGI=
|
||||
github.com/matterbridge/emoji v2.1.1-0.20191117213217-af507f6b02db+incompatible/go.mod h1:igE6rUAn3jai2wCdsjFHfhUoekjrFthoEjFObKKwSb4=
|
||||
github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91 h1:KzDEcy8eDbTx881giW8a6llsAck3e2bJvMyKvh1IK+k=
|
||||
github.com/matterbridge/go-xmpp v0.0.0-20180529212104-cd19799fba91/go.mod h1:ECDRehsR9TYTKCAsRS8/wLeOk6UUqDydw47ln7wG41Q=
|
||||
github.com/matterbridge/gomatrix v0.0.0-20191026211822-6fc7accd00ca h1:3ypqEpFpt6vg5Sv2xxA8/v4WiSOnWMXW7DqxTxpM4XI=
|
||||
github.com/matterbridge/gomatrix v0.0.0-20191026211822-6fc7accd00ca/go.mod h1:+jWeaaUtXQbBRdKYWfjW6JDDYiI2XXE+3NnTjW5kg8g=
|
||||
github.com/matterbridge/gomatrix v0.0.0-20200209224845-c2104d7936a6 h1:Kl65VJv38HjYFnnwH+MP6Z8hcJT5UHuSpHVU5vW1HH0=
|
||||
github.com/matterbridge/gomatrix v0.0.0-20200209224845-c2104d7936a6/go.mod h1:+jWeaaUtXQbBRdKYWfjW6JDDYiI2XXE+3NnTjW5kg8g=
|
||||
github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18 h1:fLhwXtWGtfTgZVxHG1lcKjv+re7dRwyyuYFNu69xdho=
|
||||
github.com/matterbridge/gozulipbot v0.0.0-20190212232658-7aa251978a18/go.mod h1:yAjnZ34DuDyPHMPHHjOsTk/FefW4JJjoMMCGt/8uuQA=
|
||||
github.com/matterbridge/logrus-prefixed-formatter v0.0.0-20180806162718-01618749af61 h1:R/MgM/eUyRBQx2FiH6JVmXck8PaAuKfe2M1tWIzW7nE=
|
||||
github.com/matterbridge/logrus-prefixed-formatter v0.0.0-20180806162718-01618749af61/go.mod h1:iXGEotOvwI1R1SjLxRc+BF5rUORTMtE0iMZBT2lxqAU=
|
||||
github.com/matterbridge/slack v0.1.1-0.20191208194820-95190f11bfb6 h1:UvXXR9tHYqJUXZVEtiK2qkEWBXfFneicate5kOshVFk=
|
||||
github.com/matterbridge/slack v0.1.1-0.20191208194820-95190f11bfb6/go.mod h1:2uCJim0Ct2z1Uj+XQq47KCLLC1b/9UTYaZOvDtbZfK4=
|
||||
github.com/matterbridge/msgraph.go v0.0.0-20200308150230-9e043fe9dbaa h1:ZP87nK5Mhgvt6Rpgbztdmq9+6cb3aZ6MgW/JWKbnMrI=
|
||||
github.com/matterbridge/msgraph.go v0.0.0-20200308150230-9e043fe9dbaa/go.mod h1:l0kx9L8Z+NbBCGrQ/y+ldKZ/fiwBZjPoXwDS55LTumI=
|
||||
github.com/mattermost/mattermost-server v5.5.0+incompatible h1:0wcLGgYtd+YImtLDPf2AOfpBHxbU4suATx+6XKw1XbU=
|
||||
github.com/mattermost/mattermost-server v5.5.0+incompatible/go.mod h1:5L6MjAec+XXQwMIt791Ganu45GKsSiM+I0tLR9wUj8Y=
|
||||
github.com/mattn/go-colorable v0.1.1 h1:G1f5SKeVxmagw/IyvzvtZE4Gybcc4Tr1tf7I8z0XgOg=
|
||||
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
|
||||
github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU=
|
||||
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||
github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA=
|
||||
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||
github.com/mattn/go-isatty v0.0.5 h1:tHXDdz1cpzGaovsTB+TVB8q90WEokoVmfMqoVcrLUgw=
|
||||
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE=
|
||||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg=
|
||||
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
|
||||
github.com/mattn/go-isatty v0.0.11 h1:FxPOTFNqGkuDUGi3H/qkUbQO4ZiBa2brKq5r0l8TGeM=
|
||||
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
|
||||
github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54=
|
||||
github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
github.com/mattn/godown v0.0.0-20180312012330-2e9e17e0ea51 h1:MpI7hy3MiCnrggmZI/s8LaPbLVOOWpzDbjA4F+XaXaM=
|
||||
github.com/mattn/godown v0.0.0-20180312012330-2e9e17e0ea51/go.mod h1:s3KUdOIXJ+jaGM++XHiXA6gikdleaWVATCcQGD4h734=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4=
|
||||
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
|
||||
@@ -195,6 +194,10 @@ github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8
|
||||
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
|
||||
github.com/rickb777/date v1.12.4 h1:+6IzcCCS/1t17DrmnEvrznyq7nM8vPwir6/UhlyohKw=
|
||||
github.com/rickb777/date v1.12.4/go.mod h1:xP0eo/I5qmUt97yRGClHZfyLZ3ikMw6v6SU5MOGZTE0=
|
||||
github.com/rickb777/plural v1.2.0 h1:5tvEc7UBCZ7l8h/2UeybSkt/uu1DQsZFOFdNevmUhlE=
|
||||
github.com/rickb777/plural v1.2.0/go.mod h1:UdpyWFCGbo3mvK3f/PfZOAOrkjzJlYN/sD46XNWJ+Es=
|
||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||
github.com/rs/xid v1.2.1 h1:mhH9Nq+C1fY2l1XIpgxIiUOfNpRBYH1kKcr+qfKgjRc=
|
||||
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
|
||||
@@ -204,17 +207,17 @@ 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/shazow/rateio v0.0.0-20150116013248-e8e00881e5c1 h1:Lx3BlDGFElJt4u/zKc9A3BuGYbQAGlEFyPuUA3jeMD0=
|
||||
github.com/shazow/rateio v0.0.0-20150116013248-e8e00881e5c1/go.mod h1:vt2jWY/3Qw1bIzle5thrJWucsLuuX9iUNnp20CqCciI=
|
||||
github.com/shazow/ssh-chat v1.8.2 h1:MMso9eWfCnPBelRsusYxKcRBUwHIPEQkR9WrO89II38=
|
||||
github.com/shazow/ssh-chat v1.8.2/go.mod h1:cXTZK/D1zujEwB0y8DIT1GX8rIKjyLDYeWd+jitPX84=
|
||||
github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7 h1:80VN+vGkqM773Br/uNNTSheo3KatTgV8IpjIKjvVLng=
|
||||
github.com/shazow/ssh-chat v1.8.3-0.20200308224626-80ddf1f43a98 h1:sN07ff+PSRsUNhpSod4uGKAQ+Nc0FXsBPG9FmYMNg4w=
|
||||
github.com/shazow/ssh-chat v1.8.3-0.20200308224626-80ddf1f43a98/go.mod h1:xkTgfD+WP+KR4HuG76oal25BBEeu5kJyi2EOsgiu/4Q=
|
||||
github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
|
||||
github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4 h1:udFKJ0aHUL60LboW/A+DfgoHVedieIzIXE8uylPue0U=
|
||||
github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc=
|
||||
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||
github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/skip2/go-qrcode v0.0.0-20190110000554-dc11ecdae0a9 h1:lpEzuenPuO1XNTeikEmvqYFcU37GVLl8SRNblzyvGBE=
|
||||
github.com/skip2/go-qrcode v0.0.0-20190110000554-dc11ecdae0a9/go.mod h1:PLPIyL7ikehBD1OAjmKKiOEhbvWyHGaNDjquXMcYABo=
|
||||
github.com/slack-go/slack v0.6.3-0.20200228121756-f56d616d5901 h1:sXIMY2YPYEm5NoGMCrJC50N+8t9W6vbY9qr61zcLEAE=
|
||||
github.com/slack-go/slack v0.6.3-0.20200228121756-f56d616d5901/go.mod h1:ZUNi+O1Pwr2ch2UOp2AfF+s7QYQgwht2Cd1UTeIYw9A=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
|
||||
@@ -232,7 +235,6 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn
|
||||
github.com/spf13/viper v1.6.1 h1:VPZzIkznI1YhVMRi6vNFLHSwhnhReBfgTxIPccpfdZk=
|
||||
github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
||||
@@ -245,16 +247,16 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1
|
||||
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
|
||||
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/fasttemplate v1.0.1 h1:tY9CJiPnMXf1ERmG2EyK7gNUd+c6RKGD0IfU8WdUSz8=
|
||||
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
|
||||
github.com/valyala/fasttemplate v1.1.0 h1:RZqt0yGBsps8NGvLSGW804QQqCUYYLsaOjTVHy1Ocw4=
|
||||
github.com/valyala/fasttemplate v1.1.0/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
|
||||
github.com/x-cray/logrus-prefixed-formatter v0.5.2 h1:00txxvfBM9muc0jiLIEAkAcIMJzfthRT6usrui8uGmg=
|
||||
github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE=
|
||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||
github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6 h1:YdYsPAZ2pC6Tow/nPZOPQ96O3hm/ToAkGsPLzedXERk=
|
||||
github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
|
||||
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
|
||||
github.com/yaegashi/msgraph.go v0.1.2 h1:83uVRQaj8YBsVqOUGj0WRwzxdgGF69jRpg5IQYaTvoY=
|
||||
github.com/yaegashi/msgraph.go v0.1.2/go.mod h1:Lp39e9oo596G5FcmMKI0cXR3mg/QikSdabgZdbMqbAM=
|
||||
github.com/zfjagann/golang-ring v0.0.0-20190106091943-a88bb6aef447 h1:CHgPZh8bFkZmislPrr/0gd7MciDAX+JJB70A2/5Lvmo=
|
||||
github.com/zfjagann/golang-ring v0.0.0-20190106091943-a88bb6aef447/go.mod h1:0MsIttMJIF/8Y7x0XjonJP7K99t3sR6bjj4m5S4JmqU=
|
||||
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
|
||||
@@ -268,7 +270,6 @@ golang.org/dl v0.0.0-20190829154251-82a15e2f2ead/go.mod h1:IUMfjQLJQd4UTqG1Z90te
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190131182504-b8fe1690c613/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876 h1:sKJQZMuxjOAR/Uo2LBfU90onWEf1dF4C+0hPJCc9Mpc=
|
||||
@@ -277,20 +278,24 @@ golang.org/x/image v0.0.0-20191214001246-9130b4cfad52 h1:2fktqPPvDiVEEVT/vSTeoUP
|
||||
golang.org/x/image v0.0.0-20191214001246-9130b4cfad52/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190522155817-f3200d17e092 h1:4QSRKanuywn15aTZvI/mIDEgPQpswuFndXpOj3rKEco=
|
||||
golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8oukgn+8D8WgaCaRMchF8=
|
||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw=
|
||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20171017063910-8dbc5d05d6ed/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
@@ -302,12 +307,10 @@ golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5h
|
||||
golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a h1:aYOabOQFp6Vj6W1F80affTUvO9UxmJRx8K0gsfABByQ=
|
||||
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8 h1:JA8d3MPx/IToSyXZG/RhwYEtfrKO1Fxrqe8KrkiLXKM=
|
||||
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
@@ -318,6 +321,8 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
@@ -337,10 +342,8 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkep
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
|
||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
rsc.io/goversion v1.0.0 h1:/IhXBiai89TyuerPquiZZ39IQkTfAUbZB2awsyYZ/2c=
|
||||
rsc.io/goversion v1.0.0/go.mod h1:Eih9y/uIBS3ulggl7KNJ09xGSLcuNaLgmvvqa07sgfo=
|
||||
|
@@ -15,7 +15,7 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
version = "1.16.5"
|
||||
version = "1.17.1"
|
||||
githash string
|
||||
|
||||
flagConfig = flag.String("conf", "matterbridge.toml", "config file")
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -14,7 +14,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/gorilla/schema"
|
||||
"github.com/nlopes/slack"
|
||||
"github.com/slack-go/slack"
|
||||
)
|
||||
|
||||
// OMessage for mattermost incoming webhook. (send to mattermost)
|
||||
|
651
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/chat.go
generated
vendored
Normal file
651
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/chat.go
generated
vendored
Normal file
@@ -0,0 +1,651 @@
|
||||
package kbchat
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1"
|
||||
"github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1"
|
||||
)
|
||||
|
||||
type Thread struct {
|
||||
Result chat1.Thread `json:"result"`
|
||||
Error *Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type Inbox struct {
|
||||
Result Result `json:"result"`
|
||||
Error *Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type sendMessageBody struct {
|
||||
Body string
|
||||
}
|
||||
|
||||
type sendMessageOptions struct {
|
||||
Channel chat1.ChatChannel `json:"channel,omitempty"`
|
||||
ConversationID chat1.ConvIDStr `json:"conversation_id,omitempty"`
|
||||
Message sendMessageBody `json:",omitempty"`
|
||||
Filename string `json:"filename,omitempty"`
|
||||
Title string `json:"title,omitempty"`
|
||||
MsgID chat1.MessageID `json:"message_id,omitempty"`
|
||||
ConfirmLumenSend bool `json:"confirm_lumen_send"`
|
||||
ReplyTo *chat1.MessageID `json:"reply_to,omitempty"`
|
||||
}
|
||||
|
||||
type sendMessageParams struct {
|
||||
Options sendMessageOptions
|
||||
}
|
||||
|
||||
type sendMessageArg struct {
|
||||
Method string
|
||||
Params sendMessageParams
|
||||
}
|
||||
|
||||
func newSendArg(options sendMessageOptions) sendMessageArg {
|
||||
return sendMessageArg{
|
||||
Method: "send",
|
||||
Params: sendMessageParams{
|
||||
Options: options,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// GetConversations reads all conversations from the current user's inbox.
|
||||
func (a *API) GetConversations(unreadOnly bool) ([]chat1.ConvSummary, error) {
|
||||
apiInput := fmt.Sprintf(`{"method":"list", "params": { "options": { "unread_only": %v}}}`, unreadOnly)
|
||||
output, err := a.doFetch(apiInput)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var inbox Inbox
|
||||
if err := json.Unmarshal(output, &inbox); err != nil {
|
||||
return nil, err
|
||||
} else if inbox.Error != nil {
|
||||
return nil, errors.New(inbox.Error.Message)
|
||||
}
|
||||
return inbox.Result.Convs, nil
|
||||
}
|
||||
|
||||
func (a *API) GetConversation(convID chat1.ConvIDStr) (res chat1.ConvSummary, err error) {
|
||||
apiInput := fmt.Sprintf(`{"method":"list", "params": { "options": { "conversation_id": "%s"}}}`, convID)
|
||||
output, err := a.doFetch(apiInput)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
var inbox Inbox
|
||||
if err := json.Unmarshal(output, &inbox); err != nil {
|
||||
return res, err
|
||||
} else if inbox.Error != nil {
|
||||
return res, errors.New(inbox.Error.Message)
|
||||
} else if len(inbox.Result.Convs) == 0 {
|
||||
return res, errors.New("conversation not found")
|
||||
}
|
||||
return inbox.Result.Convs[0], nil
|
||||
}
|
||||
|
||||
// GetTextMessages fetches all text messages from a given channel. Optionally can filter
|
||||
// ont unread status.
|
||||
func (a *API) GetTextMessages(channel chat1.ChatChannel, unreadOnly bool) ([]chat1.MsgSummary, error) {
|
||||
channelBytes, err := json.Marshal(channel)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
apiInput := fmt.Sprintf(`{"method": "read", "params": {"options": {"channel": %s}}}`, string(channelBytes))
|
||||
output, err := a.doFetch(apiInput)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var thread Thread
|
||||
|
||||
if err := json.Unmarshal(output, &thread); err != nil {
|
||||
return nil, fmt.Errorf("unable to decode thread: %v", err)
|
||||
} else if thread.Error != nil {
|
||||
return nil, errors.New(thread.Error.Message)
|
||||
}
|
||||
|
||||
var res []chat1.MsgSummary
|
||||
for _, msg := range thread.Result.Messages {
|
||||
if msg.Msg.Content.TypeName == "text" {
|
||||
res = append(res, *msg.Msg)
|
||||
}
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (a *API) SendMessage(channel chat1.ChatChannel, body string, args ...interface{}) (SendResponse, error) {
|
||||
arg := newSendArg(sendMessageOptions{
|
||||
Channel: channel,
|
||||
Message: sendMessageBody{
|
||||
Body: fmt.Sprintf(body, args...),
|
||||
},
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) Broadcast(body string, args ...interface{}) (SendResponse, error) {
|
||||
return a.SendMessage(chat1.ChatChannel{
|
||||
Name: a.GetUsername(),
|
||||
Public: true,
|
||||
}, fmt.Sprintf(body, args...))
|
||||
}
|
||||
|
||||
func (a *API) SendMessageByConvID(convID chat1.ConvIDStr, body string, args ...interface{}) (SendResponse, error) {
|
||||
arg := newSendArg(sendMessageOptions{
|
||||
ConversationID: convID,
|
||||
Message: sendMessageBody{
|
||||
Body: fmt.Sprintf(body, args...),
|
||||
},
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
// SendMessageByTlfName sends a message on the given TLF name
|
||||
func (a *API) SendMessageByTlfName(tlfName string, body string, args ...interface{}) (SendResponse, error) {
|
||||
arg := newSendArg(sendMessageOptions{
|
||||
Channel: chat1.ChatChannel{
|
||||
Name: tlfName,
|
||||
},
|
||||
Message: sendMessageBody{
|
||||
Body: fmt.Sprintf(body, args...),
|
||||
},
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) SendMessageByTeamName(teamName string, inChannel *string, body string, args ...interface{}) (SendResponse, error) {
|
||||
channel := "general"
|
||||
if inChannel != nil {
|
||||
channel = *inChannel
|
||||
}
|
||||
arg := newSendArg(sendMessageOptions{
|
||||
Channel: chat1.ChatChannel{
|
||||
MembersType: "team",
|
||||
Name: teamName,
|
||||
TopicName: channel,
|
||||
},
|
||||
Message: sendMessageBody{
|
||||
Body: fmt.Sprintf(body, args...),
|
||||
},
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) SendReply(channel chat1.ChatChannel, replyTo *chat1.MessageID, body string, args ...interface{}) (SendResponse, error) {
|
||||
arg := newSendArg(sendMessageOptions{
|
||||
Channel: channel,
|
||||
Message: sendMessageBody{
|
||||
Body: fmt.Sprintf(body, args...),
|
||||
},
|
||||
ReplyTo: replyTo,
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) SendReplyByConvID(convID chat1.ConvIDStr, replyTo *chat1.MessageID, body string, args ...interface{}) (SendResponse, error) {
|
||||
arg := newSendArg(sendMessageOptions{
|
||||
ConversationID: convID,
|
||||
Message: sendMessageBody{
|
||||
Body: fmt.Sprintf(body, args...),
|
||||
},
|
||||
ReplyTo: replyTo,
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) SendReplyByTlfName(tlfName string, replyTo *chat1.MessageID, body string, args ...interface{}) (SendResponse, error) {
|
||||
arg := newSendArg(sendMessageOptions{
|
||||
Channel: chat1.ChatChannel{
|
||||
Name: tlfName,
|
||||
},
|
||||
Message: sendMessageBody{
|
||||
Body: fmt.Sprintf(body, args...),
|
||||
},
|
||||
ReplyTo: replyTo,
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) SendAttachmentByTeam(teamName string, inChannel *string, filename string, title string) (SendResponse, error) {
|
||||
channel := "general"
|
||||
if inChannel != nil {
|
||||
channel = *inChannel
|
||||
}
|
||||
arg := sendMessageArg{
|
||||
Method: "attach",
|
||||
Params: sendMessageParams{
|
||||
Options: sendMessageOptions{
|
||||
Channel: chat1.ChatChannel{
|
||||
MembersType: "team",
|
||||
Name: teamName,
|
||||
TopicName: channel,
|
||||
},
|
||||
Filename: filename,
|
||||
Title: title,
|
||||
},
|
||||
},
|
||||
}
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) SendAttachmentByConvID(convID chat1.ConvIDStr, filename string, title string) (SendResponse, error) {
|
||||
arg := sendMessageArg{
|
||||
Method: "attach",
|
||||
Params: sendMessageParams{
|
||||
Options: sendMessageOptions{
|
||||
ConversationID: convID,
|
||||
Filename: filename,
|
||||
Title: title,
|
||||
},
|
||||
},
|
||||
}
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// React to chat ///////////////////////////////////////
|
||||
////////////////////////////////////////////////////////
|
||||
|
||||
type reactionOptions struct {
|
||||
ConversationID chat1.ConvIDStr `json:"conversation_id"`
|
||||
Message sendMessageBody
|
||||
MsgID chat1.MessageID `json:"message_id"`
|
||||
Channel chat1.ChatChannel `json:"channel"`
|
||||
}
|
||||
|
||||
type reactionParams struct {
|
||||
Options reactionOptions
|
||||
}
|
||||
|
||||
type reactionArg struct {
|
||||
Method string
|
||||
Params reactionParams
|
||||
}
|
||||
|
||||
func newReactionArg(options reactionOptions) reactionArg {
|
||||
return reactionArg{
|
||||
Method: "reaction",
|
||||
Params: reactionParams{Options: options},
|
||||
}
|
||||
}
|
||||
|
||||
func (a *API) ReactByChannel(channel chat1.ChatChannel, msgID chat1.MessageID, reaction string) (SendResponse, error) {
|
||||
arg := newReactionArg(reactionOptions{
|
||||
Message: sendMessageBody{Body: reaction},
|
||||
MsgID: msgID,
|
||||
Channel: channel,
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) ReactByConvID(convID chat1.ConvIDStr, msgID chat1.MessageID, reaction string) (SendResponse, error) {
|
||||
arg := newReactionArg(reactionOptions{
|
||||
Message: sendMessageBody{Body: reaction},
|
||||
MsgID: msgID,
|
||||
ConversationID: convID,
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) EditByConvID(convID chat1.ConvIDStr, msgID chat1.MessageID, text string) (SendResponse, error) {
|
||||
arg := reactionArg{
|
||||
Method: "edit",
|
||||
Params: reactionParams{Options: reactionOptions{
|
||||
Message: sendMessageBody{Body: text},
|
||||
MsgID: msgID,
|
||||
ConversationID: convID,
|
||||
}},
|
||||
}
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// Manage channels /////////////////////////////////////
|
||||
////////////////////////////////////////////////////////
|
||||
|
||||
type ChannelsList struct {
|
||||
Result Result `json:"result"`
|
||||
Error *Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type JoinChannel struct {
|
||||
Error *Error `json:"error,omitempty"`
|
||||
Result chat1.EmptyRes `json:"result"`
|
||||
}
|
||||
|
||||
type LeaveChannel struct {
|
||||
Error *Error `json:"error,omitempty"`
|
||||
Result chat1.EmptyRes `json:"result"`
|
||||
}
|
||||
|
||||
func (a *API) ListChannels(teamName string) ([]string, error) {
|
||||
apiInput := fmt.Sprintf(`{"method": "listconvsonname", "params": {"options": {"topic_type": "CHAT", "members_type": "team", "name": "%s"}}}`, teamName)
|
||||
output, err := a.doFetch(apiInput)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var channelsList ChannelsList
|
||||
if err := json.Unmarshal(output, &channelsList); err != nil {
|
||||
return nil, err
|
||||
} else if channelsList.Error != nil {
|
||||
return nil, errors.New(channelsList.Error.Message)
|
||||
}
|
||||
|
||||
var channels []string
|
||||
for _, conv := range channelsList.Result.Convs {
|
||||
channels = append(channels, conv.Channel.TopicName)
|
||||
}
|
||||
return channels, nil
|
||||
}
|
||||
|
||||
func (a *API) JoinChannel(teamName string, channelName string) (chat1.EmptyRes, error) {
|
||||
empty := chat1.EmptyRes{}
|
||||
|
||||
apiInput := fmt.Sprintf(`{"method": "join", "params": {"options": {"channel": {"name": "%s", "members_type": "team", "topic_name": "%s"}}}}`, teamName, channelName)
|
||||
output, err := a.doFetch(apiInput)
|
||||
if err != nil {
|
||||
return empty, err
|
||||
}
|
||||
|
||||
joinChannel := JoinChannel{}
|
||||
err = json.Unmarshal(output, &joinChannel)
|
||||
if err != nil {
|
||||
return empty, fmt.Errorf("failed to parse output from keybase team api: %v", err)
|
||||
} else if joinChannel.Error != nil {
|
||||
return empty, errors.New(joinChannel.Error.Message)
|
||||
}
|
||||
|
||||
return joinChannel.Result, nil
|
||||
}
|
||||
|
||||
func (a *API) LeaveChannel(teamName string, channelName string) (chat1.EmptyRes, error) {
|
||||
empty := chat1.EmptyRes{}
|
||||
|
||||
apiInput := fmt.Sprintf(`{"method": "leave", "params": {"options": {"channel": {"name": "%s", "members_type": "team", "topic_name": "%s"}}}}`, teamName, channelName)
|
||||
output, err := a.doFetch(apiInput)
|
||||
if err != nil {
|
||||
return empty, err
|
||||
}
|
||||
|
||||
leaveChannel := LeaveChannel{}
|
||||
err = json.Unmarshal(output, &leaveChannel)
|
||||
if err != nil {
|
||||
return empty, fmt.Errorf("failed to parse output from keybase team api: %v", err)
|
||||
} else if leaveChannel.Error != nil {
|
||||
return empty, errors.New(leaveChannel.Error.Message)
|
||||
}
|
||||
|
||||
return leaveChannel.Result, nil
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// Send lumens in chat /////////////////////////////////
|
||||
////////////////////////////////////////////////////////
|
||||
|
||||
func (a *API) InChatSend(channel chat1.ChatChannel, body string, args ...interface{}) (SendResponse, error) {
|
||||
arg := newSendArg(sendMessageOptions{
|
||||
Channel: channel,
|
||||
Message: sendMessageBody{
|
||||
Body: fmt.Sprintf(body, args...),
|
||||
},
|
||||
ConfirmLumenSend: true,
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) InChatSendByConvID(convID chat1.ConvIDStr, body string, args ...interface{}) (SendResponse, error) {
|
||||
arg := newSendArg(sendMessageOptions{
|
||||
ConversationID: convID,
|
||||
Message: sendMessageBody{
|
||||
Body: fmt.Sprintf(body, args...),
|
||||
},
|
||||
ConfirmLumenSend: true,
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) InChatSendByTlfName(tlfName string, body string, args ...interface{}) (SendResponse, error) {
|
||||
arg := newSendArg(sendMessageOptions{
|
||||
Channel: chat1.ChatChannel{
|
||||
Name: tlfName,
|
||||
},
|
||||
Message: sendMessageBody{
|
||||
Body: fmt.Sprintf(body, args...),
|
||||
},
|
||||
ConfirmLumenSend: true,
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
// Misc commands ///////////////////////////////////////
|
||||
////////////////////////////////////////////////////////
|
||||
|
||||
type Advertisement struct {
|
||||
Alias string `json:"alias,omitempty"`
|
||||
Advertisements []chat1.AdvertiseCommandAPIParam
|
||||
}
|
||||
|
||||
type ListCommandsResponse struct {
|
||||
Result struct {
|
||||
Commands []chat1.UserBotCommandOutput `json:"commands"`
|
||||
} `json:"result"`
|
||||
Error *Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type advertiseCmdsParams struct {
|
||||
Options Advertisement
|
||||
}
|
||||
|
||||
type advertiseCmdsMsgArg struct {
|
||||
Method string
|
||||
Params advertiseCmdsParams
|
||||
}
|
||||
|
||||
func newAdvertiseCmdsMsgArg(ad Advertisement) advertiseCmdsMsgArg {
|
||||
return advertiseCmdsMsgArg{
|
||||
Method: "advertisecommands",
|
||||
Params: advertiseCmdsParams{
|
||||
Options: ad,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (a *API) AdvertiseCommands(ad Advertisement) (SendResponse, error) {
|
||||
return a.doSend(newAdvertiseCmdsMsgArg(ad))
|
||||
}
|
||||
|
||||
func (a *API) ClearCommands() error {
|
||||
arg := struct {
|
||||
Method string
|
||||
}{
|
||||
Method: "clearcommands",
|
||||
}
|
||||
_, err := a.doSend(arg)
|
||||
return err
|
||||
}
|
||||
|
||||
type listCmdsOptions struct {
|
||||
Channel chat1.ChatChannel `json:"channel,omitempty"`
|
||||
ConversationID chat1.ConvIDStr `json:"conversation_id,omitempty"`
|
||||
}
|
||||
|
||||
type listCmdsParams struct {
|
||||
Options listCmdsOptions
|
||||
}
|
||||
|
||||
type listCmdsArg struct {
|
||||
Method string
|
||||
Params listCmdsParams
|
||||
}
|
||||
|
||||
func newListCmdsArg(options listCmdsOptions) listCmdsArg {
|
||||
return listCmdsArg{
|
||||
Method: "listcommands",
|
||||
Params: listCmdsParams{
|
||||
Options: options,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (a *API) ListCommands(channel chat1.ChatChannel) ([]chat1.UserBotCommandOutput, error) {
|
||||
arg := newListCmdsArg(listCmdsOptions{
|
||||
Channel: channel,
|
||||
})
|
||||
return a.listCommands(arg)
|
||||
}
|
||||
|
||||
func (a *API) ListCommandsByConvID(convID chat1.ConvIDStr) ([]chat1.UserBotCommandOutput, error) {
|
||||
arg := newListCmdsArg(listCmdsOptions{
|
||||
ConversationID: convID,
|
||||
})
|
||||
return a.listCommands(arg)
|
||||
}
|
||||
|
||||
func (a *API) listCommands(arg listCmdsArg) ([]chat1.UserBotCommandOutput, error) {
|
||||
bArg, err := json.Marshal(arg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
output, err := a.doFetch(string(bArg))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var res ListCommandsResponse
|
||||
if err := json.Unmarshal(output, &res); err != nil {
|
||||
return nil, err
|
||||
} else if res.Error != nil {
|
||||
return nil, errors.New(res.Error.Message)
|
||||
}
|
||||
return res.Result.Commands, nil
|
||||
}
|
||||
|
||||
type listMembersOptions struct {
|
||||
Channel chat1.ChatChannel `json:"channel,omitempty"`
|
||||
ConversationID chat1.ConvIDStr `json:"conversation_id,omitempty"`
|
||||
}
|
||||
|
||||
type listMembersParams struct {
|
||||
Options listMembersOptions
|
||||
}
|
||||
|
||||
type listMembersArg struct {
|
||||
Method string
|
||||
Params listMembersParams
|
||||
}
|
||||
|
||||
func newListMembersArg(options listMembersOptions) listMembersArg {
|
||||
return listMembersArg{
|
||||
Method: "listmembers",
|
||||
Params: listMembersParams{
|
||||
Options: options,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (a *API) ListMembers(channel chat1.ChatChannel) (keybase1.TeamMembersDetails, error) {
|
||||
arg := newListMembersArg(listMembersOptions{
|
||||
Channel: channel,
|
||||
})
|
||||
return a.listMembers(arg)
|
||||
}
|
||||
|
||||
func (a *API) ListMembersByConvID(conversationID chat1.ConvIDStr) (keybase1.TeamMembersDetails, error) {
|
||||
arg := newListMembersArg(listMembersOptions{
|
||||
ConversationID: conversationID,
|
||||
})
|
||||
return a.listMembers(arg)
|
||||
}
|
||||
|
||||
func (a *API) listMembers(arg listMembersArg) (res keybase1.TeamMembersDetails, err error) {
|
||||
bArg, err := json.Marshal(arg)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
output, err := a.doFetch(string(bArg))
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
members := ListTeamMembers{}
|
||||
err = json.Unmarshal(output, &members)
|
||||
if err != nil {
|
||||
return res, UnmarshalError{err}
|
||||
}
|
||||
if members.Error.Message != "" {
|
||||
return res, members.Error
|
||||
}
|
||||
return members.Result.Members, nil
|
||||
}
|
||||
|
||||
type GetMessagesResult struct {
|
||||
Result struct {
|
||||
Messages []chat1.Message `json:"messages"`
|
||||
} `json:"result"`
|
||||
Error *Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type getMessagesOptions struct {
|
||||
Channel chat1.ChatChannel `json:"channel,omitempty"`
|
||||
ConversationID chat1.ConvIDStr `json:"conversation_id,omitempty"`
|
||||
MessageIDs []chat1.MessageID `json:"message_ids,omitempty"`
|
||||
}
|
||||
|
||||
type getMessagesParams struct {
|
||||
Options getMessagesOptions
|
||||
}
|
||||
|
||||
type getMessagesArg struct {
|
||||
Method string
|
||||
Params getMessagesParams
|
||||
}
|
||||
|
||||
func newGetMessagesArg(options getMessagesOptions) getMessagesArg {
|
||||
return getMessagesArg{
|
||||
Method: "get",
|
||||
Params: getMessagesParams{
|
||||
Options: options,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (a *API) GetMessages(channel chat1.ChatChannel, msgIDs []chat1.MessageID) ([]chat1.Message, error) {
|
||||
arg := newGetMessagesArg(getMessagesOptions{
|
||||
Channel: channel,
|
||||
MessageIDs: msgIDs,
|
||||
})
|
||||
return a.getMessages(arg)
|
||||
}
|
||||
|
||||
func (a *API) GetMessagesByConvID(conversationID chat1.ConvIDStr, msgIDs []chat1.MessageID) ([]chat1.Message, error) {
|
||||
arg := newGetMessagesArg(getMessagesOptions{
|
||||
ConversationID: conversationID,
|
||||
MessageIDs: msgIDs,
|
||||
})
|
||||
return a.getMessages(arg)
|
||||
}
|
||||
|
||||
func (a *API) getMessages(arg getMessagesArg) ([]chat1.Message, error) {
|
||||
bArg, err := json.Marshal(arg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
output, err := a.doFetch(string(bArg))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var res GetMessagesResult
|
||||
err = json.Unmarshal(output, &res)
|
||||
if err != nil {
|
||||
return nil, UnmarshalError{err}
|
||||
}
|
||||
if res.Error != nil {
|
||||
return nil, res.Error
|
||||
}
|
||||
return res.Result.Messages, nil
|
||||
}
|
36
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/errors.go
generated
vendored
Normal file
36
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/errors.go
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
package kbchat
|
||||
|
||||
import "fmt"
|
||||
|
||||
type ErrorCode int
|
||||
|
||||
const (
|
||||
RevisionErrorCode ErrorCode = 2760
|
||||
DeleteNonExistentErrorCode ErrorCode = 2762
|
||||
)
|
||||
|
||||
// Error is for unmarshaling CLI json responses
|
||||
type Error struct {
|
||||
Code ErrorCode `json:"code"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
func (e Error) Error() string {
|
||||
return fmt.Sprintf("received error response from keybase api: %s", e.Message)
|
||||
}
|
||||
|
||||
type APIError struct {
|
||||
err error
|
||||
}
|
||||
|
||||
func (e APIError) Error() string {
|
||||
return fmt.Sprintf("failed to call keybase api: %v", e.err)
|
||||
}
|
||||
|
||||
type UnmarshalError struct {
|
||||
err error
|
||||
}
|
||||
|
||||
func (e UnmarshalError) Error() string {
|
||||
return fmt.Sprintf("failed to parse output from keybase api: %v", e.err)
|
||||
}
|
536
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/kbchat.go
generated
vendored
536
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/kbchat.go
generated
vendored
@@ -6,47 +6,63 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1"
|
||||
"github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1"
|
||||
"github.com/keybase/go-keybase-chat-bot/kbchat/types/stellar1"
|
||||
)
|
||||
|
||||
// API is the main object used for communicating with the Keybase JSON API
|
||||
type API struct {
|
||||
sync.Mutex
|
||||
apiInput io.Writer
|
||||
apiOutput *bufio.Reader
|
||||
apiCmd *exec.Cmd
|
||||
username string
|
||||
runOpts RunOptions
|
||||
apiInput io.Writer
|
||||
apiOutput *bufio.Reader
|
||||
apiCmd *exec.Cmd
|
||||
username string
|
||||
runOpts RunOptions
|
||||
subscriptions []*NewSubscription
|
||||
}
|
||||
|
||||
func getUsername(runOpts RunOptions) (username string, err error) {
|
||||
p := runOpts.Command("status")
|
||||
p := runOpts.Command("whoami", "-json")
|
||||
output, err := p.StdoutPipe()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
p.ExtraFiles = []*os.File{output.(*os.File)}
|
||||
if err = p.Start(); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
doneCh := make(chan error)
|
||||
go func() {
|
||||
scanner := bufio.NewScanner(output)
|
||||
if !scanner.Scan() {
|
||||
doneCh <- errors.New("unable to find Keybase username")
|
||||
defer func() { close(doneCh) }()
|
||||
statusJSON, err := ioutil.ReadAll(output)
|
||||
if err != nil {
|
||||
doneCh <- fmt.Errorf("error reading whoami output: %v", err)
|
||||
return
|
||||
}
|
||||
toks := strings.Fields(scanner.Text())
|
||||
if len(toks) != 2 {
|
||||
doneCh <- errors.New("invalid Keybase username output")
|
||||
var status keybase1.CurrentStatus
|
||||
if err := json.Unmarshal(statusJSON, &status); err != nil {
|
||||
doneCh <- fmt.Errorf("invalid whoami JSON %q: %v", statusJSON, err)
|
||||
return
|
||||
}
|
||||
username = toks[1]
|
||||
doneCh <- nil
|
||||
if status.LoggedIn && status.User != nil {
|
||||
username = status.User.Username
|
||||
doneCh <- nil
|
||||
} else {
|
||||
doneCh <- fmt.Errorf("unable to authenticate to keybase service: logged in: %v user: %+v", status.LoggedIn, status.User)
|
||||
}
|
||||
// Cleanup the command
|
||||
if err := p.Wait(); err != nil {
|
||||
log.Printf("unable to wait for cmd: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
select {
|
||||
@@ -71,6 +87,10 @@ type RunOptions struct {
|
||||
HomeDir string
|
||||
Oneshot *OneshotOptions
|
||||
StartService bool
|
||||
// Have the bot send/receive typing notifications
|
||||
EnableTyping bool
|
||||
// Disable bot lite mode
|
||||
DisableBotLiteMode bool
|
||||
}
|
||||
|
||||
func (r RunOptions) Location() string {
|
||||
@@ -100,6 +120,10 @@ func Start(runOpts RunOptions) (*API, error) {
|
||||
return api, nil
|
||||
}
|
||||
|
||||
func (a *API) Command(args ...string) *exec.Cmd {
|
||||
return a.runOpts.Command(args...)
|
||||
}
|
||||
|
||||
func (a *API) auth() (string, error) {
|
||||
username, err := getUsername(a.runOpts)
|
||||
if err == nil {
|
||||
@@ -132,17 +156,28 @@ func (a *API) startPipes() (err error) {
|
||||
a.Lock()
|
||||
defer a.Unlock()
|
||||
if a.apiCmd != nil {
|
||||
a.apiCmd.Process.Kill()
|
||||
if err := a.apiCmd.Process.Kill(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
a.apiCmd = nil
|
||||
|
||||
if a.runOpts.StartService {
|
||||
a.runOpts.Command("service").Start()
|
||||
args := []string{fmt.Sprintf("-enable-bot-lite-mode=%v", a.runOpts.DisableBotLiteMode), "service"}
|
||||
if err := a.runOpts.Command(args...).Start(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if a.username, err = a.auth(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cmd := a.runOpts.Command("chat", "notification-settings", fmt.Sprintf("-disable-typing=%v", !a.runOpts.EnableTyping))
|
||||
if err = cmd.Run(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
a.apiCmd = a.runOpts.Command("chat", "api")
|
||||
if a.apiInput, err = a.apiCmd.StdinPipe(); err != nil {
|
||||
return err
|
||||
@@ -151,6 +186,7 @@ func (a *API) startPipes() (err error) {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
a.apiCmd.ExtraFiles = []*os.File{output.(*os.File)}
|
||||
if err := a.apiCmd.Start(); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -168,73 +204,11 @@ func (a *API) getAPIPipesLocked() (io.Writer, *bufio.Reader, error) {
|
||||
return a.apiInput, a.apiOutput, nil
|
||||
}
|
||||
|
||||
// GetConversations reads all conversations from the current user's inbox.
|
||||
func (a *API) GetConversations(unreadOnly bool) ([]Conversation, error) {
|
||||
apiInput := fmt.Sprintf(`{"method":"list", "params": { "options": { "unread_only": %v}}}`, unreadOnly)
|
||||
output, err := a.doFetch(apiInput)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var inbox Inbox
|
||||
if err := json.Unmarshal(output, &inbox); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return inbox.Result.Convs, nil
|
||||
func (a *API) GetUsername() string {
|
||||
return a.username
|
||||
}
|
||||
|
||||
// GetTextMessages fetches all text messages from a given channel. Optionally can filter
|
||||
// ont unread status.
|
||||
func (a *API) GetTextMessages(channel Channel, unreadOnly bool) ([]Message, error) {
|
||||
channelBytes, err := json.Marshal(channel)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
apiInput := fmt.Sprintf(`{"method": "read", "params": {"options": {"channel": %s}}}`, string(channelBytes))
|
||||
output, err := a.doFetch(apiInput)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var thread Thread
|
||||
|
||||
if err := json.Unmarshal(output, &thread); err != nil {
|
||||
return nil, fmt.Errorf("unable to decode thread: %s", err.Error())
|
||||
}
|
||||
|
||||
var res []Message
|
||||
for _, msg := range thread.Result.Messages {
|
||||
if msg.Msg.Content.Type == "text" {
|
||||
res = append(res, msg.Msg)
|
||||
}
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
type sendMessageBody struct {
|
||||
Body string
|
||||
}
|
||||
|
||||
type sendMessageOptions struct {
|
||||
Channel Channel `json:"channel,omitempty"`
|
||||
ConversationID string `json:"conversation_id,omitempty"`
|
||||
Message sendMessageBody `json:",omitempty"`
|
||||
Filename string `json:"filename,omitempty"`
|
||||
Title string `json:"title,omitempty"`
|
||||
MsgID int `json:"message_id,omitempty"`
|
||||
}
|
||||
|
||||
type sendMessageParams struct {
|
||||
Options sendMessageOptions
|
||||
}
|
||||
|
||||
type sendMessageArg struct {
|
||||
Method string
|
||||
Params sendMessageParams
|
||||
}
|
||||
|
||||
func (a *API) doSend(arg interface{}) (response SendResponse, err error) {
|
||||
func (a *API) doSend(arg interface{}) (resp SendResponse, err error) {
|
||||
a.Lock()
|
||||
defer a.Unlock()
|
||||
|
||||
@@ -253,10 +227,12 @@ func (a *API) doSend(arg interface{}) (response SendResponse, err error) {
|
||||
if err != nil {
|
||||
return SendResponse{}, err
|
||||
}
|
||||
if err := json.Unmarshal(responseRaw, &response); err != nil {
|
||||
return SendResponse{}, fmt.Errorf("failed to decode API response: %s", err)
|
||||
if err := json.Unmarshal(responseRaw, &resp); err != nil {
|
||||
return resp, fmt.Errorf("failed to decode API response: %s", err)
|
||||
} else if resp.Error != nil {
|
||||
return resp, errors.New(resp.Error.Message)
|
||||
}
|
||||
return response, nil
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func (a *API) doFetch(apiInput string) ([]byte, error) {
|
||||
@@ -278,237 +254,131 @@ func (a *API) doFetch(apiInput string) ([]byte, error) {
|
||||
return byteOutput, nil
|
||||
}
|
||||
|
||||
func (a *API) SendMessage(channel Channel, body string) (SendResponse, error) {
|
||||
arg := sendMessageArg{
|
||||
Method: "send",
|
||||
Params: sendMessageParams{
|
||||
Options: sendMessageOptions{
|
||||
Channel: channel,
|
||||
Message: sendMessageBody{
|
||||
Body: body,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) SendMessageByConvID(convID string, body string) (SendResponse, error) {
|
||||
arg := sendMessageArg{
|
||||
Method: "send",
|
||||
Params: sendMessageParams{
|
||||
Options: sendMessageOptions{
|
||||
ConversationID: convID,
|
||||
Message: sendMessageBody{
|
||||
Body: body,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
// SendMessageByTlfName sends a message on the given TLF name
|
||||
func (a *API) SendMessageByTlfName(tlfName string, body string) (SendResponse, error) {
|
||||
arg := sendMessageArg{
|
||||
Method: "send",
|
||||
Params: sendMessageParams{
|
||||
Options: sendMessageOptions{
|
||||
Channel: Channel{
|
||||
Name: tlfName,
|
||||
},
|
||||
Message: sendMessageBody{
|
||||
Body: body,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) SendMessageByTeamName(teamName string, body string, inChannel *string) (SendResponse, error) {
|
||||
channel := "general"
|
||||
if inChannel != nil {
|
||||
channel = *inChannel
|
||||
}
|
||||
arg := sendMessageArg{
|
||||
Method: "send",
|
||||
Params: sendMessageParams{
|
||||
Options: sendMessageOptions{
|
||||
Channel: Channel{
|
||||
MembersType: "team",
|
||||
Name: teamName,
|
||||
TopicName: channel,
|
||||
},
|
||||
Message: sendMessageBody{
|
||||
Body: body,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) SendAttachmentByTeam(teamName string, filename string, title string, inChannel *string) (SendResponse, error) {
|
||||
channel := "general"
|
||||
if inChannel != nil {
|
||||
channel = *inChannel
|
||||
}
|
||||
arg := sendMessageArg{
|
||||
Method: "attach",
|
||||
Params: sendMessageParams{
|
||||
Options: sendMessageOptions{
|
||||
Channel: Channel{
|
||||
MembersType: "team",
|
||||
Name: teamName,
|
||||
TopicName: channel,
|
||||
},
|
||||
Filename: filename,
|
||||
Title: title,
|
||||
},
|
||||
},
|
||||
}
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
type reactionOptions struct {
|
||||
ConversationID string `json:"conversation_id"`
|
||||
Message sendMessageBody
|
||||
MsgID int `json:"message_id"`
|
||||
Channel Channel `json:"channel"`
|
||||
}
|
||||
|
||||
type reactionParams struct {
|
||||
Options reactionOptions
|
||||
}
|
||||
|
||||
type reactionArg struct {
|
||||
Method string
|
||||
Params reactionParams
|
||||
}
|
||||
|
||||
func newReactionArg(options reactionOptions) reactionArg {
|
||||
return reactionArg{
|
||||
Method: "reaction",
|
||||
Params: reactionParams{Options: options},
|
||||
}
|
||||
}
|
||||
|
||||
func (a *API) ReactByChannel(channel Channel, msgID int, reaction string) (SendResponse, error) {
|
||||
arg := newReactionArg(reactionOptions{
|
||||
Message: sendMessageBody{Body: reaction},
|
||||
MsgID: msgID,
|
||||
Channel: channel,
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
func (a *API) ReactByConvID(convID string, msgID int, reaction string) (SendResponse, error) {
|
||||
arg := newReactionArg(reactionOptions{
|
||||
Message: sendMessageBody{Body: reaction},
|
||||
MsgID: msgID,
|
||||
ConversationID: convID,
|
||||
})
|
||||
return a.doSend(arg)
|
||||
}
|
||||
|
||||
type advertiseParams struct {
|
||||
Options Advertisement
|
||||
}
|
||||
|
||||
type advertiseMsgArg struct {
|
||||
Method string
|
||||
Params advertiseParams
|
||||
}
|
||||
|
||||
func newAdvertiseMsgArg(ad Advertisement) advertiseMsgArg {
|
||||
return advertiseMsgArg{
|
||||
Method: "advertisecommands",
|
||||
Params: advertiseParams{
|
||||
Options: ad,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (a *API) AdvertiseCommands(ad Advertisement) (SendResponse, error) {
|
||||
return a.doSend(newAdvertiseMsgArg(ad))
|
||||
}
|
||||
|
||||
func (a *API) Username() string {
|
||||
return a.username
|
||||
}
|
||||
|
||||
// SubscriptionMessage contains a message and conversation object
|
||||
type SubscriptionMessage struct {
|
||||
Message Message
|
||||
Conversation Conversation
|
||||
Message chat1.MsgSummary
|
||||
Conversation chat1.ConvSummary
|
||||
}
|
||||
|
||||
type SubscriptionConversation struct {
|
||||
Conversation chat1.ConvSummary
|
||||
}
|
||||
|
||||
type SubscriptionWalletEvent struct {
|
||||
Payment Payment
|
||||
Payment stellar1.PaymentDetailsLocal
|
||||
}
|
||||
|
||||
// NewSubscription has methods to control the background message fetcher loop
|
||||
type NewSubscription struct {
|
||||
sync.Mutex
|
||||
|
||||
newMsgsCh <-chan SubscriptionMessage
|
||||
newConvsCh <-chan SubscriptionConversation
|
||||
newWalletCh <-chan SubscriptionWalletEvent
|
||||
errorCh <-chan error
|
||||
running bool
|
||||
shutdownCh chan struct{}
|
||||
}
|
||||
|
||||
// Read blocks until a new message arrives
|
||||
func (m NewSubscription) Read() (SubscriptionMessage, error) {
|
||||
func (m *NewSubscription) Read() (SubscriptionMessage, error) {
|
||||
select {
|
||||
case msg := <-m.newMsgsCh:
|
||||
return msg, nil
|
||||
case err := <-m.errorCh:
|
||||
return SubscriptionMessage{}, err
|
||||
case <-m.shutdownCh:
|
||||
return SubscriptionMessage{}, errors.New("Subscription shutdown")
|
||||
}
|
||||
}
|
||||
|
||||
func (m *NewSubscription) ReadNewConvs() (SubscriptionConversation, error) {
|
||||
select {
|
||||
case conv := <-m.newConvsCh:
|
||||
return conv, nil
|
||||
case err := <-m.errorCh:
|
||||
return SubscriptionConversation{}, err
|
||||
case <-m.shutdownCh:
|
||||
return SubscriptionConversation{}, errors.New("Subscription shutdown")
|
||||
}
|
||||
}
|
||||
|
||||
// Read blocks until a new message arrives
|
||||
func (m NewSubscription) ReadWallet() (SubscriptionWalletEvent, error) {
|
||||
func (m *NewSubscription) ReadWallet() (SubscriptionWalletEvent, error) {
|
||||
select {
|
||||
case msg := <-m.newWalletCh:
|
||||
return msg, nil
|
||||
case err := <-m.errorCh:
|
||||
return SubscriptionWalletEvent{}, err
|
||||
case <-m.shutdownCh:
|
||||
return SubscriptionWalletEvent{}, errors.New("Subscription shutdown")
|
||||
}
|
||||
}
|
||||
|
||||
// Shutdown terminates the background process
|
||||
func (m NewSubscription) Shutdown() {
|
||||
m.shutdownCh <- struct{}{}
|
||||
func (m *NewSubscription) Shutdown() {
|
||||
m.Lock()
|
||||
defer m.Unlock()
|
||||
if m.running {
|
||||
close(m.shutdownCh)
|
||||
m.running = false
|
||||
}
|
||||
}
|
||||
|
||||
type ListenOptions struct {
|
||||
Wallet bool
|
||||
Convs bool
|
||||
}
|
||||
|
||||
type PaymentHolder struct {
|
||||
Payment stellar1.PaymentDetailsLocal `json:"notification"`
|
||||
}
|
||||
|
||||
type TypeHolder struct {
|
||||
Type string `json:"type"`
|
||||
}
|
||||
|
||||
// ListenForNewTextMessages proxies to Listen without wallet events
|
||||
func (a *API) ListenForNewTextMessages() (NewSubscription, error) {
|
||||
func (a *API) ListenForNewTextMessages() (*NewSubscription, error) {
|
||||
opts := ListenOptions{Wallet: false}
|
||||
return a.Listen(opts)
|
||||
}
|
||||
|
||||
func (a *API) registerSubscription(sub *NewSubscription) {
|
||||
a.Lock()
|
||||
defer a.Unlock()
|
||||
a.subscriptions = append(a.subscriptions, sub)
|
||||
}
|
||||
|
||||
// Listen fires of a background loop and puts chat messages and wallet
|
||||
// events into channels
|
||||
func (a *API) Listen(opts ListenOptions) (NewSubscription, error) {
|
||||
newMsgCh := make(chan SubscriptionMessage, 100)
|
||||
func (a *API) Listen(opts ListenOptions) (*NewSubscription, error) {
|
||||
newMsgsCh := make(chan SubscriptionMessage, 100)
|
||||
newConvsCh := make(chan SubscriptionConversation, 100)
|
||||
newWalletCh := make(chan SubscriptionWalletEvent, 100)
|
||||
errorCh := make(chan error, 100)
|
||||
shutdownCh := make(chan struct{})
|
||||
done := make(chan struct{})
|
||||
|
||||
sub := NewSubscription{
|
||||
newMsgsCh: newMsgCh,
|
||||
sub := &NewSubscription{
|
||||
newMsgsCh: newMsgsCh,
|
||||
newConvsCh: newConvsCh,
|
||||
newWalletCh: newWalletCh,
|
||||
shutdownCh: shutdownCh,
|
||||
errorCh: errorCh,
|
||||
running: true,
|
||||
}
|
||||
a.registerSubscription(sub)
|
||||
pause := 2 * time.Second
|
||||
readScanner := func(boutput *bufio.Scanner) {
|
||||
defer func() { done <- struct{}{} }()
|
||||
for {
|
||||
select {
|
||||
case <-shutdownCh:
|
||||
log.Printf("readScanner: received shutdown")
|
||||
return
|
||||
default:
|
||||
}
|
||||
boutput.Scan()
|
||||
t := boutput.Text()
|
||||
var typeHolder TypeHolder
|
||||
@@ -518,41 +388,72 @@ func (a *API) Listen(opts ListenOptions) (NewSubscription, error) {
|
||||
}
|
||||
switch typeHolder.Type {
|
||||
case "chat":
|
||||
var holder MessageHolder
|
||||
if err := json.Unmarshal([]byte(t), &holder); err != nil {
|
||||
var notification chat1.MsgNotification
|
||||
if err := json.Unmarshal([]byte(t), ¬ification); err != nil {
|
||||
errorCh <- err
|
||||
break
|
||||
}
|
||||
subscriptionMessage := SubscriptionMessage{
|
||||
Message: holder.Msg,
|
||||
Conversation: Conversation{
|
||||
ID: holder.Msg.ConversationID,
|
||||
Channel: holder.Msg.Channel,
|
||||
},
|
||||
if notification.Error != nil {
|
||||
log.Printf("error message received: %s", *notification.Error)
|
||||
} else if notification.Msg != nil {
|
||||
subscriptionMessage := SubscriptionMessage{
|
||||
Message: *notification.Msg,
|
||||
Conversation: chat1.ConvSummary{
|
||||
Id: notification.Msg.ConvID,
|
||||
Channel: notification.Msg.Channel,
|
||||
},
|
||||
}
|
||||
newMsgsCh <- subscriptionMessage
|
||||
}
|
||||
case "chat_conv":
|
||||
var notification chat1.ConvNotification
|
||||
if err := json.Unmarshal([]byte(t), ¬ification); err != nil {
|
||||
errorCh <- err
|
||||
break
|
||||
}
|
||||
if notification.Error != nil {
|
||||
log.Printf("error message received: %s", *notification.Error)
|
||||
} else if notification.Conv != nil {
|
||||
subscriptionConv := SubscriptionConversation{
|
||||
Conversation: *notification.Conv,
|
||||
}
|
||||
newConvsCh <- subscriptionConv
|
||||
}
|
||||
newMsgCh <- subscriptionMessage
|
||||
case "wallet":
|
||||
var holder PaymentHolder
|
||||
if err := json.Unmarshal([]byte(t), &holder); err != nil {
|
||||
errorCh <- err
|
||||
break
|
||||
}
|
||||
subscriptionPayment := SubscriptionWalletEvent{
|
||||
Payment: holder.Payment,
|
||||
}
|
||||
subscriptionPayment := SubscriptionWalletEvent(holder)
|
||||
newWalletCh <- subscriptionPayment
|
||||
default:
|
||||
continue
|
||||
}
|
||||
}
|
||||
done <- struct{}{}
|
||||
}
|
||||
|
||||
attempts := 0
|
||||
maxAttempts := 1800
|
||||
go func() {
|
||||
defer func() {
|
||||
close(newMsgsCh)
|
||||
close(newConvsCh)
|
||||
close(newWalletCh)
|
||||
close(errorCh)
|
||||
}()
|
||||
for {
|
||||
select {
|
||||
case <-shutdownCh:
|
||||
log.Printf("Listen: received shutdown")
|
||||
return
|
||||
default:
|
||||
}
|
||||
|
||||
if attempts >= maxAttempts {
|
||||
if err := a.LogSend("Listen: failed to auth, giving up"); err != nil {
|
||||
log.Printf("Listen: logsend failed to send: %v", err)
|
||||
}
|
||||
panic("Listen: failed to auth, giving up")
|
||||
}
|
||||
attempts++
|
||||
@@ -565,6 +466,9 @@ func (a *API) Listen(opts ListenOptions) (NewSubscription, error) {
|
||||
if opts.Wallet {
|
||||
cmdElements = append(cmdElements, "--wallet")
|
||||
}
|
||||
if opts.Convs {
|
||||
cmdElements = append(cmdElements, "--convs")
|
||||
}
|
||||
p := a.runOpts.Command(cmdElements...)
|
||||
output, err := p.StdoutPipe()
|
||||
if err != nil {
|
||||
@@ -572,8 +476,16 @@ func (a *API) Listen(opts ListenOptions) (NewSubscription, error) {
|
||||
time.Sleep(pause)
|
||||
continue
|
||||
}
|
||||
stderr, err := p.StderrPipe()
|
||||
if err != nil {
|
||||
log.Printf("Listen: failed to listen to stderr: %s", err)
|
||||
time.Sleep(pause)
|
||||
continue
|
||||
}
|
||||
p.ExtraFiles = []*os.File{stderr.(*os.File), output.(*os.File)}
|
||||
boutput := bufio.NewScanner(output)
|
||||
if err := p.Start(); err != nil {
|
||||
|
||||
log.Printf("Listen: failed to make listen scanner: %s", err)
|
||||
time.Sleep(pause)
|
||||
continue
|
||||
@@ -581,78 +493,19 @@ func (a *API) Listen(opts ListenOptions) (NewSubscription, error) {
|
||||
attempts = 0
|
||||
go readScanner(boutput)
|
||||
<-done
|
||||
p.Wait()
|
||||
if err := p.Wait(); err != nil {
|
||||
stderrBytes, rerr := ioutil.ReadAll(stderr)
|
||||
if rerr != nil {
|
||||
stderrBytes = []byte("failed to get stderr")
|
||||
}
|
||||
log.Printf("Listen: failed to Wait for command: %s (```%s```)", err, stderrBytes)
|
||||
}
|
||||
time.Sleep(pause)
|
||||
}
|
||||
}()
|
||||
return sub, nil
|
||||
}
|
||||
|
||||
func (a *API) GetUsername() string {
|
||||
return a.username
|
||||
}
|
||||
|
||||
func (a *API) ListChannels(teamName string) ([]string, error) {
|
||||
apiInput := fmt.Sprintf(`{"method": "listconvsonname", "params": {"options": {"topic_type": "CHAT", "members_type": "team", "name": "%s"}}}`, teamName)
|
||||
output, err := a.doFetch(apiInput)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var channelsList ChannelsList
|
||||
if err := json.Unmarshal(output, &channelsList); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var channels []string
|
||||
for _, conv := range channelsList.Result.Convs {
|
||||
channels = append(channels, conv.Channel.TopicName)
|
||||
}
|
||||
return channels, nil
|
||||
}
|
||||
|
||||
func (a *API) JoinChannel(teamName string, channelName string) (JoinChannelResult, error) {
|
||||
empty := JoinChannelResult{}
|
||||
|
||||
apiInput := fmt.Sprintf(`{"method": "join", "params": {"options": {"channel": {"name": "%s", "members_type": "team", "topic_name": "%s"}}}}`, teamName, channelName)
|
||||
output, err := a.doFetch(apiInput)
|
||||
if err != nil {
|
||||
return empty, err
|
||||
}
|
||||
|
||||
joinChannel := JoinChannel{}
|
||||
err = json.Unmarshal(output, &joinChannel)
|
||||
if err != nil {
|
||||
return empty, fmt.Errorf("failed to parse output from keybase team api: %v", err)
|
||||
}
|
||||
if joinChannel.Error.Message != "" {
|
||||
return empty, fmt.Errorf("received error from keybase team api: %s", joinChannel.Error.Message)
|
||||
}
|
||||
|
||||
return joinChannel.Result, nil
|
||||
}
|
||||
|
||||
func (a *API) LeaveChannel(teamName string, channelName string) (LeaveChannelResult, error) {
|
||||
empty := LeaveChannelResult{}
|
||||
|
||||
apiInput := fmt.Sprintf(`{"method": "leave", "params": {"options": {"channel": {"name": "%s", "members_type": "team", "topic_name": "%s"}}}}`, teamName, channelName)
|
||||
output, err := a.doFetch(apiInput)
|
||||
if err != nil {
|
||||
return empty, err
|
||||
}
|
||||
|
||||
leaveChannel := LeaveChannel{}
|
||||
err = json.Unmarshal(output, &leaveChannel)
|
||||
if err != nil {
|
||||
return empty, fmt.Errorf("failed to parse output from keybase team api: %v", err)
|
||||
}
|
||||
if leaveChannel.Error.Message != "" {
|
||||
return empty, fmt.Errorf("received error from keybase team api: %s", leaveChannel.Error.Message)
|
||||
}
|
||||
|
||||
return leaveChannel.Result, nil
|
||||
}
|
||||
|
||||
func (a *API) LogSend(feedback string) error {
|
||||
feedback = "go-keybase-chat-bot log send\n" +
|
||||
"username: " + a.GetUsername() + "\n" +
|
||||
@@ -675,6 +528,17 @@ func (a *API) LogSend(feedback string) error {
|
||||
}
|
||||
|
||||
func (a *API) Shutdown() error {
|
||||
a.Lock()
|
||||
defer a.Unlock()
|
||||
for _, sub := range a.subscriptions {
|
||||
sub.Shutdown()
|
||||
}
|
||||
if a.apiCmd != nil {
|
||||
if err := a.apiCmd.Wait(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if a.runOpts.Oneshot != nil {
|
||||
err := a.runOpts.Command("logout", "--force").Run()
|
||||
if err != nil {
|
||||
|
228
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/kvstore.go
generated
vendored
Normal file
228
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/kvstore.go
generated
vendored
Normal file
@@ -0,0 +1,228 @@
|
||||
package kbchat
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
|
||||
"github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1"
|
||||
)
|
||||
|
||||
type kvstoreMethod string
|
||||
|
||||
type kvstoreOptions struct {
|
||||
Team *string `json:"team"`
|
||||
Namespace *string `json:"namespace,omitempty"`
|
||||
EntryKey *string `json:"entryKey,omitempty"`
|
||||
EntryValue *string `json:"entryValue,omitempty"`
|
||||
Revision *int `json:"revision,omitempty"`
|
||||
}
|
||||
|
||||
type kvstoreParams struct {
|
||||
Options kvstoreOptions `json:"options"`
|
||||
}
|
||||
|
||||
type kvstoreAPIReq struct {
|
||||
Method kvstoreMethod `json:"method"`
|
||||
Params kvstoreParams `json:"params"`
|
||||
}
|
||||
|
||||
type GetEntryRes struct {
|
||||
Result keybase1.KVGetResult `json:"result"`
|
||||
Error Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type PutEntryRes struct {
|
||||
Result keybase1.KVPutResult `json:"result"`
|
||||
Error Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type DeleteEntryRes struct {
|
||||
Result keybase1.KVDeleteEntryResult `json:"result"`
|
||||
Error Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type ListNamespacesRes struct {
|
||||
Result keybase1.KVListNamespaceResult `json:"result"`
|
||||
Error Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type ListEntryKeysRes struct {
|
||||
Result keybase1.KVListEntryResult `json:"result"`
|
||||
Error Error `json:"error,omitempty"`
|
||||
}
|
||||
|
||||
type KVStoreAPI interface {
|
||||
PutEntry(teamName *string, namespace string, entryKey string, entryValue string) (keybase1.KVPutResult, error)
|
||||
PutEntryWithRevision(teamName *string, namespace string, entryKey string, entryValue string, revision int) (keybase1.KVPutResult, error)
|
||||
DeleteEntry(teamName *string, namespace string, entryKey string) (keybase1.KVDeleteEntryResult, error)
|
||||
DeleteEntryWithRevision(teamName *string, namespace string, entryKey string, revision int) (keybase1.KVDeleteEntryResult, error)
|
||||
GetEntry(teamName *string, namespace string, entryKey string) (keybase1.KVGetResult, error)
|
||||
ListNamespaces(teamName *string) (keybase1.KVListNamespaceResult, error)
|
||||
ListEntryKeys(teamName *string, namespace string) (keybase1.KVListEntryResult, error)
|
||||
}
|
||||
|
||||
func (a *API) PutEntry(teamName *string, namespace string, entryKey string, entryValue string) (result keybase1.KVPutResult, err error) {
|
||||
return a.PutEntryWithRevision(teamName, namespace, entryKey, entryValue, 0)
|
||||
}
|
||||
|
||||
func (a *API) PutEntryWithRevision(teamName *string, namespace string, entryKey string, entryValue string, revision int) (result keybase1.KVPutResult, err error) {
|
||||
|
||||
opts := kvstoreOptions{
|
||||
Team: teamName,
|
||||
Namespace: &namespace,
|
||||
EntryKey: &entryKey,
|
||||
EntryValue: &entryValue,
|
||||
}
|
||||
if revision != 0 {
|
||||
opts.Revision = &revision
|
||||
}
|
||||
args := kvstoreAPIReq{Method: "put", Params: kvstoreParams{Options: opts}}
|
||||
apiInput, err := json.Marshal(args)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
cmd := a.runOpts.Command("kvstore", "api")
|
||||
cmd.Stdin = strings.NewReader(string(apiInput))
|
||||
bytes, err := cmd.Output()
|
||||
if err != nil {
|
||||
return result, APIError{err}
|
||||
}
|
||||
|
||||
entry := PutEntryRes{}
|
||||
err = json.Unmarshal(bytes, &entry)
|
||||
if err != nil {
|
||||
return result, UnmarshalError{err}
|
||||
}
|
||||
if entry.Error.Message != "" {
|
||||
return result, entry.Error
|
||||
}
|
||||
return entry.Result, nil
|
||||
}
|
||||
|
||||
func (a *API) DeleteEntry(teamName *string, namespace string, entryKey string) (result keybase1.KVDeleteEntryResult, err error) {
|
||||
return a.DeleteEntryWithRevision(teamName, namespace, entryKey, 0)
|
||||
}
|
||||
|
||||
func (a *API) DeleteEntryWithRevision(teamName *string, namespace string, entryKey string, revision int) (result keybase1.KVDeleteEntryResult, err error) {
|
||||
|
||||
opts := kvstoreOptions{
|
||||
Team: teamName,
|
||||
Namespace: &namespace,
|
||||
EntryKey: &entryKey,
|
||||
}
|
||||
if revision != 0 {
|
||||
opts.Revision = &revision
|
||||
}
|
||||
args := kvstoreAPIReq{Method: "del", Params: kvstoreParams{Options: opts}}
|
||||
apiInput, err := json.Marshal(args)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
cmd := a.runOpts.Command("kvstore", "api")
|
||||
cmd.Stdin = strings.NewReader(string(apiInput))
|
||||
bytes, err := cmd.Output()
|
||||
if err != nil {
|
||||
return result, APIError{err}
|
||||
}
|
||||
|
||||
entry := DeleteEntryRes{}
|
||||
err = json.Unmarshal(bytes, &entry)
|
||||
if err != nil {
|
||||
return result, UnmarshalError{err}
|
||||
}
|
||||
if entry.Error.Message != "" {
|
||||
return result, entry.Error
|
||||
}
|
||||
return entry.Result, nil
|
||||
}
|
||||
|
||||
func (a *API) GetEntry(teamName *string, namespace string, entryKey string) (result keybase1.KVGetResult, err error) {
|
||||
|
||||
opts := kvstoreOptions{
|
||||
Team: teamName,
|
||||
Namespace: &namespace,
|
||||
EntryKey: &entryKey,
|
||||
}
|
||||
args := kvstoreAPIReq{Method: "get", Params: kvstoreParams{Options: opts}}
|
||||
apiInput, err := json.Marshal(args)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
cmd := a.runOpts.Command("kvstore", "api")
|
||||
cmd.Stdin = strings.NewReader(string(apiInput))
|
||||
bytes, err := cmd.Output()
|
||||
if err != nil {
|
||||
return result, APIError{err}
|
||||
}
|
||||
|
||||
entry := GetEntryRes{}
|
||||
err = json.Unmarshal(bytes, &entry)
|
||||
if err != nil {
|
||||
return result, UnmarshalError{err}
|
||||
}
|
||||
if entry.Error.Message != "" {
|
||||
return result, entry.Error
|
||||
}
|
||||
return entry.Result, nil
|
||||
}
|
||||
|
||||
func (a *API) ListNamespaces(teamName *string) (result keybase1.KVListNamespaceResult, err error) {
|
||||
|
||||
opts := kvstoreOptions{
|
||||
Team: teamName,
|
||||
}
|
||||
args := kvstoreAPIReq{Method: "list", Params: kvstoreParams{Options: opts}}
|
||||
apiInput, err := json.Marshal(args)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
cmd := a.runOpts.Command("kvstore", "api")
|
||||
cmd.Stdin = strings.NewReader(string(apiInput))
|
||||
bytes, err := cmd.Output()
|
||||
if err != nil {
|
||||
return result, APIError{err}
|
||||
}
|
||||
|
||||
var namespaces ListNamespacesRes
|
||||
err = json.Unmarshal(bytes, &namespaces)
|
||||
if err != nil {
|
||||
return result, UnmarshalError{err}
|
||||
}
|
||||
if namespaces.Error.Message != "" {
|
||||
return result, namespaces.Error
|
||||
}
|
||||
return namespaces.Result, nil
|
||||
}
|
||||
|
||||
func (a *API) ListEntryKeys(teamName *string, namespace string) (result keybase1.KVListEntryResult, err error) {
|
||||
|
||||
opts := kvstoreOptions{
|
||||
Team: teamName,
|
||||
Namespace: &namespace,
|
||||
}
|
||||
args := kvstoreAPIReq{Method: "list", Params: kvstoreParams{Options: opts}}
|
||||
apiInput, err := json.Marshal(args)
|
||||
if err != nil {
|
||||
return result, err
|
||||
}
|
||||
|
||||
cmd := a.runOpts.Command("kvstore", "api")
|
||||
cmd.Stdin = strings.NewReader(string(apiInput))
|
||||
bytes, err := cmd.Output()
|
||||
if err != nil {
|
||||
return result, APIError{err}
|
||||
}
|
||||
|
||||
entryKeys := ListEntryKeysRes{}
|
||||
err = json.Unmarshal(bytes, &entryKeys)
|
||||
if err != nil {
|
||||
return result, UnmarshalError{err}
|
||||
}
|
||||
if entryKeys.Error.Message != "" {
|
||||
return result, entryKeys.Error
|
||||
}
|
||||
return entryKeys.Result, nil
|
||||
}
|
73
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/team.go
generated
vendored
73
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/team.go
generated
vendored
@@ -1,25 +1,18 @@
|
||||
package kbchat
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
"github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1"
|
||||
)
|
||||
|
||||
type ListTeamMembers struct {
|
||||
Result ListTeamMembersResult `json:"result"`
|
||||
Error Error `json:"error"`
|
||||
}
|
||||
|
||||
type ListTeamMembersResult struct {
|
||||
Members ListTeamMembersResultMembers `json:"members"`
|
||||
}
|
||||
|
||||
type ListTeamMembersResultMembers struct {
|
||||
Owners []ListMembersOutputMembersCategory `json:"owners"`
|
||||
Admins []ListMembersOutputMembersCategory `json:"admins"`
|
||||
Writers []ListMembersOutputMembersCategory `json:"writers"`
|
||||
Readers []ListMembersOutputMembersCategory `json:"readers"`
|
||||
Result keybase1.TeamDetails `json:"result"`
|
||||
Error Error `json:"error"`
|
||||
}
|
||||
|
||||
type ListMembersOutputMembersCategory struct {
|
||||
@@ -28,62 +21,56 @@ type ListMembersOutputMembersCategory struct {
|
||||
}
|
||||
|
||||
type ListUserMemberships struct {
|
||||
Result ListUserMembershipsResult `json:"result"`
|
||||
Error Error `json:"error"`
|
||||
Result keybase1.AnnotatedTeamList `json:"result"`
|
||||
Error Error `json:"error"`
|
||||
}
|
||||
|
||||
type ListUserMembershipsResult struct {
|
||||
Teams []ListUserMembershipsResultTeam `json:"teams"`
|
||||
}
|
||||
|
||||
type ListUserMembershipsResultTeam struct {
|
||||
TeamName string `json:"fq_name"`
|
||||
IsImplicitTeam bool `json:"is_implicit_team"`
|
||||
IsOpenTeam bool `json:"is_open_team"`
|
||||
Role int `json:"role"`
|
||||
MemberCount int `json:"member_count"`
|
||||
}
|
||||
|
||||
func (a *API) ListMembersOfTeam(teamName string) (ListTeamMembersResultMembers, error) {
|
||||
empty := ListTeamMembersResultMembers{}
|
||||
|
||||
func (a *API) ListMembersOfTeam(teamName string) (res keybase1.TeamMembersDetails, err error) {
|
||||
apiInput := fmt.Sprintf(`{"method": "list-team-memberships", "params": {"options": {"team": "%s"}}}`, teamName)
|
||||
cmd := a.runOpts.Command("team", "api")
|
||||
cmd.Stdin = strings.NewReader(apiInput)
|
||||
bytes, err := cmd.CombinedOutput()
|
||||
var stderr bytes.Buffer
|
||||
cmd.Stderr = &stderr
|
||||
output, err := cmd.Output()
|
||||
if err != nil {
|
||||
return empty, fmt.Errorf("failed to call keybase team api: %v", err)
|
||||
return res, APIError{err}
|
||||
}
|
||||
if stderr.Len() != 0 {
|
||||
log.Printf("ListMembersOfTeam error: %s", stderr.String())
|
||||
}
|
||||
|
||||
members := ListTeamMembers{}
|
||||
err = json.Unmarshal(bytes, &members)
|
||||
err = json.Unmarshal(output, &members)
|
||||
if err != nil {
|
||||
return empty, fmt.Errorf("failed to parse output from keybase team api: %v", err)
|
||||
return res, UnmarshalError{err}
|
||||
}
|
||||
if members.Error.Message != "" {
|
||||
return empty, fmt.Errorf("received error from keybase team api: %s", members.Error.Message)
|
||||
return res, members.Error
|
||||
}
|
||||
return members.Result.Members, nil
|
||||
}
|
||||
|
||||
func (a *API) ListUserMemberships(username string) ([]ListUserMembershipsResultTeam, error) {
|
||||
empty := []ListUserMembershipsResultTeam{}
|
||||
|
||||
func (a *API) ListUserMemberships(username string) ([]keybase1.AnnotatedMemberInfo, error) {
|
||||
apiInput := fmt.Sprintf(`{"method": "list-user-memberships", "params": {"options": {"username": "%s"}}}`, username)
|
||||
cmd := a.runOpts.Command("team", "api")
|
||||
cmd.Stdin = strings.NewReader(apiInput)
|
||||
bytes, err := cmd.CombinedOutput()
|
||||
var stderr bytes.Buffer
|
||||
cmd.Stderr = &stderr
|
||||
output, err := cmd.Output()
|
||||
if err != nil {
|
||||
return empty, fmt.Errorf("failed to call keybase team api: %v", err)
|
||||
return nil, APIError{err}
|
||||
}
|
||||
if stderr.Len() != 0 {
|
||||
log.Printf("ListUserMemberships error: %s", stderr.String())
|
||||
}
|
||||
|
||||
members := ListUserMemberships{}
|
||||
err = json.Unmarshal(bytes, &members)
|
||||
err = json.Unmarshal(output, &members)
|
||||
if err != nil {
|
||||
return empty, fmt.Errorf("failed to parse output from keybase team api: %v", err)
|
||||
return nil, UnmarshalError{err}
|
||||
}
|
||||
if members.Error.Message != "" {
|
||||
return empty, fmt.Errorf("received error from keybase team api: %s", members.Error.Message)
|
||||
return nil, members.Error
|
||||
}
|
||||
return members.Result.Teams, nil
|
||||
}
|
||||
|
29
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/test_config.example.yaml
generated
vendored
29
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/test_config.example.yaml
generated
vendored
@@ -1,16 +1,17 @@
|
||||
# Rename this file to `test_config.yaml`
|
||||
|
||||
config:
|
||||
bots:
|
||||
alice:
|
||||
username: "alice"
|
||||
paperkey: "foo bar car..."
|
||||
bob:
|
||||
username: "bob"
|
||||
paperkey: "one two three four..."
|
||||
teams:
|
||||
acme:
|
||||
# A real team that you add your alice1 and bob1 into
|
||||
name: "acme"
|
||||
# The channel to use
|
||||
topicname: "mysupercoolchannel"
|
||||
keybase: "/path/to/keybase"
|
||||
bots:
|
||||
# Alice should have an active Stellar account with a little bit of XLM in it
|
||||
alice:
|
||||
username: "alice"
|
||||
paperkey: "foo bar car..."
|
||||
bob:
|
||||
username: "bob"
|
||||
paperkey: "one two three four..."
|
||||
teams:
|
||||
acme:
|
||||
# A real team that you add your alice and bob into
|
||||
name: "acme"
|
||||
# The channel to use
|
||||
topicname: "mysupercoolchannel"
|
||||
|
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/test_utils.go
generated
vendored
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/test_utils.go
generated
vendored
@@ -41,9 +41,7 @@ func copyFile(t *testing.T, source, dest string) {
|
||||
|
||||
// Creates the working directory and copies over the keybase binary in PATH.
|
||||
// We do this to avoid any version mismatch issues.
|
||||
func prepWorkingDir(t *testing.T, workingDir string) string {
|
||||
kbLocation := whichKeybase(t)
|
||||
|
||||
func prepWorkingDir(t *testing.T, workingDir string, kbLocation string) string {
|
||||
err := os.Mkdir(workingDir, 0777)
|
||||
require.NoError(t, err)
|
||||
kbDestination := path.Join(workingDir, "keybase")
|
||||
|
157
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types.go
generated
vendored
157
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types.go
generated
vendored
@@ -1,159 +1,14 @@
|
||||
package kbchat
|
||||
|
||||
type Sender struct {
|
||||
Uid string `json:"uid"`
|
||||
Username string `json:"username"`
|
||||
DeviceID string `json:"device_id"`
|
||||
DeviceName string `json:"device_name"`
|
||||
}
|
||||
|
||||
type Channel struct {
|
||||
Name string `json:"name"`
|
||||
Public bool `json:"public"`
|
||||
TopicType string `json:"topic_type"`
|
||||
TopicName string `json:"topic_name"`
|
||||
MembersType string `json:"members_type"`
|
||||
}
|
||||
|
||||
type Conversation struct {
|
||||
ID string `json:"id"`
|
||||
Unread bool `json:"unread"`
|
||||
Channel Channel `json:"channel"`
|
||||
}
|
||||
|
||||
type PaymentHolder struct {
|
||||
Payment Payment `json:"notification"`
|
||||
}
|
||||
|
||||
type Payment struct {
|
||||
TxID string `json:"txID"`
|
||||
StatusDescription string `json:"statusDescription"`
|
||||
FromAccountID string `json:"fromAccountID"`
|
||||
FromUsername string `json:"fromUsername"`
|
||||
ToAccountID string `json:"toAccountID"`
|
||||
ToUsername string `json:"toUsername"`
|
||||
AmountDescription string `json:"amountDescription"`
|
||||
WorthAtSendTime string `json:"worthAtSendTime"`
|
||||
ExternalTxURL string `json:"externalTxURL"`
|
||||
}
|
||||
import (
|
||||
"github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1"
|
||||
)
|
||||
|
||||
type Result struct {
|
||||
Convs []Conversation `json:"conversations"`
|
||||
}
|
||||
|
||||
type Inbox struct {
|
||||
Result Result `json:"result"`
|
||||
}
|
||||
|
||||
type ChannelsList struct {
|
||||
Result Result `json:"result"`
|
||||
}
|
||||
|
||||
type MsgPaymentDetails struct {
|
||||
ResultType int `json:"resultTyp"` // 0 good. 1 error
|
||||
PaymentID string `json:"sent"`
|
||||
}
|
||||
|
||||
type MsgPayment struct {
|
||||
Username string `json:"username"`
|
||||
PaymentText string `json:"paymentText"`
|
||||
Details MsgPaymentDetails `json:"result"`
|
||||
}
|
||||
|
||||
type Text struct {
|
||||
Body string `json:"body"`
|
||||
Payments []MsgPayment `json:"payments"`
|
||||
ReplyTo int `json:"replyTo"`
|
||||
}
|
||||
|
||||
type Content struct {
|
||||
Type string `json:"type"`
|
||||
Text Text `json:"text"`
|
||||
}
|
||||
|
||||
type Message struct {
|
||||
Content Content `json:"content"`
|
||||
Sender Sender `json:"sender"`
|
||||
Channel Channel `json:"channel"`
|
||||
ConversationID string `json:"conversation_id"`
|
||||
MsgID int `json:"id"`
|
||||
}
|
||||
|
||||
type SendResult struct {
|
||||
MsgID int `json:"id"`
|
||||
Convs []chat1.ConvSummary `json:"conversations"`
|
||||
}
|
||||
|
||||
type SendResponse struct {
|
||||
Result SendResult `json:"result"`
|
||||
}
|
||||
|
||||
type TypeHolder struct {
|
||||
Type string `json:"type"`
|
||||
}
|
||||
|
||||
type MessageHolder struct {
|
||||
Msg Message `json:"msg"`
|
||||
Source string `json:"source"`
|
||||
}
|
||||
|
||||
type ThreadResult struct {
|
||||
Messages []MessageHolder `json:"messages"`
|
||||
}
|
||||
|
||||
type Thread struct {
|
||||
Result ThreadResult `json:"result"`
|
||||
}
|
||||
|
||||
type CommandExtendedDescription struct {
|
||||
Title string `json:"title"`
|
||||
DesktopBody string `json:"desktop_body"`
|
||||
MobileBody string `json:"mobile_body"`
|
||||
}
|
||||
|
||||
type Command struct {
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description"`
|
||||
Usage string `json:"usage"`
|
||||
ExtendedDescription *CommandExtendedDescription `json:"extended_description,omitempty"`
|
||||
}
|
||||
|
||||
type CommandsAdvertisement struct {
|
||||
Typ string `json:"type"`
|
||||
Commands []Command
|
||||
TeamName string `json:"team_name,omitempty"`
|
||||
}
|
||||
|
||||
type Advertisement struct {
|
||||
Alias string `json:"alias,omitempty"`
|
||||
Advertisements []CommandsAdvertisement
|
||||
}
|
||||
|
||||
type Error struct {
|
||||
Code int `json:"code"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
type JoinChannel struct {
|
||||
Error Error `json:"error"`
|
||||
Result JoinChannelResult `json:"result"`
|
||||
}
|
||||
|
||||
type JoinChannelResult struct {
|
||||
RateLimit []RateLimit `json:"ratelimits"`
|
||||
}
|
||||
|
||||
type LeaveChannel struct {
|
||||
Error Error `json:"error"`
|
||||
Result LeaveChannelResult `json:"result"`
|
||||
}
|
||||
|
||||
type LeaveChannelResult struct {
|
||||
RateLimit []RateLimit `json:"ratelimits"`
|
||||
}
|
||||
|
||||
type RateLimit struct {
|
||||
Tank string `json:"tank"`
|
||||
Capacity int `json:"capacity"`
|
||||
Reset int `json:"reset"`
|
||||
Gas int `json:"gas"`
|
||||
Result chat1.SendRes `json:"result"`
|
||||
Error *Error `json:"error,omitempty"`
|
||||
}
|
||||
|
933
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/api.go
generated
vendored
Normal file
933
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/api.go
generated
vendored
Normal file
@@ -0,0 +1,933 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/chat1/api.avdl
|
||||
|
||||
package chat1
|
||||
|
||||
import (
|
||||
gregor1 "github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1"
|
||||
keybase1 "github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1"
|
||||
)
|
||||
|
||||
type ConvIDStr string
|
||||
|
||||
func (o ConvIDStr) DeepCopy() ConvIDStr {
|
||||
return o
|
||||
}
|
||||
|
||||
type TLFIDStr string
|
||||
|
||||
func (o TLFIDStr) DeepCopy() TLFIDStr {
|
||||
return o
|
||||
}
|
||||
|
||||
type FlipGameIDStr string
|
||||
|
||||
func (o FlipGameIDStr) DeepCopy() FlipGameIDStr {
|
||||
return o
|
||||
}
|
||||
|
||||
type RateLimitRes struct {
|
||||
Tank string `codec:"tank" json:"tank"`
|
||||
Capacity int `codec:"capacity" json:"capacity"`
|
||||
Reset int `codec:"reset" json:"reset"`
|
||||
Gas int `codec:"gas" json:"gas"`
|
||||
}
|
||||
|
||||
func (o RateLimitRes) DeepCopy() RateLimitRes {
|
||||
return RateLimitRes{
|
||||
Tank: o.Tank,
|
||||
Capacity: o.Capacity,
|
||||
Reset: o.Reset,
|
||||
Gas: o.Gas,
|
||||
}
|
||||
}
|
||||
|
||||
// A Keybase chat channel. This can be a channel in a team, or just an informal channel between two users.
|
||||
// name: the name of the team or comma-separated list of participants
|
||||
type ChatChannel struct {
|
||||
Name string `codec:"name" json:"name"`
|
||||
Public bool `codec:"public,omitempty" json:"public,omitempty"`
|
||||
MembersType string `codec:"membersType,omitempty" json:"members_type,omitempty"`
|
||||
TopicType string `codec:"topicType,omitempty" json:"topic_type,omitempty"`
|
||||
TopicName string `codec:"topicName,omitempty" json:"topic_name,omitempty"`
|
||||
}
|
||||
|
||||
func (o ChatChannel) DeepCopy() ChatChannel {
|
||||
return ChatChannel{
|
||||
Name: o.Name,
|
||||
Public: o.Public,
|
||||
MembersType: o.MembersType,
|
||||
TopicType: o.TopicType,
|
||||
TopicName: o.TopicName,
|
||||
}
|
||||
}
|
||||
|
||||
// A chat message. The content goes in the `body` property!
|
||||
type ChatMessage struct {
|
||||
Body string `codec:"body" json:"body"`
|
||||
}
|
||||
|
||||
func (o ChatMessage) DeepCopy() ChatMessage {
|
||||
return ChatMessage{
|
||||
Body: o.Body,
|
||||
}
|
||||
}
|
||||
|
||||
type MsgSender struct {
|
||||
Uid keybase1.UID `codec:"uid" json:"uid"`
|
||||
Username string `codec:"username,omitempty" json:"username,omitempty"`
|
||||
DeviceID keybase1.DeviceID `codec:"deviceID" json:"device_id"`
|
||||
DeviceName string `codec:"deviceName,omitempty" json:"device_name,omitempty"`
|
||||
}
|
||||
|
||||
func (o MsgSender) DeepCopy() MsgSender {
|
||||
return MsgSender{
|
||||
Uid: o.Uid.DeepCopy(),
|
||||
Username: o.Username,
|
||||
DeviceID: o.DeviceID.DeepCopy(),
|
||||
DeviceName: o.DeviceName,
|
||||
}
|
||||
}
|
||||
|
||||
type MsgBotInfo struct {
|
||||
BotUID keybase1.UID `codec:"botUID" json:"bot_uid"`
|
||||
BotUsername string `codec:"botUsername,omitempty" json:"bot_username,omitempty"`
|
||||
}
|
||||
|
||||
func (o MsgBotInfo) DeepCopy() MsgBotInfo {
|
||||
return MsgBotInfo{
|
||||
BotUID: o.BotUID.DeepCopy(),
|
||||
BotUsername: o.BotUsername,
|
||||
}
|
||||
}
|
||||
|
||||
type MsgFlipContent struct {
|
||||
Text string `codec:"text" json:"text"`
|
||||
GameID FlipGameIDStr `codec:"gameID" json:"game_id"`
|
||||
FlipConvID ConvIDStr `codec:"flipConvID" json:"flip_conv_id"`
|
||||
UserMentions []KnownUserMention `codec:"userMentions" json:"user_mentions"`
|
||||
TeamMentions []KnownTeamMention `codec:"teamMentions" json:"team_mentions"`
|
||||
}
|
||||
|
||||
func (o MsgFlipContent) DeepCopy() MsgFlipContent {
|
||||
return MsgFlipContent{
|
||||
Text: o.Text,
|
||||
GameID: o.GameID.DeepCopy(),
|
||||
FlipConvID: o.FlipConvID.DeepCopy(),
|
||||
UserMentions: (func(x []KnownUserMention) []KnownUserMention {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]KnownUserMention, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.UserMentions),
|
||||
TeamMentions: (func(x []KnownTeamMention) []KnownTeamMention {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]KnownTeamMention, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.TeamMentions),
|
||||
}
|
||||
}
|
||||
|
||||
type MsgContent struct {
|
||||
TypeName string `codec:"typeName" json:"type"`
|
||||
Text *MessageText `codec:"text,omitempty" json:"text,omitempty"`
|
||||
Attachment *MessageAttachment `codec:"attachment,omitempty" json:"attachment,omitempty"`
|
||||
Edit *MessageEdit `codec:"edit,omitempty" json:"edit,omitempty"`
|
||||
Reaction *MessageReaction `codec:"reaction,omitempty" json:"reaction,omitempty"`
|
||||
Delete *MessageDelete `codec:"delete,omitempty" json:"delete,omitempty"`
|
||||
Metadata *MessageConversationMetadata `codec:"metadata,omitempty" json:"metadata,omitempty"`
|
||||
Headline *MessageHeadline `codec:"headline,omitempty" json:"headline,omitempty"`
|
||||
AttachmentUploaded *MessageAttachmentUploaded `codec:"attachmentUploaded,omitempty" json:"attachment_uploaded,omitempty"`
|
||||
System *MessageSystem `codec:"system,omitempty" json:"system,omitempty"`
|
||||
SendPayment *MessageSendPayment `codec:"sendPayment,omitempty" json:"send_payment,omitempty"`
|
||||
RequestPayment *MessageRequestPayment `codec:"requestPayment,omitempty" json:"request_payment,omitempty"`
|
||||
Unfurl *MessageUnfurl `codec:"unfurl,omitempty" json:"unfurl,omitempty"`
|
||||
Flip *MsgFlipContent `codec:"flip,omitempty" json:"flip,omitempty"`
|
||||
}
|
||||
|
||||
func (o MsgContent) DeepCopy() MsgContent {
|
||||
return MsgContent{
|
||||
TypeName: o.TypeName,
|
||||
Text: (func(x *MessageText) *MessageText {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Text),
|
||||
Attachment: (func(x *MessageAttachment) *MessageAttachment {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Attachment),
|
||||
Edit: (func(x *MessageEdit) *MessageEdit {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Edit),
|
||||
Reaction: (func(x *MessageReaction) *MessageReaction {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Reaction),
|
||||
Delete: (func(x *MessageDelete) *MessageDelete {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Delete),
|
||||
Metadata: (func(x *MessageConversationMetadata) *MessageConversationMetadata {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Metadata),
|
||||
Headline: (func(x *MessageHeadline) *MessageHeadline {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Headline),
|
||||
AttachmentUploaded: (func(x *MessageAttachmentUploaded) *MessageAttachmentUploaded {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.AttachmentUploaded),
|
||||
System: (func(x *MessageSystem) *MessageSystem {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.System),
|
||||
SendPayment: (func(x *MessageSendPayment) *MessageSendPayment {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.SendPayment),
|
||||
RequestPayment: (func(x *MessageRequestPayment) *MessageRequestPayment {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.RequestPayment),
|
||||
Unfurl: (func(x *MessageUnfurl) *MessageUnfurl {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Unfurl),
|
||||
Flip: (func(x *MsgFlipContent) *MsgFlipContent {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Flip),
|
||||
}
|
||||
}
|
||||
|
||||
type MsgSummary struct {
|
||||
Id MessageID `codec:"id" json:"id"`
|
||||
ConvID ConvIDStr `codec:"convID" json:"conversation_id"`
|
||||
Channel ChatChannel `codec:"channel" json:"channel"`
|
||||
Sender MsgSender `codec:"sender" json:"sender"`
|
||||
SentAt int64 `codec:"sentAt" json:"sent_at"`
|
||||
SentAtMs int64 `codec:"sentAtMs" json:"sent_at_ms"`
|
||||
Content MsgContent `codec:"content" json:"content"`
|
||||
Prev []MessagePreviousPointer `codec:"prev" json:"prev"`
|
||||
Unread bool `codec:"unread" json:"unread"`
|
||||
RevokedDevice bool `codec:"revokedDevice,omitempty" json:"revoked_device,omitempty"`
|
||||
Offline bool `codec:"offline,omitempty" json:"offline,omitempty"`
|
||||
KbfsEncrypted bool `codec:"kbfsEncrypted,omitempty" json:"kbfs_encrypted,omitempty"`
|
||||
IsEphemeral bool `codec:"isEphemeral,omitempty" json:"is_ephemeral,omitempty"`
|
||||
IsEphemeralExpired bool `codec:"isEphemeralExpired,omitempty" json:"is_ephemeral_expired,omitempty"`
|
||||
ETime gregor1.Time `codec:"eTime,omitempty" json:"e_time,omitempty"`
|
||||
Reactions *ReactionMap `codec:"reactions,omitempty" json:"reactions,omitempty"`
|
||||
HasPairwiseMacs bool `codec:"hasPairwiseMacs,omitempty" json:"has_pairwise_macs,omitempty"`
|
||||
AtMentionUsernames []string `codec:"atMentionUsernames,omitempty" json:"at_mention_usernames,omitempty"`
|
||||
ChannelMention string `codec:"channelMention,omitempty" json:"channel_mention,omitempty"`
|
||||
ChannelNameMentions []UIChannelNameMention `codec:"channelNameMentions,omitempty" json:"channel_name_mentions,omitempty"`
|
||||
BotInfo *MsgBotInfo `codec:"botInfo,omitempty" json:"bot_info,omitempty"`
|
||||
}
|
||||
|
||||
func (o MsgSummary) DeepCopy() MsgSummary {
|
||||
return MsgSummary{
|
||||
Id: o.Id.DeepCopy(),
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Channel: o.Channel.DeepCopy(),
|
||||
Sender: o.Sender.DeepCopy(),
|
||||
SentAt: o.SentAt,
|
||||
SentAtMs: o.SentAtMs,
|
||||
Content: o.Content.DeepCopy(),
|
||||
Prev: (func(x []MessagePreviousPointer) []MessagePreviousPointer {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]MessagePreviousPointer, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Prev),
|
||||
Unread: o.Unread,
|
||||
RevokedDevice: o.RevokedDevice,
|
||||
Offline: o.Offline,
|
||||
KbfsEncrypted: o.KbfsEncrypted,
|
||||
IsEphemeral: o.IsEphemeral,
|
||||
IsEphemeralExpired: o.IsEphemeralExpired,
|
||||
ETime: o.ETime.DeepCopy(),
|
||||
Reactions: (func(x *ReactionMap) *ReactionMap {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Reactions),
|
||||
HasPairwiseMacs: o.HasPairwiseMacs,
|
||||
AtMentionUsernames: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.AtMentionUsernames),
|
||||
ChannelMention: o.ChannelMention,
|
||||
ChannelNameMentions: (func(x []UIChannelNameMention) []UIChannelNameMention {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]UIChannelNameMention, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.ChannelNameMentions),
|
||||
BotInfo: (func(x *MsgBotInfo) *MsgBotInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.BotInfo),
|
||||
}
|
||||
}
|
||||
|
||||
type Message struct {
|
||||
Msg *MsgSummary `codec:"msg,omitempty" json:"msg,omitempty"`
|
||||
Error *string `codec:"error,omitempty" json:"error,omitempty"`
|
||||
}
|
||||
|
||||
func (o Message) DeepCopy() Message {
|
||||
return Message{
|
||||
Msg: (func(x *MsgSummary) *MsgSummary {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Msg),
|
||||
Error: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.Error),
|
||||
}
|
||||
}
|
||||
|
||||
type Thread struct {
|
||||
Messages []Message `codec:"messages" json:"messages"`
|
||||
Pagination *Pagination `codec:"pagination,omitempty" json:"pagination,omitempty"`
|
||||
Offline bool `codec:"offline,omitempty" json:"offline,omitempty"`
|
||||
IdentifyFailures []keybase1.TLFIdentifyFailure `codec:"identifyFailures,omitempty" json:"identify_failures,omitempty"`
|
||||
RateLimits []RateLimitRes `codec:"rateLimits,omitempty" json:"ratelimits,omitempty"`
|
||||
}
|
||||
|
||||
func (o Thread) DeepCopy() Thread {
|
||||
return Thread{
|
||||
Messages: (func(x []Message) []Message {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]Message, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Messages),
|
||||
Pagination: (func(x *Pagination) *Pagination {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Pagination),
|
||||
Offline: o.Offline,
|
||||
IdentifyFailures: (func(x []keybase1.TLFIdentifyFailure) []keybase1.TLFIdentifyFailure {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]keybase1.TLFIdentifyFailure, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.IdentifyFailures),
|
||||
RateLimits: (func(x []RateLimitRes) []RateLimitRes {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]RateLimitRes, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.RateLimits),
|
||||
}
|
||||
}
|
||||
|
||||
// A chat conversation. This is essentially a chat channel plus some additional metadata.
|
||||
type ConvSummary struct {
|
||||
Id ConvIDStr `codec:"id" json:"id"`
|
||||
Channel ChatChannel `codec:"channel" json:"channel"`
|
||||
IsDefaultConv bool `codec:"isDefaultConv" json:"is_default_conv"`
|
||||
Unread bool `codec:"unread" json:"unread"`
|
||||
ActiveAt int64 `codec:"activeAt" json:"active_at"`
|
||||
ActiveAtMs int64 `codec:"activeAtMs" json:"active_at_ms"`
|
||||
MemberStatus string `codec:"memberStatus" json:"member_status"`
|
||||
ResetUsers []string `codec:"resetUsers,omitempty" json:"reset_users,omitempty"`
|
||||
FinalizeInfo *ConversationFinalizeInfo `codec:"finalizeInfo,omitempty" json:"finalize_info,omitempty"`
|
||||
Supersedes []string `codec:"supersedes,omitempty" json:"supersedes,omitempty"`
|
||||
SupersededBy []string `codec:"supersededBy,omitempty" json:"superseded_by,omitempty"`
|
||||
Error string `codec:"error,omitempty" json:"error,omitempty"`
|
||||
CreatorInfo *ConversationCreatorInfoLocal `codec:"creatorInfo,omitempty" json:"creator_info,omitempty"`
|
||||
}
|
||||
|
||||
func (o ConvSummary) DeepCopy() ConvSummary {
|
||||
return ConvSummary{
|
||||
Id: o.Id.DeepCopy(),
|
||||
Channel: o.Channel.DeepCopy(),
|
||||
IsDefaultConv: o.IsDefaultConv,
|
||||
Unread: o.Unread,
|
||||
ActiveAt: o.ActiveAt,
|
||||
ActiveAtMs: o.ActiveAtMs,
|
||||
MemberStatus: o.MemberStatus,
|
||||
ResetUsers: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.ResetUsers),
|
||||
FinalizeInfo: (func(x *ConversationFinalizeInfo) *ConversationFinalizeInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.FinalizeInfo),
|
||||
Supersedes: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Supersedes),
|
||||
SupersededBy: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.SupersededBy),
|
||||
Error: o.Error,
|
||||
CreatorInfo: (func(x *ConversationCreatorInfoLocal) *ConversationCreatorInfoLocal {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.CreatorInfo),
|
||||
}
|
||||
}
|
||||
|
||||
type ChatList struct {
|
||||
Conversations []ConvSummary `codec:"conversations" json:"conversations"`
|
||||
Offline bool `codec:"offline" json:"offline"`
|
||||
IdentifyFailures []keybase1.TLFIdentifyFailure `codec:"identifyFailures,omitempty" json:"identify_failures,omitempty"`
|
||||
RateLimits []RateLimitRes `codec:"rateLimits,omitempty" json:"ratelimits,omitempty"`
|
||||
}
|
||||
|
||||
func (o ChatList) DeepCopy() ChatList {
|
||||
return ChatList{
|
||||
Conversations: (func(x []ConvSummary) []ConvSummary {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ConvSummary, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Conversations),
|
||||
Offline: o.Offline,
|
||||
IdentifyFailures: (func(x []keybase1.TLFIdentifyFailure) []keybase1.TLFIdentifyFailure {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]keybase1.TLFIdentifyFailure, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.IdentifyFailures),
|
||||
RateLimits: (func(x []RateLimitRes) []RateLimitRes {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]RateLimitRes, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.RateLimits),
|
||||
}
|
||||
}
|
||||
|
||||
type SendRes struct {
|
||||
Message string `codec:"message" json:"message"`
|
||||
MessageID *MessageID `codec:"messageID,omitempty" json:"id,omitempty"`
|
||||
OutboxID *OutboxID `codec:"outboxID,omitempty" json:"outbox_id,omitempty"`
|
||||
IdentifyFailures []keybase1.TLFIdentifyFailure `codec:"identifyFailures,omitempty" json:"identify_failures,omitempty"`
|
||||
RateLimits []RateLimitRes `codec:"rateLimits,omitempty" json:"ratelimits,omitempty"`
|
||||
}
|
||||
|
||||
func (o SendRes) DeepCopy() SendRes {
|
||||
return SendRes{
|
||||
Message: o.Message,
|
||||
MessageID: (func(x *MessageID) *MessageID {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.MessageID),
|
||||
OutboxID: (func(x *OutboxID) *OutboxID {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.OutboxID),
|
||||
IdentifyFailures: (func(x []keybase1.TLFIdentifyFailure) []keybase1.TLFIdentifyFailure {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]keybase1.TLFIdentifyFailure, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.IdentifyFailures),
|
||||
RateLimits: (func(x []RateLimitRes) []RateLimitRes {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]RateLimitRes, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.RateLimits),
|
||||
}
|
||||
}
|
||||
|
||||
type SearchInboxResOutput struct {
|
||||
Results *ChatSearchInboxResults `codec:"results,omitempty" json:"results,omitempty"`
|
||||
IdentifyFailures []keybase1.TLFIdentifyFailure `codec:"identifyFailures,omitempty" json:"identify_failures,omitempty"`
|
||||
RateLimits []RateLimitRes `codec:"rateLimits,omitempty" json:"ratelimits,omitempty"`
|
||||
}
|
||||
|
||||
func (o SearchInboxResOutput) DeepCopy() SearchInboxResOutput {
|
||||
return SearchInboxResOutput{
|
||||
Results: (func(x *ChatSearchInboxResults) *ChatSearchInboxResults {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Results),
|
||||
IdentifyFailures: (func(x []keybase1.TLFIdentifyFailure) []keybase1.TLFIdentifyFailure {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]keybase1.TLFIdentifyFailure, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.IdentifyFailures),
|
||||
RateLimits: (func(x []RateLimitRes) []RateLimitRes {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]RateLimitRes, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.RateLimits),
|
||||
}
|
||||
}
|
||||
|
||||
type RegexpRes struct {
|
||||
Hits []ChatSearchHit `codec:"hits" json:"hits"`
|
||||
IdentifyFailures []keybase1.TLFIdentifyFailure `codec:"identifyFailures,omitempty" json:"identify_failures,omitempty"`
|
||||
RateLimits []RateLimitRes `codec:"rateLimits,omitempty" json:"ratelimits,omitempty"`
|
||||
}
|
||||
|
||||
func (o RegexpRes) DeepCopy() RegexpRes {
|
||||
return RegexpRes{
|
||||
Hits: (func(x []ChatSearchHit) []ChatSearchHit {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ChatSearchHit, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Hits),
|
||||
IdentifyFailures: (func(x []keybase1.TLFIdentifyFailure) []keybase1.TLFIdentifyFailure {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]keybase1.TLFIdentifyFailure, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.IdentifyFailures),
|
||||
RateLimits: (func(x []RateLimitRes) []RateLimitRes {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]RateLimitRes, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.RateLimits),
|
||||
}
|
||||
}
|
||||
|
||||
type NewConvRes struct {
|
||||
Id ConvIDStr `codec:"id" json:"id"`
|
||||
IdentifyFailures []keybase1.TLFIdentifyFailure `codec:"identifyFailures,omitempty" json:"identify_failures,omitempty"`
|
||||
RateLimits []RateLimitRes `codec:"rateLimits,omitempty" json:"ratelimits,omitempty"`
|
||||
}
|
||||
|
||||
func (o NewConvRes) DeepCopy() NewConvRes {
|
||||
return NewConvRes{
|
||||
Id: o.Id.DeepCopy(),
|
||||
IdentifyFailures: (func(x []keybase1.TLFIdentifyFailure) []keybase1.TLFIdentifyFailure {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]keybase1.TLFIdentifyFailure, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.IdentifyFailures),
|
||||
RateLimits: (func(x []RateLimitRes) []RateLimitRes {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]RateLimitRes, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.RateLimits),
|
||||
}
|
||||
}
|
||||
|
||||
type ListCommandsRes struct {
|
||||
Commands []UserBotCommandOutput `codec:"commands" json:"commands"`
|
||||
RateLimits []RateLimitRes `codec:"rateLimits,omitempty" json:"ratelimits,omitempty"`
|
||||
}
|
||||
|
||||
func (o ListCommandsRes) DeepCopy() ListCommandsRes {
|
||||
return ListCommandsRes{
|
||||
Commands: (func(x []UserBotCommandOutput) []UserBotCommandOutput {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]UserBotCommandOutput, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Commands),
|
||||
RateLimits: (func(x []RateLimitRes) []RateLimitRes {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]RateLimitRes, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.RateLimits),
|
||||
}
|
||||
}
|
||||
|
||||
type EmptyRes struct {
|
||||
RateLimits []RateLimitRes `codec:"rateLimits,omitempty" json:"ratelimits,omitempty"`
|
||||
}
|
||||
|
||||
func (o EmptyRes) DeepCopy() EmptyRes {
|
||||
return EmptyRes{
|
||||
RateLimits: (func(x []RateLimitRes) []RateLimitRes {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]RateLimitRes, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.RateLimits),
|
||||
}
|
||||
}
|
||||
|
||||
type MsgNotification struct {
|
||||
Type string `codec:"type" json:"type"`
|
||||
Source string `codec:"source" json:"source"`
|
||||
Msg *MsgSummary `codec:"msg,omitempty" json:"msg,omitempty"`
|
||||
Error *string `codec:"error,omitempty" json:"error,omitempty"`
|
||||
Pagination *UIPagination `codec:"pagination,omitempty" json:"pagination,omitempty"`
|
||||
}
|
||||
|
||||
func (o MsgNotification) DeepCopy() MsgNotification {
|
||||
return MsgNotification{
|
||||
Type: o.Type,
|
||||
Source: o.Source,
|
||||
Msg: (func(x *MsgSummary) *MsgSummary {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Msg),
|
||||
Error: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.Error),
|
||||
Pagination: (func(x *UIPagination) *UIPagination {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Pagination),
|
||||
}
|
||||
}
|
||||
|
||||
type ConvNotification struct {
|
||||
Type string `codec:"type" json:"type"`
|
||||
Conv *ConvSummary `codec:"conv,omitempty" json:"conv,omitempty"`
|
||||
Error *string `codec:"error,omitempty" json:"error,omitempty"`
|
||||
}
|
||||
|
||||
func (o ConvNotification) DeepCopy() ConvNotification {
|
||||
return ConvNotification{
|
||||
Type: o.Type,
|
||||
Conv: (func(x *ConvSummary) *ConvSummary {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Conv),
|
||||
Error: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.Error),
|
||||
}
|
||||
}
|
||||
|
||||
type AdvertiseCommandAPIParam struct {
|
||||
Typ string `codec:"typ" json:"type"`
|
||||
Commands []UserBotCommandInput `codec:"commands" json:"commands"`
|
||||
TeamName string `codec:"teamName,omitempty" json:"team_name,omitempty"`
|
||||
}
|
||||
|
||||
func (o AdvertiseCommandAPIParam) DeepCopy() AdvertiseCommandAPIParam {
|
||||
return AdvertiseCommandAPIParam{
|
||||
Typ: o.Typ,
|
||||
Commands: (func(x []UserBotCommandInput) []UserBotCommandInput {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]UserBotCommandInput, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Commands),
|
||||
TeamName: o.TeamName,
|
||||
}
|
||||
}
|
||||
|
||||
type ResetConvMemberAPI struct {
|
||||
ConversationID ConvIDStr `codec:"conversationID" json:"conversationID"`
|
||||
Username string `codec:"username" json:"username"`
|
||||
}
|
||||
|
||||
func (o ResetConvMemberAPI) DeepCopy() ResetConvMemberAPI {
|
||||
return ResetConvMemberAPI{
|
||||
ConversationID: o.ConversationID.DeepCopy(),
|
||||
Username: o.Username,
|
||||
}
|
||||
}
|
||||
|
||||
type GetResetConvMembersRes struct {
|
||||
Members []ResetConvMemberAPI `codec:"members" json:"members"`
|
||||
RateLimits []RateLimitRes `codec:"rateLimits" json:"rateLimits"`
|
||||
}
|
||||
|
||||
func (o GetResetConvMembersRes) DeepCopy() GetResetConvMembersRes {
|
||||
return GetResetConvMembersRes{
|
||||
Members: (func(x []ResetConvMemberAPI) []ResetConvMemberAPI {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ResetConvMemberAPI, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Members),
|
||||
RateLimits: (func(x []RateLimitRes) []RateLimitRes {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]RateLimitRes, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.RateLimits),
|
||||
}
|
||||
}
|
||||
|
||||
type DeviceInfo struct {
|
||||
DeviceID keybase1.DeviceID `codec:"deviceID" json:"id"`
|
||||
DeviceDescription string `codec:"deviceDescription" json:"description"`
|
||||
DeviceType string `codec:"deviceType" json:"type"`
|
||||
DeviceCtime int64 `codec:"deviceCtime" json:"ctime"`
|
||||
}
|
||||
|
||||
func (o DeviceInfo) DeepCopy() DeviceInfo {
|
||||
return DeviceInfo{
|
||||
DeviceID: o.DeviceID.DeepCopy(),
|
||||
DeviceDescription: o.DeviceDescription,
|
||||
DeviceType: o.DeviceType,
|
||||
DeviceCtime: o.DeviceCtime,
|
||||
}
|
||||
}
|
||||
|
||||
type GetDeviceInfoRes struct {
|
||||
Devices []DeviceInfo `codec:"devices" json:"devices"`
|
||||
}
|
||||
|
||||
func (o GetDeviceInfoRes) DeepCopy() GetDeviceInfoRes {
|
||||
return GetDeviceInfoRes{
|
||||
Devices: (func(x []DeviceInfo) []DeviceInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]DeviceInfo, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Devices),
|
||||
}
|
||||
}
|
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/blocking.go
generated
vendored
Normal file
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/blocking.go
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/chat1/blocking.avdl
|
||||
|
||||
package chat1
|
2874
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/chat_ui.go
generated
vendored
Normal file
2874
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/chat_ui.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
199
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/commands.go
generated
vendored
Normal file
199
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/commands.go
generated
vendored
Normal file
@@ -0,0 +1,199 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/chat1/commands.avdl
|
||||
|
||||
package chat1
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type ConversationCommand struct {
|
||||
Description string `codec:"description" json:"description"`
|
||||
Name string `codec:"name" json:"name"`
|
||||
Usage string `codec:"usage" json:"usage"`
|
||||
HasHelpText bool `codec:"hasHelpText" json:"hasHelpText"`
|
||||
Username *string `codec:"username,omitempty" json:"username,omitempty"`
|
||||
}
|
||||
|
||||
func (o ConversationCommand) DeepCopy() ConversationCommand {
|
||||
return ConversationCommand{
|
||||
Description: o.Description,
|
||||
Name: o.Name,
|
||||
Usage: o.Usage,
|
||||
HasHelpText: o.HasHelpText,
|
||||
Username: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.Username),
|
||||
}
|
||||
}
|
||||
|
||||
type ConversationCommandGroupsTyp int
|
||||
|
||||
const (
|
||||
ConversationCommandGroupsTyp_BUILTIN ConversationCommandGroupsTyp = 0
|
||||
ConversationCommandGroupsTyp_CUSTOM ConversationCommandGroupsTyp = 1
|
||||
ConversationCommandGroupsTyp_NONE ConversationCommandGroupsTyp = 2
|
||||
)
|
||||
|
||||
func (o ConversationCommandGroupsTyp) DeepCopy() ConversationCommandGroupsTyp { return o }
|
||||
|
||||
var ConversationCommandGroupsTypMap = map[string]ConversationCommandGroupsTyp{
|
||||
"BUILTIN": 0,
|
||||
"CUSTOM": 1,
|
||||
"NONE": 2,
|
||||
}
|
||||
|
||||
var ConversationCommandGroupsTypRevMap = map[ConversationCommandGroupsTyp]string{
|
||||
0: "BUILTIN",
|
||||
1: "CUSTOM",
|
||||
2: "NONE",
|
||||
}
|
||||
|
||||
func (e ConversationCommandGroupsTyp) String() string {
|
||||
if v, ok := ConversationCommandGroupsTypRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type ConversationBuiltinCommandTyp int
|
||||
|
||||
const (
|
||||
ConversationBuiltinCommandTyp_NONE ConversationBuiltinCommandTyp = 0
|
||||
ConversationBuiltinCommandTyp_ADHOC ConversationBuiltinCommandTyp = 1
|
||||
ConversationBuiltinCommandTyp_SMALLTEAM ConversationBuiltinCommandTyp = 2
|
||||
ConversationBuiltinCommandTyp_BIGTEAM ConversationBuiltinCommandTyp = 3
|
||||
ConversationBuiltinCommandTyp_BIGTEAMGENERAL ConversationBuiltinCommandTyp = 4
|
||||
)
|
||||
|
||||
func (o ConversationBuiltinCommandTyp) DeepCopy() ConversationBuiltinCommandTyp { return o }
|
||||
|
||||
var ConversationBuiltinCommandTypMap = map[string]ConversationBuiltinCommandTyp{
|
||||
"NONE": 0,
|
||||
"ADHOC": 1,
|
||||
"SMALLTEAM": 2,
|
||||
"BIGTEAM": 3,
|
||||
"BIGTEAMGENERAL": 4,
|
||||
}
|
||||
|
||||
var ConversationBuiltinCommandTypRevMap = map[ConversationBuiltinCommandTyp]string{
|
||||
0: "NONE",
|
||||
1: "ADHOC",
|
||||
2: "SMALLTEAM",
|
||||
3: "BIGTEAM",
|
||||
4: "BIGTEAMGENERAL",
|
||||
}
|
||||
|
||||
func (e ConversationBuiltinCommandTyp) String() string {
|
||||
if v, ok := ConversationBuiltinCommandTypRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type ConversationCommandGroupsCustom struct {
|
||||
Commands []ConversationCommand `codec:"commands" json:"commands"`
|
||||
}
|
||||
|
||||
func (o ConversationCommandGroupsCustom) DeepCopy() ConversationCommandGroupsCustom {
|
||||
return ConversationCommandGroupsCustom{
|
||||
Commands: (func(x []ConversationCommand) []ConversationCommand {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ConversationCommand, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Commands),
|
||||
}
|
||||
}
|
||||
|
||||
type ConversationCommandGroups struct {
|
||||
Typ__ ConversationCommandGroupsTyp `codec:"typ" json:"typ"`
|
||||
Builtin__ *ConversationBuiltinCommandTyp `codec:"builtin,omitempty" json:"builtin,omitempty"`
|
||||
Custom__ *ConversationCommandGroupsCustom `codec:"custom,omitempty" json:"custom,omitempty"`
|
||||
}
|
||||
|
||||
func (o *ConversationCommandGroups) Typ() (ret ConversationCommandGroupsTyp, err error) {
|
||||
switch o.Typ__ {
|
||||
case ConversationCommandGroupsTyp_BUILTIN:
|
||||
if o.Builtin__ == nil {
|
||||
err = errors.New("unexpected nil value for Builtin__")
|
||||
return ret, err
|
||||
}
|
||||
case ConversationCommandGroupsTyp_CUSTOM:
|
||||
if o.Custom__ == nil {
|
||||
err = errors.New("unexpected nil value for Custom__")
|
||||
return ret, err
|
||||
}
|
||||
}
|
||||
return o.Typ__, nil
|
||||
}
|
||||
|
||||
func (o ConversationCommandGroups) Builtin() (res ConversationBuiltinCommandTyp) {
|
||||
if o.Typ__ != ConversationCommandGroupsTyp_BUILTIN {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Builtin__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Builtin__
|
||||
}
|
||||
|
||||
func (o ConversationCommandGroups) Custom() (res ConversationCommandGroupsCustom) {
|
||||
if o.Typ__ != ConversationCommandGroupsTyp_CUSTOM {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Custom__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Custom__
|
||||
}
|
||||
|
||||
func NewConversationCommandGroupsWithBuiltin(v ConversationBuiltinCommandTyp) ConversationCommandGroups {
|
||||
return ConversationCommandGroups{
|
||||
Typ__: ConversationCommandGroupsTyp_BUILTIN,
|
||||
Builtin__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewConversationCommandGroupsWithCustom(v ConversationCommandGroupsCustom) ConversationCommandGroups {
|
||||
return ConversationCommandGroups{
|
||||
Typ__: ConversationCommandGroupsTyp_CUSTOM,
|
||||
Custom__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewConversationCommandGroupsWithNone() ConversationCommandGroups {
|
||||
return ConversationCommandGroups{
|
||||
Typ__: ConversationCommandGroupsTyp_NONE,
|
||||
}
|
||||
}
|
||||
|
||||
func (o ConversationCommandGroups) DeepCopy() ConversationCommandGroups {
|
||||
return ConversationCommandGroups{
|
||||
Typ__: o.Typ__.DeepCopy(),
|
||||
Builtin__: (func(x *ConversationBuiltinCommandTyp) *ConversationBuiltinCommandTyp {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Builtin__),
|
||||
Custom__: (func(x *ConversationCommandGroupsCustom) *ConversationCommandGroupsCustom {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Custom__),
|
||||
}
|
||||
}
|
2473
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/common.go
generated
vendored
Normal file
2473
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/common.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
548
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/gregor.go
generated
vendored
Normal file
548
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/gregor.go
generated
vendored
Normal file
@@ -0,0 +1,548 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/chat1/gregor.avdl
|
||||
|
||||
package chat1
|
||||
|
||||
import (
|
||||
gregor1 "github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1"
|
||||
keybase1 "github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1"
|
||||
)
|
||||
|
||||
type GenericPayload struct {
|
||||
Action string `codec:"Action" json:"Action"`
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
TopicType TopicType `codec:"topicType" json:"topicType"`
|
||||
UnreadUpdate *UnreadUpdate `codec:"unreadUpdate,omitempty" json:"unreadUpdate,omitempty"`
|
||||
}
|
||||
|
||||
func (o GenericPayload) DeepCopy() GenericPayload {
|
||||
return GenericPayload{
|
||||
Action: o.Action,
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
TopicType: o.TopicType.DeepCopy(),
|
||||
UnreadUpdate: (func(x *UnreadUpdate) *UnreadUpdate {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.UnreadUpdate),
|
||||
}
|
||||
}
|
||||
|
||||
type NewConversationPayload struct {
|
||||
Action string `codec:"Action" json:"Action"`
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
TopicType TopicType `codec:"topicType" json:"topicType"`
|
||||
UnreadUpdate *UnreadUpdate `codec:"unreadUpdate,omitempty" json:"unreadUpdate,omitempty"`
|
||||
}
|
||||
|
||||
func (o NewConversationPayload) DeepCopy() NewConversationPayload {
|
||||
return NewConversationPayload{
|
||||
Action: o.Action,
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
TopicType: o.TopicType.DeepCopy(),
|
||||
UnreadUpdate: (func(x *UnreadUpdate) *UnreadUpdate {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.UnreadUpdate),
|
||||
}
|
||||
}
|
||||
|
||||
type NewMessagePayload struct {
|
||||
Action string `codec:"Action" json:"Action"`
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
Message MessageBoxed `codec:"message" json:"message"`
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
TopicType TopicType `codec:"topicType" json:"topicType"`
|
||||
UnreadUpdate *UnreadUpdate `codec:"unreadUpdate,omitempty" json:"unreadUpdate,omitempty"`
|
||||
UntrustedTeamRole keybase1.TeamRole `codec:"untrustedTeamRole" json:"untrustedTeamRole"`
|
||||
MaxMsgs []MessageSummary `codec:"maxMsgs" json:"maxMsgs"`
|
||||
}
|
||||
|
||||
func (o NewMessagePayload) DeepCopy() NewMessagePayload {
|
||||
return NewMessagePayload{
|
||||
Action: o.Action,
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Message: o.Message.DeepCopy(),
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
TopicType: o.TopicType.DeepCopy(),
|
||||
UnreadUpdate: (func(x *UnreadUpdate) *UnreadUpdate {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.UnreadUpdate),
|
||||
UntrustedTeamRole: o.UntrustedTeamRole.DeepCopy(),
|
||||
MaxMsgs: (func(x []MessageSummary) []MessageSummary {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]MessageSummary, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.MaxMsgs),
|
||||
}
|
||||
}
|
||||
|
||||
type ReadMessagePayload struct {
|
||||
Action string `codec:"Action" json:"Action"`
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
MsgID MessageID `codec:"msgID" json:"msgID"`
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
TopicType TopicType `codec:"topicType" json:"topicType"`
|
||||
UnreadUpdate *UnreadUpdate `codec:"unreadUpdate,omitempty" json:"unreadUpdate,omitempty"`
|
||||
}
|
||||
|
||||
func (o ReadMessagePayload) DeepCopy() ReadMessagePayload {
|
||||
return ReadMessagePayload{
|
||||
Action: o.Action,
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
MsgID: o.MsgID.DeepCopy(),
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
TopicType: o.TopicType.DeepCopy(),
|
||||
UnreadUpdate: (func(x *UnreadUpdate) *UnreadUpdate {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.UnreadUpdate),
|
||||
}
|
||||
}
|
||||
|
||||
type SetStatusPayload struct {
|
||||
Action string `codec:"Action" json:"Action"`
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
Status ConversationStatus `codec:"status" json:"status"`
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
TopicType TopicType `codec:"topicType" json:"topicType"`
|
||||
UnreadUpdate *UnreadUpdate `codec:"unreadUpdate,omitempty" json:"unreadUpdate,omitempty"`
|
||||
}
|
||||
|
||||
func (o SetStatusPayload) DeepCopy() SetStatusPayload {
|
||||
return SetStatusPayload{
|
||||
Action: o.Action,
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Status: o.Status.DeepCopy(),
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
TopicType: o.TopicType.DeepCopy(),
|
||||
UnreadUpdate: (func(x *UnreadUpdate) *UnreadUpdate {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.UnreadUpdate),
|
||||
}
|
||||
}
|
||||
|
||||
type TeamTypePayload struct {
|
||||
Action string `codec:"Action" json:"Action"`
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
TeamType TeamType `codec:"teamType" json:"teamType"`
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
TopicType TopicType `codec:"topicType" json:"topicType"`
|
||||
UnreadUpdate *UnreadUpdate `codec:"unreadUpdate,omitempty" json:"unreadUpdate,omitempty"`
|
||||
}
|
||||
|
||||
func (o TeamTypePayload) DeepCopy() TeamTypePayload {
|
||||
return TeamTypePayload{
|
||||
Action: o.Action,
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
TeamType: o.TeamType.DeepCopy(),
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
TopicType: o.TopicType.DeepCopy(),
|
||||
UnreadUpdate: (func(x *UnreadUpdate) *UnreadUpdate {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.UnreadUpdate),
|
||||
}
|
||||
}
|
||||
|
||||
type SetAppNotificationSettingsPayload struct {
|
||||
Action string `codec:"Action" json:"Action"`
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
Settings ConversationNotificationInfo `codec:"settings" json:"settings"`
|
||||
TopicType TopicType `codec:"topicType" json:"topicType"`
|
||||
UnreadUpdate *UnreadUpdate `codec:"unreadUpdate,omitempty" json:"unreadUpdate,omitempty"`
|
||||
}
|
||||
|
||||
func (o SetAppNotificationSettingsPayload) DeepCopy() SetAppNotificationSettingsPayload {
|
||||
return SetAppNotificationSettingsPayload{
|
||||
Action: o.Action,
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
Settings: o.Settings.DeepCopy(),
|
||||
TopicType: o.TopicType.DeepCopy(),
|
||||
UnreadUpdate: (func(x *UnreadUpdate) *UnreadUpdate {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.UnreadUpdate),
|
||||
}
|
||||
}
|
||||
|
||||
type ExpungePayload struct {
|
||||
Action string `codec:"Action" json:"Action"`
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
Expunge Expunge `codec:"expunge" json:"expunge"`
|
||||
MaxMsgs []MessageSummary `codec:"maxMsgs" json:"maxMsgs"`
|
||||
TopicType TopicType `codec:"topicType" json:"topicType"`
|
||||
UnreadUpdate *UnreadUpdate `codec:"unreadUpdate,omitempty" json:"unreadUpdate,omitempty"`
|
||||
}
|
||||
|
||||
func (o ExpungePayload) DeepCopy() ExpungePayload {
|
||||
return ExpungePayload{
|
||||
Action: o.Action,
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
Expunge: o.Expunge.DeepCopy(),
|
||||
MaxMsgs: (func(x []MessageSummary) []MessageSummary {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]MessageSummary, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.MaxMsgs),
|
||||
TopicType: o.TopicType.DeepCopy(),
|
||||
UnreadUpdate: (func(x *UnreadUpdate) *UnreadUpdate {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.UnreadUpdate),
|
||||
}
|
||||
}
|
||||
|
||||
type UnreadUpdate struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
UnreadMessages int `codec:"unreadMessages" json:"unreadMessages"`
|
||||
UnreadNotifyingMessages map[keybase1.DeviceType]int `codec:"unreadNotifyingMessages" json:"unreadNotifyingMessages"`
|
||||
CompatUnreadMessages int `codec:"UnreadMessages" json:"UnreadMessages"`
|
||||
Diff bool `codec:"diff" json:"diff"`
|
||||
}
|
||||
|
||||
func (o UnreadUpdate) DeepCopy() UnreadUpdate {
|
||||
return UnreadUpdate{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
UnreadMessages: o.UnreadMessages,
|
||||
UnreadNotifyingMessages: (func(x map[keybase1.DeviceType]int) map[keybase1.DeviceType]int {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make(map[keybase1.DeviceType]int, len(x))
|
||||
for k, v := range x {
|
||||
kCopy := k.DeepCopy()
|
||||
vCopy := v
|
||||
ret[kCopy] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.UnreadNotifyingMessages),
|
||||
CompatUnreadMessages: o.CompatUnreadMessages,
|
||||
Diff: o.Diff,
|
||||
}
|
||||
}
|
||||
|
||||
type TLFFinalizeUpdate struct {
|
||||
FinalizeInfo ConversationFinalizeInfo `codec:"finalizeInfo" json:"finalizeInfo"`
|
||||
ConvIDs []ConversationID `codec:"convIDs" json:"convIDs"`
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
}
|
||||
|
||||
func (o TLFFinalizeUpdate) DeepCopy() TLFFinalizeUpdate {
|
||||
return TLFFinalizeUpdate{
|
||||
FinalizeInfo: o.FinalizeInfo.DeepCopy(),
|
||||
ConvIDs: (func(x []ConversationID) []ConversationID {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ConversationID, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.ConvIDs),
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type TLFResolveUpdate struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
}
|
||||
|
||||
func (o TLFResolveUpdate) DeepCopy() TLFResolveUpdate {
|
||||
return TLFResolveUpdate{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type RemoteUserTypingUpdate struct {
|
||||
Uid gregor1.UID `codec:"uid" json:"uid"`
|
||||
DeviceID gregor1.DeviceID `codec:"deviceID" json:"deviceID"`
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
Typing bool `codec:"typing" json:"typing"`
|
||||
TeamType TeamType `codec:"t" json:"teamType"`
|
||||
}
|
||||
|
||||
func (o RemoteUserTypingUpdate) DeepCopy() RemoteUserTypingUpdate {
|
||||
return RemoteUserTypingUpdate{
|
||||
Uid: o.Uid.DeepCopy(),
|
||||
DeviceID: o.DeviceID.DeepCopy(),
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Typing: o.Typing,
|
||||
TeamType: o.TeamType.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type TeamMemberRoleUpdate struct {
|
||||
TlfID TLFID `codec:"tlfID" json:"tlfID"`
|
||||
Role keybase1.TeamRole `codec:"role" json:"role"`
|
||||
}
|
||||
|
||||
func (o TeamMemberRoleUpdate) DeepCopy() TeamMemberRoleUpdate {
|
||||
return TeamMemberRoleUpdate{
|
||||
TlfID: o.TlfID.DeepCopy(),
|
||||
Role: o.Role.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type UpdateConversationMembership struct {
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
TeamMemberRoleUpdate *TeamMemberRoleUpdate `codec:"teamMemberRoleUpdate,omitempty" json:"teamMemberRoleUpdate,omitempty"`
|
||||
Joined []ConversationMember `codec:"joined" json:"joined"`
|
||||
Removed []ConversationMember `codec:"removed" json:"removed"`
|
||||
Reset []ConversationMember `codec:"reset" json:"reset"`
|
||||
Previewed []ConversationID `codec:"previewed" json:"previewed"`
|
||||
UnreadUpdate *UnreadUpdate `codec:"unreadUpdate,omitempty" json:"unreadUpdate,omitempty"`
|
||||
UnreadUpdates []UnreadUpdate `codec:"unreadUpdates" json:"unreadUpdates"`
|
||||
}
|
||||
|
||||
func (o UpdateConversationMembership) DeepCopy() UpdateConversationMembership {
|
||||
return UpdateConversationMembership{
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
TeamMemberRoleUpdate: (func(x *TeamMemberRoleUpdate) *TeamMemberRoleUpdate {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.TeamMemberRoleUpdate),
|
||||
Joined: (func(x []ConversationMember) []ConversationMember {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ConversationMember, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Joined),
|
||||
Removed: (func(x []ConversationMember) []ConversationMember {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ConversationMember, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Removed),
|
||||
Reset: (func(x []ConversationMember) []ConversationMember {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ConversationMember, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Reset),
|
||||
Previewed: (func(x []ConversationID) []ConversationID {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ConversationID, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Previewed),
|
||||
UnreadUpdate: (func(x *UnreadUpdate) *UnreadUpdate {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.UnreadUpdate),
|
||||
UnreadUpdates: (func(x []UnreadUpdate) []UnreadUpdate {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]UnreadUpdate, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.UnreadUpdates),
|
||||
}
|
||||
}
|
||||
|
||||
type ConversationUpdate struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
Existence ConversationExistence `codec:"existence" json:"existence"`
|
||||
}
|
||||
|
||||
func (o ConversationUpdate) DeepCopy() ConversationUpdate {
|
||||
return ConversationUpdate{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Existence: o.Existence.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type UpdateConversations struct {
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
ConvUpdates []ConversationUpdate `codec:"convUpdates" json:"convUpdates"`
|
||||
}
|
||||
|
||||
func (o UpdateConversations) DeepCopy() UpdateConversations {
|
||||
return UpdateConversations{
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
ConvUpdates: (func(x []ConversationUpdate) []ConversationUpdate {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ConversationUpdate, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.ConvUpdates),
|
||||
}
|
||||
}
|
||||
|
||||
type TeamChannelUpdate struct {
|
||||
TeamID TLFID `codec:"teamID" json:"teamID"`
|
||||
}
|
||||
|
||||
func (o TeamChannelUpdate) DeepCopy() TeamChannelUpdate {
|
||||
return TeamChannelUpdate{
|
||||
TeamID: o.TeamID.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type SetConvRetentionUpdate struct {
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
Policy RetentionPolicy `codec:"policy" json:"policy"`
|
||||
}
|
||||
|
||||
func (o SetConvRetentionUpdate) DeepCopy() SetConvRetentionUpdate {
|
||||
return SetConvRetentionUpdate{
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Policy: o.Policy.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type SetTeamRetentionUpdate struct {
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
TeamID keybase1.TeamID `codec:"teamID" json:"teamID"`
|
||||
Policy RetentionPolicy `codec:"policy" json:"policy"`
|
||||
}
|
||||
|
||||
func (o SetTeamRetentionUpdate) DeepCopy() SetTeamRetentionUpdate {
|
||||
return SetTeamRetentionUpdate{
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
TeamID: o.TeamID.DeepCopy(),
|
||||
Policy: o.Policy.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type SetConvSettingsUpdate struct {
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
ConvSettings *ConversationSettings `codec:"convSettings,omitempty" json:"convSettings,omitempty"`
|
||||
}
|
||||
|
||||
func (o SetConvSettingsUpdate) DeepCopy() SetConvSettingsUpdate {
|
||||
return SetConvSettingsUpdate{
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
ConvSettings: (func(x *ConversationSettings) *ConversationSettings {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.ConvSettings),
|
||||
}
|
||||
}
|
||||
|
||||
type KBFSImpteamUpgradeUpdate struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
TopicType TopicType `codec:"topicType" json:"topicType"`
|
||||
}
|
||||
|
||||
func (o KBFSImpteamUpgradeUpdate) DeepCopy() KBFSImpteamUpgradeUpdate {
|
||||
return KBFSImpteamUpgradeUpdate{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
TopicType: o.TopicType.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type SubteamRenameUpdate struct {
|
||||
ConvIDs []ConversationID `codec:"convIDs" json:"convIDs"`
|
||||
InboxVers InboxVers `codec:"inboxVers" json:"inboxVers"`
|
||||
}
|
||||
|
||||
func (o SubteamRenameUpdate) DeepCopy() SubteamRenameUpdate {
|
||||
return SubteamRenameUpdate{
|
||||
ConvIDs: (func(x []ConversationID) []ConversationID {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ConversationID, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.ConvIDs),
|
||||
InboxVers: o.InboxVers.DeepCopy(),
|
||||
}
|
||||
}
|
5865
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/local.go
generated
vendored
Normal file
5865
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/local.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
938
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/notify.go
generated
vendored
Normal file
938
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/notify.go
generated
vendored
Normal file
@@ -0,0 +1,938 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/chat1/notify.avdl
|
||||
|
||||
package chat1
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
keybase1 "github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1"
|
||||
)
|
||||
|
||||
type ChatActivitySource int
|
||||
|
||||
const (
|
||||
ChatActivitySource_LOCAL ChatActivitySource = 0
|
||||
ChatActivitySource_REMOTE ChatActivitySource = 1
|
||||
)
|
||||
|
||||
func (o ChatActivitySource) DeepCopy() ChatActivitySource { return o }
|
||||
|
||||
var ChatActivitySourceMap = map[string]ChatActivitySource{
|
||||
"LOCAL": 0,
|
||||
"REMOTE": 1,
|
||||
}
|
||||
|
||||
var ChatActivitySourceRevMap = map[ChatActivitySource]string{
|
||||
0: "LOCAL",
|
||||
1: "REMOTE",
|
||||
}
|
||||
|
||||
func (e ChatActivitySource) String() string {
|
||||
if v, ok := ChatActivitySourceRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type ChatActivityType int
|
||||
|
||||
const (
|
||||
ChatActivityType_RESERVED ChatActivityType = 0
|
||||
ChatActivityType_INCOMING_MESSAGE ChatActivityType = 1
|
||||
ChatActivityType_READ_MESSAGE ChatActivityType = 2
|
||||
ChatActivityType_NEW_CONVERSATION ChatActivityType = 3
|
||||
ChatActivityType_SET_STATUS ChatActivityType = 4
|
||||
ChatActivityType_FAILED_MESSAGE ChatActivityType = 5
|
||||
ChatActivityType_MEMBERS_UPDATE ChatActivityType = 6
|
||||
ChatActivityType_SET_APP_NOTIFICATION_SETTINGS ChatActivityType = 7
|
||||
ChatActivityType_TEAMTYPE ChatActivityType = 8
|
||||
ChatActivityType_EXPUNGE ChatActivityType = 9
|
||||
ChatActivityType_EPHEMERAL_PURGE ChatActivityType = 10
|
||||
ChatActivityType_REACTION_UPDATE ChatActivityType = 11
|
||||
ChatActivityType_MESSAGES_UPDATED ChatActivityType = 12
|
||||
)
|
||||
|
||||
func (o ChatActivityType) DeepCopy() ChatActivityType { return o }
|
||||
|
||||
var ChatActivityTypeMap = map[string]ChatActivityType{
|
||||
"RESERVED": 0,
|
||||
"INCOMING_MESSAGE": 1,
|
||||
"READ_MESSAGE": 2,
|
||||
"NEW_CONVERSATION": 3,
|
||||
"SET_STATUS": 4,
|
||||
"FAILED_MESSAGE": 5,
|
||||
"MEMBERS_UPDATE": 6,
|
||||
"SET_APP_NOTIFICATION_SETTINGS": 7,
|
||||
"TEAMTYPE": 8,
|
||||
"EXPUNGE": 9,
|
||||
"EPHEMERAL_PURGE": 10,
|
||||
"REACTION_UPDATE": 11,
|
||||
"MESSAGES_UPDATED": 12,
|
||||
}
|
||||
|
||||
var ChatActivityTypeRevMap = map[ChatActivityType]string{
|
||||
0: "RESERVED",
|
||||
1: "INCOMING_MESSAGE",
|
||||
2: "READ_MESSAGE",
|
||||
3: "NEW_CONVERSATION",
|
||||
4: "SET_STATUS",
|
||||
5: "FAILED_MESSAGE",
|
||||
6: "MEMBERS_UPDATE",
|
||||
7: "SET_APP_NOTIFICATION_SETTINGS",
|
||||
8: "TEAMTYPE",
|
||||
9: "EXPUNGE",
|
||||
10: "EPHEMERAL_PURGE",
|
||||
11: "REACTION_UPDATE",
|
||||
12: "MESSAGES_UPDATED",
|
||||
}
|
||||
|
||||
func (e ChatActivityType) String() string {
|
||||
if v, ok := ChatActivityTypeRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type IncomingMessage struct {
|
||||
Message UIMessage `codec:"message" json:"message"`
|
||||
ModifiedMessage *UIMessage `codec:"modifiedMessage,omitempty" json:"modifiedMessage,omitempty"`
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
DisplayDesktopNotification bool `codec:"displayDesktopNotification" json:"displayDesktopNotification"`
|
||||
DesktopNotificationSnippet string `codec:"desktopNotificationSnippet" json:"desktopNotificationSnippet"`
|
||||
Conv *InboxUIItem `codec:"conv,omitempty" json:"conv,omitempty"`
|
||||
Pagination *UIPagination `codec:"pagination,omitempty" json:"pagination,omitempty"`
|
||||
}
|
||||
|
||||
func (o IncomingMessage) DeepCopy() IncomingMessage {
|
||||
return IncomingMessage{
|
||||
Message: o.Message.DeepCopy(),
|
||||
ModifiedMessage: (func(x *UIMessage) *UIMessage {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.ModifiedMessage),
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
DisplayDesktopNotification: o.DisplayDesktopNotification,
|
||||
DesktopNotificationSnippet: o.DesktopNotificationSnippet,
|
||||
Conv: (func(x *InboxUIItem) *InboxUIItem {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Conv),
|
||||
Pagination: (func(x *UIPagination) *UIPagination {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Pagination),
|
||||
}
|
||||
}
|
||||
|
||||
type ReadMessageInfo struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
MsgID MessageID `codec:"msgID" json:"msgID"`
|
||||
Conv *InboxUIItem `codec:"conv,omitempty" json:"conv,omitempty"`
|
||||
}
|
||||
|
||||
func (o ReadMessageInfo) DeepCopy() ReadMessageInfo {
|
||||
return ReadMessageInfo{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
MsgID: o.MsgID.DeepCopy(),
|
||||
Conv: (func(x *InboxUIItem) *InboxUIItem {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Conv),
|
||||
}
|
||||
}
|
||||
|
||||
type NewConversationInfo struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
Conv *InboxUIItem `codec:"conv,omitempty" json:"conv,omitempty"`
|
||||
}
|
||||
|
||||
func (o NewConversationInfo) DeepCopy() NewConversationInfo {
|
||||
return NewConversationInfo{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Conv: (func(x *InboxUIItem) *InboxUIItem {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Conv),
|
||||
}
|
||||
}
|
||||
|
||||
type SetStatusInfo struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
Status ConversationStatus `codec:"status" json:"status"`
|
||||
Conv *InboxUIItem `codec:"conv,omitempty" json:"conv,omitempty"`
|
||||
}
|
||||
|
||||
func (o SetStatusInfo) DeepCopy() SetStatusInfo {
|
||||
return SetStatusInfo{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Status: o.Status.DeepCopy(),
|
||||
Conv: (func(x *InboxUIItem) *InboxUIItem {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Conv),
|
||||
}
|
||||
}
|
||||
|
||||
type SetAppNotificationSettingsInfo struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
Settings ConversationNotificationInfo `codec:"settings" json:"settings"`
|
||||
}
|
||||
|
||||
func (o SetAppNotificationSettingsInfo) DeepCopy() SetAppNotificationSettingsInfo {
|
||||
return SetAppNotificationSettingsInfo{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Settings: o.Settings.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type FailedMessageInfo struct {
|
||||
OutboxRecords []OutboxRecord `codec:"outboxRecords" json:"outboxRecords"`
|
||||
IsEphemeralPurge bool `codec:"isEphemeralPurge" json:"isEphemeralPurge"`
|
||||
Conv *InboxUIItem `codec:"conv,omitempty" json:"conv,omitempty"`
|
||||
}
|
||||
|
||||
func (o FailedMessageInfo) DeepCopy() FailedMessageInfo {
|
||||
return FailedMessageInfo{
|
||||
OutboxRecords: (func(x []OutboxRecord) []OutboxRecord {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]OutboxRecord, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.OutboxRecords),
|
||||
IsEphemeralPurge: o.IsEphemeralPurge,
|
||||
Conv: (func(x *InboxUIItem) *InboxUIItem {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Conv),
|
||||
}
|
||||
}
|
||||
|
||||
type MemberInfo struct {
|
||||
Member string `codec:"member" json:"member"`
|
||||
Status ConversationMemberStatus `codec:"status" json:"status"`
|
||||
}
|
||||
|
||||
func (o MemberInfo) DeepCopy() MemberInfo {
|
||||
return MemberInfo{
|
||||
Member: o.Member,
|
||||
Status: o.Status.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type MembersUpdateInfo struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
Members []MemberInfo `codec:"members" json:"members"`
|
||||
}
|
||||
|
||||
func (o MembersUpdateInfo) DeepCopy() MembersUpdateInfo {
|
||||
return MembersUpdateInfo{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Members: (func(x []MemberInfo) []MemberInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]MemberInfo, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Members),
|
||||
}
|
||||
}
|
||||
|
||||
type TeamTypeInfo struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
TeamType TeamType `codec:"teamType" json:"teamType"`
|
||||
Conv *InboxUIItem `codec:"conv,omitempty" json:"conv,omitempty"`
|
||||
}
|
||||
|
||||
func (o TeamTypeInfo) DeepCopy() TeamTypeInfo {
|
||||
return TeamTypeInfo{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
TeamType: o.TeamType.DeepCopy(),
|
||||
Conv: (func(x *InboxUIItem) *InboxUIItem {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Conv),
|
||||
}
|
||||
}
|
||||
|
||||
type ExpungeInfo struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
Expunge Expunge `codec:"expunge" json:"expunge"`
|
||||
}
|
||||
|
||||
func (o ExpungeInfo) DeepCopy() ExpungeInfo {
|
||||
return ExpungeInfo{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Expunge: o.Expunge.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type EphemeralPurgeNotifInfo struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
Msgs []UIMessage `codec:"msgs" json:"msgs"`
|
||||
}
|
||||
|
||||
func (o EphemeralPurgeNotifInfo) DeepCopy() EphemeralPurgeNotifInfo {
|
||||
return EphemeralPurgeNotifInfo{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Msgs: (func(x []UIMessage) []UIMessage {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]UIMessage, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Msgs),
|
||||
}
|
||||
}
|
||||
|
||||
type ReactionUpdate struct {
|
||||
Reactions ReactionMap `codec:"reactions" json:"reactions"`
|
||||
TargetMsgID MessageID `codec:"targetMsgID" json:"targetMsgID"`
|
||||
}
|
||||
|
||||
func (o ReactionUpdate) DeepCopy() ReactionUpdate {
|
||||
return ReactionUpdate{
|
||||
Reactions: o.Reactions.DeepCopy(),
|
||||
TargetMsgID: o.TargetMsgID.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type ReactionUpdateNotif struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
UserReacjis keybase1.UserReacjis `codec:"userReacjis" json:"userReacjis"`
|
||||
ReactionUpdates []ReactionUpdate `codec:"reactionUpdates" json:"reactionUpdates"`
|
||||
}
|
||||
|
||||
func (o ReactionUpdateNotif) DeepCopy() ReactionUpdateNotif {
|
||||
return ReactionUpdateNotif{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
UserReacjis: o.UserReacjis.DeepCopy(),
|
||||
ReactionUpdates: (func(x []ReactionUpdate) []ReactionUpdate {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ReactionUpdate, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.ReactionUpdates),
|
||||
}
|
||||
}
|
||||
|
||||
type MessagesUpdated struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
Updates []UIMessage `codec:"updates" json:"updates"`
|
||||
}
|
||||
|
||||
func (o MessagesUpdated) DeepCopy() MessagesUpdated {
|
||||
return MessagesUpdated{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Updates: (func(x []UIMessage) []UIMessage {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]UIMessage, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Updates),
|
||||
}
|
||||
}
|
||||
|
||||
type ChatActivity struct {
|
||||
ActivityType__ ChatActivityType `codec:"activityType" json:"activityType"`
|
||||
IncomingMessage__ *IncomingMessage `codec:"incomingMessage,omitempty" json:"incomingMessage,omitempty"`
|
||||
ReadMessage__ *ReadMessageInfo `codec:"readMessage,omitempty" json:"readMessage,omitempty"`
|
||||
NewConversation__ *NewConversationInfo `codec:"newConversation,omitempty" json:"newConversation,omitempty"`
|
||||
SetStatus__ *SetStatusInfo `codec:"setStatus,omitempty" json:"setStatus,omitempty"`
|
||||
FailedMessage__ *FailedMessageInfo `codec:"failedMessage,omitempty" json:"failedMessage,omitempty"`
|
||||
MembersUpdate__ *MembersUpdateInfo `codec:"membersUpdate,omitempty" json:"membersUpdate,omitempty"`
|
||||
SetAppNotificationSettings__ *SetAppNotificationSettingsInfo `codec:"setAppNotificationSettings,omitempty" json:"setAppNotificationSettings,omitempty"`
|
||||
Teamtype__ *TeamTypeInfo `codec:"teamtype,omitempty" json:"teamtype,omitempty"`
|
||||
Expunge__ *ExpungeInfo `codec:"expunge,omitempty" json:"expunge,omitempty"`
|
||||
EphemeralPurge__ *EphemeralPurgeNotifInfo `codec:"ephemeralPurge,omitempty" json:"ephemeralPurge,omitempty"`
|
||||
ReactionUpdate__ *ReactionUpdateNotif `codec:"reactionUpdate,omitempty" json:"reactionUpdate,omitempty"`
|
||||
MessagesUpdated__ *MessagesUpdated `codec:"messagesUpdated,omitempty" json:"messagesUpdated,omitempty"`
|
||||
}
|
||||
|
||||
func (o *ChatActivity) ActivityType() (ret ChatActivityType, err error) {
|
||||
switch o.ActivityType__ {
|
||||
case ChatActivityType_INCOMING_MESSAGE:
|
||||
if o.IncomingMessage__ == nil {
|
||||
err = errors.New("unexpected nil value for IncomingMessage__")
|
||||
return ret, err
|
||||
}
|
||||
case ChatActivityType_READ_MESSAGE:
|
||||
if o.ReadMessage__ == nil {
|
||||
err = errors.New("unexpected nil value for ReadMessage__")
|
||||
return ret, err
|
||||
}
|
||||
case ChatActivityType_NEW_CONVERSATION:
|
||||
if o.NewConversation__ == nil {
|
||||
err = errors.New("unexpected nil value for NewConversation__")
|
||||
return ret, err
|
||||
}
|
||||
case ChatActivityType_SET_STATUS:
|
||||
if o.SetStatus__ == nil {
|
||||
err = errors.New("unexpected nil value for SetStatus__")
|
||||
return ret, err
|
||||
}
|
||||
case ChatActivityType_FAILED_MESSAGE:
|
||||
if o.FailedMessage__ == nil {
|
||||
err = errors.New("unexpected nil value for FailedMessage__")
|
||||
return ret, err
|
||||
}
|
||||
case ChatActivityType_MEMBERS_UPDATE:
|
||||
if o.MembersUpdate__ == nil {
|
||||
err = errors.New("unexpected nil value for MembersUpdate__")
|
||||
return ret, err
|
||||
}
|
||||
case ChatActivityType_SET_APP_NOTIFICATION_SETTINGS:
|
||||
if o.SetAppNotificationSettings__ == nil {
|
||||
err = errors.New("unexpected nil value for SetAppNotificationSettings__")
|
||||
return ret, err
|
||||
}
|
||||
case ChatActivityType_TEAMTYPE:
|
||||
if o.Teamtype__ == nil {
|
||||
err = errors.New("unexpected nil value for Teamtype__")
|
||||
return ret, err
|
||||
}
|
||||
case ChatActivityType_EXPUNGE:
|
||||
if o.Expunge__ == nil {
|
||||
err = errors.New("unexpected nil value for Expunge__")
|
||||
return ret, err
|
||||
}
|
||||
case ChatActivityType_EPHEMERAL_PURGE:
|
||||
if o.EphemeralPurge__ == nil {
|
||||
err = errors.New("unexpected nil value for EphemeralPurge__")
|
||||
return ret, err
|
||||
}
|
||||
case ChatActivityType_REACTION_UPDATE:
|
||||
if o.ReactionUpdate__ == nil {
|
||||
err = errors.New("unexpected nil value for ReactionUpdate__")
|
||||
return ret, err
|
||||
}
|
||||
case ChatActivityType_MESSAGES_UPDATED:
|
||||
if o.MessagesUpdated__ == nil {
|
||||
err = errors.New("unexpected nil value for MessagesUpdated__")
|
||||
return ret, err
|
||||
}
|
||||
}
|
||||
return o.ActivityType__, nil
|
||||
}
|
||||
|
||||
func (o ChatActivity) IncomingMessage() (res IncomingMessage) {
|
||||
if o.ActivityType__ != ChatActivityType_INCOMING_MESSAGE {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.IncomingMessage__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.IncomingMessage__
|
||||
}
|
||||
|
||||
func (o ChatActivity) ReadMessage() (res ReadMessageInfo) {
|
||||
if o.ActivityType__ != ChatActivityType_READ_MESSAGE {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.ReadMessage__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.ReadMessage__
|
||||
}
|
||||
|
||||
func (o ChatActivity) NewConversation() (res NewConversationInfo) {
|
||||
if o.ActivityType__ != ChatActivityType_NEW_CONVERSATION {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.NewConversation__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.NewConversation__
|
||||
}
|
||||
|
||||
func (o ChatActivity) SetStatus() (res SetStatusInfo) {
|
||||
if o.ActivityType__ != ChatActivityType_SET_STATUS {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.SetStatus__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.SetStatus__
|
||||
}
|
||||
|
||||
func (o ChatActivity) FailedMessage() (res FailedMessageInfo) {
|
||||
if o.ActivityType__ != ChatActivityType_FAILED_MESSAGE {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.FailedMessage__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.FailedMessage__
|
||||
}
|
||||
|
||||
func (o ChatActivity) MembersUpdate() (res MembersUpdateInfo) {
|
||||
if o.ActivityType__ != ChatActivityType_MEMBERS_UPDATE {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.MembersUpdate__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.MembersUpdate__
|
||||
}
|
||||
|
||||
func (o ChatActivity) SetAppNotificationSettings() (res SetAppNotificationSettingsInfo) {
|
||||
if o.ActivityType__ != ChatActivityType_SET_APP_NOTIFICATION_SETTINGS {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.SetAppNotificationSettings__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.SetAppNotificationSettings__
|
||||
}
|
||||
|
||||
func (o ChatActivity) Teamtype() (res TeamTypeInfo) {
|
||||
if o.ActivityType__ != ChatActivityType_TEAMTYPE {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Teamtype__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Teamtype__
|
||||
}
|
||||
|
||||
func (o ChatActivity) Expunge() (res ExpungeInfo) {
|
||||
if o.ActivityType__ != ChatActivityType_EXPUNGE {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Expunge__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Expunge__
|
||||
}
|
||||
|
||||
func (o ChatActivity) EphemeralPurge() (res EphemeralPurgeNotifInfo) {
|
||||
if o.ActivityType__ != ChatActivityType_EPHEMERAL_PURGE {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.EphemeralPurge__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.EphemeralPurge__
|
||||
}
|
||||
|
||||
func (o ChatActivity) ReactionUpdate() (res ReactionUpdateNotif) {
|
||||
if o.ActivityType__ != ChatActivityType_REACTION_UPDATE {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.ReactionUpdate__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.ReactionUpdate__
|
||||
}
|
||||
|
||||
func (o ChatActivity) MessagesUpdated() (res MessagesUpdated) {
|
||||
if o.ActivityType__ != ChatActivityType_MESSAGES_UPDATED {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.MessagesUpdated__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.MessagesUpdated__
|
||||
}
|
||||
|
||||
func NewChatActivityWithIncomingMessage(v IncomingMessage) ChatActivity {
|
||||
return ChatActivity{
|
||||
ActivityType__: ChatActivityType_INCOMING_MESSAGE,
|
||||
IncomingMessage__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewChatActivityWithReadMessage(v ReadMessageInfo) ChatActivity {
|
||||
return ChatActivity{
|
||||
ActivityType__: ChatActivityType_READ_MESSAGE,
|
||||
ReadMessage__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewChatActivityWithNewConversation(v NewConversationInfo) ChatActivity {
|
||||
return ChatActivity{
|
||||
ActivityType__: ChatActivityType_NEW_CONVERSATION,
|
||||
NewConversation__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewChatActivityWithSetStatus(v SetStatusInfo) ChatActivity {
|
||||
return ChatActivity{
|
||||
ActivityType__: ChatActivityType_SET_STATUS,
|
||||
SetStatus__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewChatActivityWithFailedMessage(v FailedMessageInfo) ChatActivity {
|
||||
return ChatActivity{
|
||||
ActivityType__: ChatActivityType_FAILED_MESSAGE,
|
||||
FailedMessage__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewChatActivityWithMembersUpdate(v MembersUpdateInfo) ChatActivity {
|
||||
return ChatActivity{
|
||||
ActivityType__: ChatActivityType_MEMBERS_UPDATE,
|
||||
MembersUpdate__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewChatActivityWithSetAppNotificationSettings(v SetAppNotificationSettingsInfo) ChatActivity {
|
||||
return ChatActivity{
|
||||
ActivityType__: ChatActivityType_SET_APP_NOTIFICATION_SETTINGS,
|
||||
SetAppNotificationSettings__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewChatActivityWithTeamtype(v TeamTypeInfo) ChatActivity {
|
||||
return ChatActivity{
|
||||
ActivityType__: ChatActivityType_TEAMTYPE,
|
||||
Teamtype__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewChatActivityWithExpunge(v ExpungeInfo) ChatActivity {
|
||||
return ChatActivity{
|
||||
ActivityType__: ChatActivityType_EXPUNGE,
|
||||
Expunge__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewChatActivityWithEphemeralPurge(v EphemeralPurgeNotifInfo) ChatActivity {
|
||||
return ChatActivity{
|
||||
ActivityType__: ChatActivityType_EPHEMERAL_PURGE,
|
||||
EphemeralPurge__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewChatActivityWithReactionUpdate(v ReactionUpdateNotif) ChatActivity {
|
||||
return ChatActivity{
|
||||
ActivityType__: ChatActivityType_REACTION_UPDATE,
|
||||
ReactionUpdate__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewChatActivityWithMessagesUpdated(v MessagesUpdated) ChatActivity {
|
||||
return ChatActivity{
|
||||
ActivityType__: ChatActivityType_MESSAGES_UPDATED,
|
||||
MessagesUpdated__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func (o ChatActivity) DeepCopy() ChatActivity {
|
||||
return ChatActivity{
|
||||
ActivityType__: o.ActivityType__.DeepCopy(),
|
||||
IncomingMessage__: (func(x *IncomingMessage) *IncomingMessage {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.IncomingMessage__),
|
||||
ReadMessage__: (func(x *ReadMessageInfo) *ReadMessageInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.ReadMessage__),
|
||||
NewConversation__: (func(x *NewConversationInfo) *NewConversationInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.NewConversation__),
|
||||
SetStatus__: (func(x *SetStatusInfo) *SetStatusInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.SetStatus__),
|
||||
FailedMessage__: (func(x *FailedMessageInfo) *FailedMessageInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.FailedMessage__),
|
||||
MembersUpdate__: (func(x *MembersUpdateInfo) *MembersUpdateInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.MembersUpdate__),
|
||||
SetAppNotificationSettings__: (func(x *SetAppNotificationSettingsInfo) *SetAppNotificationSettingsInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.SetAppNotificationSettings__),
|
||||
Teamtype__: (func(x *TeamTypeInfo) *TeamTypeInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Teamtype__),
|
||||
Expunge__: (func(x *ExpungeInfo) *ExpungeInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Expunge__),
|
||||
EphemeralPurge__: (func(x *EphemeralPurgeNotifInfo) *EphemeralPurgeNotifInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.EphemeralPurge__),
|
||||
ReactionUpdate__: (func(x *ReactionUpdateNotif) *ReactionUpdateNotif {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.ReactionUpdate__),
|
||||
MessagesUpdated__: (func(x *MessagesUpdated) *MessagesUpdated {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.MessagesUpdated__),
|
||||
}
|
||||
}
|
||||
|
||||
type TyperInfo struct {
|
||||
Uid keybase1.UID `codec:"uid" json:"uid"`
|
||||
Username string `codec:"username" json:"username"`
|
||||
DeviceID keybase1.DeviceID `codec:"deviceID" json:"deviceID"`
|
||||
DeviceName string `codec:"deviceName" json:"deviceName"`
|
||||
DeviceType string `codec:"deviceType" json:"deviceType"`
|
||||
}
|
||||
|
||||
func (o TyperInfo) DeepCopy() TyperInfo {
|
||||
return TyperInfo{
|
||||
Uid: o.Uid.DeepCopy(),
|
||||
Username: o.Username,
|
||||
DeviceID: o.DeviceID.DeepCopy(),
|
||||
DeviceName: o.DeviceName,
|
||||
DeviceType: o.DeviceType,
|
||||
}
|
||||
}
|
||||
|
||||
type ConvTypingUpdate struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
Typers []TyperInfo `codec:"typers" json:"typers"`
|
||||
}
|
||||
|
||||
func (o ConvTypingUpdate) DeepCopy() ConvTypingUpdate {
|
||||
return ConvTypingUpdate{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
Typers: (func(x []TyperInfo) []TyperInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]TyperInfo, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Typers),
|
||||
}
|
||||
}
|
||||
|
||||
type StaleUpdateType int
|
||||
|
||||
const (
|
||||
StaleUpdateType_CLEAR StaleUpdateType = 0
|
||||
StaleUpdateType_NEWACTIVITY StaleUpdateType = 1
|
||||
)
|
||||
|
||||
func (o StaleUpdateType) DeepCopy() StaleUpdateType { return o }
|
||||
|
||||
var StaleUpdateTypeMap = map[string]StaleUpdateType{
|
||||
"CLEAR": 0,
|
||||
"NEWACTIVITY": 1,
|
||||
}
|
||||
|
||||
var StaleUpdateTypeRevMap = map[StaleUpdateType]string{
|
||||
0: "CLEAR",
|
||||
1: "NEWACTIVITY",
|
||||
}
|
||||
|
||||
func (e StaleUpdateType) String() string {
|
||||
if v, ok := StaleUpdateTypeRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type ConversationStaleUpdate struct {
|
||||
ConvID ConversationID `codec:"convID" json:"convID"`
|
||||
UpdateType StaleUpdateType `codec:"updateType" json:"updateType"`
|
||||
}
|
||||
|
||||
func (o ConversationStaleUpdate) DeepCopy() ConversationStaleUpdate {
|
||||
return ConversationStaleUpdate{
|
||||
ConvID: o.ConvID.DeepCopy(),
|
||||
UpdateType: o.UpdateType.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type ChatSyncIncrementalConv struct {
|
||||
Conv UnverifiedInboxUIItem `codec:"conv" json:"conv"`
|
||||
ShouldUnbox bool `codec:"shouldUnbox" json:"shouldUnbox"`
|
||||
}
|
||||
|
||||
func (o ChatSyncIncrementalConv) DeepCopy() ChatSyncIncrementalConv {
|
||||
return ChatSyncIncrementalConv{
|
||||
Conv: o.Conv.DeepCopy(),
|
||||
ShouldUnbox: o.ShouldUnbox,
|
||||
}
|
||||
}
|
||||
|
||||
type ChatSyncIncrementalInfo struct {
|
||||
Items []ChatSyncIncrementalConv `codec:"items" json:"items"`
|
||||
Removals []string `codec:"removals" json:"removals"`
|
||||
}
|
||||
|
||||
func (o ChatSyncIncrementalInfo) DeepCopy() ChatSyncIncrementalInfo {
|
||||
return ChatSyncIncrementalInfo{
|
||||
Items: (func(x []ChatSyncIncrementalConv) []ChatSyncIncrementalConv {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ChatSyncIncrementalConv, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Items),
|
||||
Removals: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Removals),
|
||||
}
|
||||
}
|
||||
|
||||
type ChatSyncResult struct {
|
||||
SyncType__ SyncInboxResType `codec:"syncType" json:"syncType"`
|
||||
Incremental__ *ChatSyncIncrementalInfo `codec:"incremental,omitempty" json:"incremental,omitempty"`
|
||||
}
|
||||
|
||||
func (o *ChatSyncResult) SyncType() (ret SyncInboxResType, err error) {
|
||||
switch o.SyncType__ {
|
||||
case SyncInboxResType_INCREMENTAL:
|
||||
if o.Incremental__ == nil {
|
||||
err = errors.New("unexpected nil value for Incremental__")
|
||||
return ret, err
|
||||
}
|
||||
}
|
||||
return o.SyncType__, nil
|
||||
}
|
||||
|
||||
func (o ChatSyncResult) Incremental() (res ChatSyncIncrementalInfo) {
|
||||
if o.SyncType__ != SyncInboxResType_INCREMENTAL {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Incremental__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Incremental__
|
||||
}
|
||||
|
||||
func NewChatSyncResultWithCurrent() ChatSyncResult {
|
||||
return ChatSyncResult{
|
||||
SyncType__: SyncInboxResType_CURRENT,
|
||||
}
|
||||
}
|
||||
|
||||
func NewChatSyncResultWithClear() ChatSyncResult {
|
||||
return ChatSyncResult{
|
||||
SyncType__: SyncInboxResType_CLEAR,
|
||||
}
|
||||
}
|
||||
|
||||
func NewChatSyncResultWithIncremental(v ChatSyncIncrementalInfo) ChatSyncResult {
|
||||
return ChatSyncResult{
|
||||
SyncType__: SyncInboxResType_INCREMENTAL,
|
||||
Incremental__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func (o ChatSyncResult) DeepCopy() ChatSyncResult {
|
||||
return ChatSyncResult{
|
||||
SyncType__: o.SyncType__.DeepCopy(),
|
||||
Incremental__: (func(x *ChatSyncIncrementalInfo) *ChatSyncIncrementalInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Incremental__),
|
||||
}
|
||||
}
|
1250
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/remote.go
generated
vendored
Normal file
1250
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/remote.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
850
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/unfurl.go
generated
vendored
Normal file
850
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/chat1/unfurl.go
generated
vendored
Normal file
@@ -0,0 +1,850 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/chat1/unfurl.avdl
|
||||
|
||||
package chat1
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
gregor1 "github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1"
|
||||
)
|
||||
|
||||
type UnfurlType int
|
||||
|
||||
const (
|
||||
UnfurlType_GENERIC UnfurlType = 0
|
||||
UnfurlType_YOUTUBE UnfurlType = 1
|
||||
UnfurlType_GIPHY UnfurlType = 2
|
||||
UnfurlType_MAPS UnfurlType = 3
|
||||
)
|
||||
|
||||
func (o UnfurlType) DeepCopy() UnfurlType { return o }
|
||||
|
||||
var UnfurlTypeMap = map[string]UnfurlType{
|
||||
"GENERIC": 0,
|
||||
"YOUTUBE": 1,
|
||||
"GIPHY": 2,
|
||||
"MAPS": 3,
|
||||
}
|
||||
|
||||
var UnfurlTypeRevMap = map[UnfurlType]string{
|
||||
0: "GENERIC",
|
||||
1: "YOUTUBE",
|
||||
2: "GIPHY",
|
||||
3: "MAPS",
|
||||
}
|
||||
|
||||
func (e UnfurlType) String() string {
|
||||
if v, ok := UnfurlTypeRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type UnfurlVideo struct {
|
||||
Url string `codec:"url" json:"url"`
|
||||
MimeType string `codec:"mimeType" json:"mimeType"`
|
||||
Height int `codec:"height" json:"height"`
|
||||
Width int `codec:"width" json:"width"`
|
||||
}
|
||||
|
||||
func (o UnfurlVideo) DeepCopy() UnfurlVideo {
|
||||
return UnfurlVideo{
|
||||
Url: o.Url,
|
||||
MimeType: o.MimeType,
|
||||
Height: o.Height,
|
||||
Width: o.Width,
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlGenericRaw struct {
|
||||
Title string `codec:"title" json:"title"`
|
||||
Url string `codec:"url" json:"url"`
|
||||
SiteName string `codec:"siteName" json:"siteName"`
|
||||
FaviconUrl *string `codec:"faviconUrl,omitempty" json:"faviconUrl,omitempty"`
|
||||
ImageUrl *string `codec:"imageUrl,omitempty" json:"imageUrl,omitempty"`
|
||||
Video *UnfurlVideo `codec:"video,omitempty" json:"video,omitempty"`
|
||||
PublishTime *int `codec:"publishTime,omitempty" json:"publishTime,omitempty"`
|
||||
Description *string `codec:"description,omitempty" json:"description,omitempty"`
|
||||
}
|
||||
|
||||
func (o UnfurlGenericRaw) DeepCopy() UnfurlGenericRaw {
|
||||
return UnfurlGenericRaw{
|
||||
Title: o.Title,
|
||||
Url: o.Url,
|
||||
SiteName: o.SiteName,
|
||||
FaviconUrl: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.FaviconUrl),
|
||||
ImageUrl: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.ImageUrl),
|
||||
Video: (func(x *UnfurlVideo) *UnfurlVideo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Video),
|
||||
PublishTime: (func(x *int) *int {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.PublishTime),
|
||||
Description: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.Description),
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlYoutubeRaw struct {
|
||||
}
|
||||
|
||||
func (o UnfurlYoutubeRaw) DeepCopy() UnfurlYoutubeRaw {
|
||||
return UnfurlYoutubeRaw{}
|
||||
}
|
||||
|
||||
type UnfurlGiphyRaw struct {
|
||||
ImageUrl *string `codec:"imageUrl,omitempty" json:"imageUrl,omitempty"`
|
||||
Video *UnfurlVideo `codec:"video,omitempty" json:"video,omitempty"`
|
||||
FaviconUrl *string `codec:"faviconUrl,omitempty" json:"faviconUrl,omitempty"`
|
||||
}
|
||||
|
||||
func (o UnfurlGiphyRaw) DeepCopy() UnfurlGiphyRaw {
|
||||
return UnfurlGiphyRaw{
|
||||
ImageUrl: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.ImageUrl),
|
||||
Video: (func(x *UnfurlVideo) *UnfurlVideo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Video),
|
||||
FaviconUrl: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.FaviconUrl),
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlMapsRaw struct {
|
||||
Title string `codec:"title" json:"title"`
|
||||
Url string `codec:"url" json:"url"`
|
||||
SiteName string `codec:"siteName" json:"siteName"`
|
||||
ImageUrl string `codec:"imageUrl" json:"imageUrl"`
|
||||
HistoryImageUrl *string `codec:"historyImageUrl,omitempty" json:"historyImageUrl,omitempty"`
|
||||
Description string `codec:"description" json:"description"`
|
||||
Coord Coordinate `codec:"coord" json:"coord"`
|
||||
Time gregor1.Time `codec:"time" json:"time"`
|
||||
LiveLocationEndTime *gregor1.Time `codec:"liveLocationEndTime,omitempty" json:"liveLocationEndTime,omitempty"`
|
||||
LiveLocationDone bool `codec:"liveLocationDone" json:"liveLocationDone"`
|
||||
}
|
||||
|
||||
func (o UnfurlMapsRaw) DeepCopy() UnfurlMapsRaw {
|
||||
return UnfurlMapsRaw{
|
||||
Title: o.Title,
|
||||
Url: o.Url,
|
||||
SiteName: o.SiteName,
|
||||
ImageUrl: o.ImageUrl,
|
||||
HistoryImageUrl: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.HistoryImageUrl),
|
||||
Description: o.Description,
|
||||
Coord: o.Coord.DeepCopy(),
|
||||
Time: o.Time.DeepCopy(),
|
||||
LiveLocationEndTime: (func(x *gregor1.Time) *gregor1.Time {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.LiveLocationEndTime),
|
||||
LiveLocationDone: o.LiveLocationDone,
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlRaw struct {
|
||||
UnfurlType__ UnfurlType `codec:"unfurlType" json:"unfurlType"`
|
||||
Generic__ *UnfurlGenericRaw `codec:"generic,omitempty" json:"generic,omitempty"`
|
||||
Youtube__ *UnfurlYoutubeRaw `codec:"youtube,omitempty" json:"youtube,omitempty"`
|
||||
Giphy__ *UnfurlGiphyRaw `codec:"giphy,omitempty" json:"giphy,omitempty"`
|
||||
Maps__ *UnfurlMapsRaw `codec:"maps,omitempty" json:"maps,omitempty"`
|
||||
}
|
||||
|
||||
func (o *UnfurlRaw) UnfurlType() (ret UnfurlType, err error) {
|
||||
switch o.UnfurlType__ {
|
||||
case UnfurlType_GENERIC:
|
||||
if o.Generic__ == nil {
|
||||
err = errors.New("unexpected nil value for Generic__")
|
||||
return ret, err
|
||||
}
|
||||
case UnfurlType_YOUTUBE:
|
||||
if o.Youtube__ == nil {
|
||||
err = errors.New("unexpected nil value for Youtube__")
|
||||
return ret, err
|
||||
}
|
||||
case UnfurlType_GIPHY:
|
||||
if o.Giphy__ == nil {
|
||||
err = errors.New("unexpected nil value for Giphy__")
|
||||
return ret, err
|
||||
}
|
||||
case UnfurlType_MAPS:
|
||||
if o.Maps__ == nil {
|
||||
err = errors.New("unexpected nil value for Maps__")
|
||||
return ret, err
|
||||
}
|
||||
}
|
||||
return o.UnfurlType__, nil
|
||||
}
|
||||
|
||||
func (o UnfurlRaw) Generic() (res UnfurlGenericRaw) {
|
||||
if o.UnfurlType__ != UnfurlType_GENERIC {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Generic__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Generic__
|
||||
}
|
||||
|
||||
func (o UnfurlRaw) Youtube() (res UnfurlYoutubeRaw) {
|
||||
if o.UnfurlType__ != UnfurlType_YOUTUBE {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Youtube__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Youtube__
|
||||
}
|
||||
|
||||
func (o UnfurlRaw) Giphy() (res UnfurlGiphyRaw) {
|
||||
if o.UnfurlType__ != UnfurlType_GIPHY {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Giphy__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Giphy__
|
||||
}
|
||||
|
||||
func (o UnfurlRaw) Maps() (res UnfurlMapsRaw) {
|
||||
if o.UnfurlType__ != UnfurlType_MAPS {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Maps__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Maps__
|
||||
}
|
||||
|
||||
func NewUnfurlRawWithGeneric(v UnfurlGenericRaw) UnfurlRaw {
|
||||
return UnfurlRaw{
|
||||
UnfurlType__: UnfurlType_GENERIC,
|
||||
Generic__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewUnfurlRawWithYoutube(v UnfurlYoutubeRaw) UnfurlRaw {
|
||||
return UnfurlRaw{
|
||||
UnfurlType__: UnfurlType_YOUTUBE,
|
||||
Youtube__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewUnfurlRawWithGiphy(v UnfurlGiphyRaw) UnfurlRaw {
|
||||
return UnfurlRaw{
|
||||
UnfurlType__: UnfurlType_GIPHY,
|
||||
Giphy__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewUnfurlRawWithMaps(v UnfurlMapsRaw) UnfurlRaw {
|
||||
return UnfurlRaw{
|
||||
UnfurlType__: UnfurlType_MAPS,
|
||||
Maps__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func (o UnfurlRaw) DeepCopy() UnfurlRaw {
|
||||
return UnfurlRaw{
|
||||
UnfurlType__: o.UnfurlType__.DeepCopy(),
|
||||
Generic__: (func(x *UnfurlGenericRaw) *UnfurlGenericRaw {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Generic__),
|
||||
Youtube__: (func(x *UnfurlYoutubeRaw) *UnfurlYoutubeRaw {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Youtube__),
|
||||
Giphy__: (func(x *UnfurlGiphyRaw) *UnfurlGiphyRaw {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Giphy__),
|
||||
Maps__: (func(x *UnfurlMapsRaw) *UnfurlMapsRaw {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Maps__),
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlGenericMapInfo struct {
|
||||
Coord Coordinate `codec:"coord" json:"coord"`
|
||||
Time gregor1.Time `codec:"time" json:"time"`
|
||||
LiveLocationEndTime *gregor1.Time `codec:"liveLocationEndTime,omitempty" json:"liveLocationEndTime,omitempty"`
|
||||
IsLiveLocationDone bool `codec:"isLiveLocationDone" json:"isLiveLocationDone"`
|
||||
}
|
||||
|
||||
func (o UnfurlGenericMapInfo) DeepCopy() UnfurlGenericMapInfo {
|
||||
return UnfurlGenericMapInfo{
|
||||
Coord: o.Coord.DeepCopy(),
|
||||
Time: o.Time.DeepCopy(),
|
||||
LiveLocationEndTime: (func(x *gregor1.Time) *gregor1.Time {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.LiveLocationEndTime),
|
||||
IsLiveLocationDone: o.IsLiveLocationDone,
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlGeneric struct {
|
||||
Title string `codec:"title" json:"title"`
|
||||
Url string `codec:"url" json:"url"`
|
||||
SiteName string `codec:"siteName" json:"siteName"`
|
||||
Favicon *Asset `codec:"favicon,omitempty" json:"favicon,omitempty"`
|
||||
Image *Asset `codec:"image,omitempty" json:"image,omitempty"`
|
||||
PublishTime *int `codec:"publishTime,omitempty" json:"publishTime,omitempty"`
|
||||
Description *string `codec:"description,omitempty" json:"description,omitempty"`
|
||||
MapInfo *UnfurlGenericMapInfo `codec:"mapInfo,omitempty" json:"mapInfo,omitempty"`
|
||||
}
|
||||
|
||||
func (o UnfurlGeneric) DeepCopy() UnfurlGeneric {
|
||||
return UnfurlGeneric{
|
||||
Title: o.Title,
|
||||
Url: o.Url,
|
||||
SiteName: o.SiteName,
|
||||
Favicon: (func(x *Asset) *Asset {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Favicon),
|
||||
Image: (func(x *Asset) *Asset {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Image),
|
||||
PublishTime: (func(x *int) *int {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.PublishTime),
|
||||
Description: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.Description),
|
||||
MapInfo: (func(x *UnfurlGenericMapInfo) *UnfurlGenericMapInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.MapInfo),
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlYoutube struct {
|
||||
}
|
||||
|
||||
func (o UnfurlYoutube) DeepCopy() UnfurlYoutube {
|
||||
return UnfurlYoutube{}
|
||||
}
|
||||
|
||||
type UnfurlGiphy struct {
|
||||
Favicon *Asset `codec:"favicon,omitempty" json:"favicon,omitempty"`
|
||||
Image *Asset `codec:"image,omitempty" json:"image,omitempty"`
|
||||
Video *Asset `codec:"video,omitempty" json:"video,omitempty"`
|
||||
}
|
||||
|
||||
func (o UnfurlGiphy) DeepCopy() UnfurlGiphy {
|
||||
return UnfurlGiphy{
|
||||
Favicon: (func(x *Asset) *Asset {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Favicon),
|
||||
Image: (func(x *Asset) *Asset {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Image),
|
||||
Video: (func(x *Asset) *Asset {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Video),
|
||||
}
|
||||
}
|
||||
|
||||
type Unfurl struct {
|
||||
UnfurlType__ UnfurlType `codec:"unfurlType" json:"unfurlType"`
|
||||
Generic__ *UnfurlGeneric `codec:"generic,omitempty" json:"generic,omitempty"`
|
||||
Youtube__ *UnfurlYoutube `codec:"youtube,omitempty" json:"youtube,omitempty"`
|
||||
Giphy__ *UnfurlGiphy `codec:"giphy,omitempty" json:"giphy,omitempty"`
|
||||
}
|
||||
|
||||
func (o *Unfurl) UnfurlType() (ret UnfurlType, err error) {
|
||||
switch o.UnfurlType__ {
|
||||
case UnfurlType_GENERIC:
|
||||
if o.Generic__ == nil {
|
||||
err = errors.New("unexpected nil value for Generic__")
|
||||
return ret, err
|
||||
}
|
||||
case UnfurlType_YOUTUBE:
|
||||
if o.Youtube__ == nil {
|
||||
err = errors.New("unexpected nil value for Youtube__")
|
||||
return ret, err
|
||||
}
|
||||
case UnfurlType_GIPHY:
|
||||
if o.Giphy__ == nil {
|
||||
err = errors.New("unexpected nil value for Giphy__")
|
||||
return ret, err
|
||||
}
|
||||
}
|
||||
return o.UnfurlType__, nil
|
||||
}
|
||||
|
||||
func (o Unfurl) Generic() (res UnfurlGeneric) {
|
||||
if o.UnfurlType__ != UnfurlType_GENERIC {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Generic__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Generic__
|
||||
}
|
||||
|
||||
func (o Unfurl) Youtube() (res UnfurlYoutube) {
|
||||
if o.UnfurlType__ != UnfurlType_YOUTUBE {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Youtube__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Youtube__
|
||||
}
|
||||
|
||||
func (o Unfurl) Giphy() (res UnfurlGiphy) {
|
||||
if o.UnfurlType__ != UnfurlType_GIPHY {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Giphy__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Giphy__
|
||||
}
|
||||
|
||||
func NewUnfurlWithGeneric(v UnfurlGeneric) Unfurl {
|
||||
return Unfurl{
|
||||
UnfurlType__: UnfurlType_GENERIC,
|
||||
Generic__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewUnfurlWithYoutube(v UnfurlYoutube) Unfurl {
|
||||
return Unfurl{
|
||||
UnfurlType__: UnfurlType_YOUTUBE,
|
||||
Youtube__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewUnfurlWithGiphy(v UnfurlGiphy) Unfurl {
|
||||
return Unfurl{
|
||||
UnfurlType__: UnfurlType_GIPHY,
|
||||
Giphy__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func (o Unfurl) DeepCopy() Unfurl {
|
||||
return Unfurl{
|
||||
UnfurlType__: o.UnfurlType__.DeepCopy(),
|
||||
Generic__: (func(x *UnfurlGeneric) *UnfurlGeneric {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Generic__),
|
||||
Youtube__: (func(x *UnfurlYoutube) *UnfurlYoutube {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Youtube__),
|
||||
Giphy__: (func(x *UnfurlGiphy) *UnfurlGiphy {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Giphy__),
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlResult struct {
|
||||
Unfurl Unfurl `codec:"unfurl" json:"unfurl"`
|
||||
Url string `codec:"url" json:"url"`
|
||||
}
|
||||
|
||||
func (o UnfurlResult) DeepCopy() UnfurlResult {
|
||||
return UnfurlResult{
|
||||
Unfurl: o.Unfurl.DeepCopy(),
|
||||
Url: o.Url,
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlImageDisplay struct {
|
||||
Url string `codec:"url" json:"url"`
|
||||
Height int `codec:"height" json:"height"`
|
||||
Width int `codec:"width" json:"width"`
|
||||
IsVideo bool `codec:"isVideo" json:"isVideo"`
|
||||
}
|
||||
|
||||
func (o UnfurlImageDisplay) DeepCopy() UnfurlImageDisplay {
|
||||
return UnfurlImageDisplay{
|
||||
Url: o.Url,
|
||||
Height: o.Height,
|
||||
Width: o.Width,
|
||||
IsVideo: o.IsVideo,
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlGenericDisplay struct {
|
||||
Title string `codec:"title" json:"title"`
|
||||
Url string `codec:"url" json:"url"`
|
||||
SiteName string `codec:"siteName" json:"siteName"`
|
||||
Favicon *UnfurlImageDisplay `codec:"favicon,omitempty" json:"favicon,omitempty"`
|
||||
Media *UnfurlImageDisplay `codec:"media,omitempty" json:"media,omitempty"`
|
||||
PublishTime *int `codec:"publishTime,omitempty" json:"publishTime,omitempty"`
|
||||
Description *string `codec:"description,omitempty" json:"description,omitempty"`
|
||||
MapInfo *UnfurlGenericMapInfo `codec:"mapInfo,omitempty" json:"mapInfo,omitempty"`
|
||||
}
|
||||
|
||||
func (o UnfurlGenericDisplay) DeepCopy() UnfurlGenericDisplay {
|
||||
return UnfurlGenericDisplay{
|
||||
Title: o.Title,
|
||||
Url: o.Url,
|
||||
SiteName: o.SiteName,
|
||||
Favicon: (func(x *UnfurlImageDisplay) *UnfurlImageDisplay {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Favicon),
|
||||
Media: (func(x *UnfurlImageDisplay) *UnfurlImageDisplay {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Media),
|
||||
PublishTime: (func(x *int) *int {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.PublishTime),
|
||||
Description: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.Description),
|
||||
MapInfo: (func(x *UnfurlGenericMapInfo) *UnfurlGenericMapInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.MapInfo),
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlYoutubeDisplay struct {
|
||||
}
|
||||
|
||||
func (o UnfurlYoutubeDisplay) DeepCopy() UnfurlYoutubeDisplay {
|
||||
return UnfurlYoutubeDisplay{}
|
||||
}
|
||||
|
||||
type UnfurlGiphyDisplay struct {
|
||||
Favicon *UnfurlImageDisplay `codec:"favicon,omitempty" json:"favicon,omitempty"`
|
||||
Image *UnfurlImageDisplay `codec:"image,omitempty" json:"image,omitempty"`
|
||||
Video *UnfurlImageDisplay `codec:"video,omitempty" json:"video,omitempty"`
|
||||
}
|
||||
|
||||
func (o UnfurlGiphyDisplay) DeepCopy() UnfurlGiphyDisplay {
|
||||
return UnfurlGiphyDisplay{
|
||||
Favicon: (func(x *UnfurlImageDisplay) *UnfurlImageDisplay {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Favicon),
|
||||
Image: (func(x *UnfurlImageDisplay) *UnfurlImageDisplay {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Image),
|
||||
Video: (func(x *UnfurlImageDisplay) *UnfurlImageDisplay {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Video),
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlDisplay struct {
|
||||
UnfurlType__ UnfurlType `codec:"unfurlType" json:"unfurlType"`
|
||||
Generic__ *UnfurlGenericDisplay `codec:"generic,omitempty" json:"generic,omitempty"`
|
||||
Youtube__ *UnfurlYoutubeDisplay `codec:"youtube,omitempty" json:"youtube,omitempty"`
|
||||
Giphy__ *UnfurlGiphyDisplay `codec:"giphy,omitempty" json:"giphy,omitempty"`
|
||||
}
|
||||
|
||||
func (o *UnfurlDisplay) UnfurlType() (ret UnfurlType, err error) {
|
||||
switch o.UnfurlType__ {
|
||||
case UnfurlType_GENERIC:
|
||||
if o.Generic__ == nil {
|
||||
err = errors.New("unexpected nil value for Generic__")
|
||||
return ret, err
|
||||
}
|
||||
case UnfurlType_YOUTUBE:
|
||||
if o.Youtube__ == nil {
|
||||
err = errors.New("unexpected nil value for Youtube__")
|
||||
return ret, err
|
||||
}
|
||||
case UnfurlType_GIPHY:
|
||||
if o.Giphy__ == nil {
|
||||
err = errors.New("unexpected nil value for Giphy__")
|
||||
return ret, err
|
||||
}
|
||||
}
|
||||
return o.UnfurlType__, nil
|
||||
}
|
||||
|
||||
func (o UnfurlDisplay) Generic() (res UnfurlGenericDisplay) {
|
||||
if o.UnfurlType__ != UnfurlType_GENERIC {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Generic__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Generic__
|
||||
}
|
||||
|
||||
func (o UnfurlDisplay) Youtube() (res UnfurlYoutubeDisplay) {
|
||||
if o.UnfurlType__ != UnfurlType_YOUTUBE {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Youtube__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Youtube__
|
||||
}
|
||||
|
||||
func (o UnfurlDisplay) Giphy() (res UnfurlGiphyDisplay) {
|
||||
if o.UnfurlType__ != UnfurlType_GIPHY {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Giphy__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Giphy__
|
||||
}
|
||||
|
||||
func NewUnfurlDisplayWithGeneric(v UnfurlGenericDisplay) UnfurlDisplay {
|
||||
return UnfurlDisplay{
|
||||
UnfurlType__: UnfurlType_GENERIC,
|
||||
Generic__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewUnfurlDisplayWithYoutube(v UnfurlYoutubeDisplay) UnfurlDisplay {
|
||||
return UnfurlDisplay{
|
||||
UnfurlType__: UnfurlType_YOUTUBE,
|
||||
Youtube__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewUnfurlDisplayWithGiphy(v UnfurlGiphyDisplay) UnfurlDisplay {
|
||||
return UnfurlDisplay{
|
||||
UnfurlType__: UnfurlType_GIPHY,
|
||||
Giphy__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func (o UnfurlDisplay) DeepCopy() UnfurlDisplay {
|
||||
return UnfurlDisplay{
|
||||
UnfurlType__: o.UnfurlType__.DeepCopy(),
|
||||
Generic__: (func(x *UnfurlGenericDisplay) *UnfurlGenericDisplay {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Generic__),
|
||||
Youtube__: (func(x *UnfurlYoutubeDisplay) *UnfurlYoutubeDisplay {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Youtube__),
|
||||
Giphy__: (func(x *UnfurlGiphyDisplay) *UnfurlGiphyDisplay {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Giphy__),
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlMode int
|
||||
|
||||
const (
|
||||
UnfurlMode_ALWAYS UnfurlMode = 0
|
||||
UnfurlMode_NEVER UnfurlMode = 1
|
||||
UnfurlMode_WHITELISTED UnfurlMode = 2
|
||||
)
|
||||
|
||||
func (o UnfurlMode) DeepCopy() UnfurlMode { return o }
|
||||
|
||||
var UnfurlModeMap = map[string]UnfurlMode{
|
||||
"ALWAYS": 0,
|
||||
"NEVER": 1,
|
||||
"WHITELISTED": 2,
|
||||
}
|
||||
|
||||
var UnfurlModeRevMap = map[UnfurlMode]string{
|
||||
0: "ALWAYS",
|
||||
1: "NEVER",
|
||||
2: "WHITELISTED",
|
||||
}
|
||||
|
||||
func (e UnfurlMode) String() string {
|
||||
if v, ok := UnfurlModeRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type UnfurlSettings struct {
|
||||
Mode UnfurlMode `codec:"mode" json:"mode"`
|
||||
Whitelist map[string]bool `codec:"whitelist" json:"whitelist"`
|
||||
}
|
||||
|
||||
func (o UnfurlSettings) DeepCopy() UnfurlSettings {
|
||||
return UnfurlSettings{
|
||||
Mode: o.Mode.DeepCopy(),
|
||||
Whitelist: (func(x map[string]bool) map[string]bool {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make(map[string]bool, len(x))
|
||||
for k, v := range x {
|
||||
kCopy := k
|
||||
vCopy := v
|
||||
ret[kCopy] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Whitelist),
|
||||
}
|
||||
}
|
||||
|
||||
type UnfurlSettingsDisplay struct {
|
||||
Mode UnfurlMode `codec:"mode" json:"mode"`
|
||||
Whitelist []string `codec:"whitelist" json:"whitelist"`
|
||||
}
|
||||
|
||||
func (o UnfurlSettingsDisplay) DeepCopy() UnfurlSettingsDisplay {
|
||||
return UnfurlSettingsDisplay{
|
||||
Mode: o.Mode.DeepCopy(),
|
||||
Whitelist: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Whitelist),
|
||||
}
|
||||
}
|
20
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/auth.go
generated
vendored
Normal file
20
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/auth.go
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/gregor1/auth.avdl
|
||||
|
||||
package gregor1
|
||||
|
||||
type AuthResult struct {
|
||||
Uid UID `codec:"uid" json:"uid"`
|
||||
Username string `codec:"username" json:"username"`
|
||||
Sid SessionID `codec:"sid" json:"sid"`
|
||||
IsAdmin bool `codec:"isAdmin" json:"isAdmin"`
|
||||
}
|
||||
|
||||
func (o AuthResult) DeepCopy() AuthResult {
|
||||
return AuthResult{
|
||||
Uid: o.Uid.DeepCopy(),
|
||||
Username: o.Username,
|
||||
Sid: o.Sid.DeepCopy(),
|
||||
IsAdmin: o.IsAdmin,
|
||||
}
|
||||
}
|
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/auth_internal.go
generated
vendored
Normal file
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/auth_internal.go
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/gregor1/auth_internal.avdl
|
||||
|
||||
package gregor1
|
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/auth_update.go
generated
vendored
Normal file
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/auth_update.go
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/gregor1/auth_update.avdl
|
||||
|
||||
package gregor1
|
394
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/common.go
generated
vendored
Normal file
394
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/common.go
generated
vendored
Normal file
@@ -0,0 +1,394 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/gregor1/common.avdl
|
||||
|
||||
package gregor1
|
||||
|
||||
type TimeOrOffset struct {
|
||||
Time_ Time `codec:"time" json:"time"`
|
||||
Offset_ DurationMsec `codec:"offset" json:"offset"`
|
||||
}
|
||||
|
||||
func (o TimeOrOffset) DeepCopy() TimeOrOffset {
|
||||
return TimeOrOffset{
|
||||
Time_: o.Time_.DeepCopy(),
|
||||
Offset_: o.Offset_.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type Metadata struct {
|
||||
Uid_ UID `codec:"uid" json:"uid"`
|
||||
MsgID_ MsgID `codec:"msgID" json:"msgID"`
|
||||
Ctime_ Time `codec:"ctime" json:"ctime"`
|
||||
DeviceID_ DeviceID `codec:"deviceID" json:"deviceID"`
|
||||
InBandMsgType_ int `codec:"inBandMsgType" json:"inBandMsgType"`
|
||||
}
|
||||
|
||||
func (o Metadata) DeepCopy() Metadata {
|
||||
return Metadata{
|
||||
Uid_: o.Uid_.DeepCopy(),
|
||||
MsgID_: o.MsgID_.DeepCopy(),
|
||||
Ctime_: o.Ctime_.DeepCopy(),
|
||||
DeviceID_: o.DeviceID_.DeepCopy(),
|
||||
InBandMsgType_: o.InBandMsgType_,
|
||||
}
|
||||
}
|
||||
|
||||
type InBandMessage struct {
|
||||
StateUpdate_ *StateUpdateMessage `codec:"stateUpdate,omitempty" json:"stateUpdate,omitempty"`
|
||||
StateSync_ *StateSyncMessage `codec:"stateSync,omitempty" json:"stateSync,omitempty"`
|
||||
}
|
||||
|
||||
func (o InBandMessage) DeepCopy() InBandMessage {
|
||||
return InBandMessage{
|
||||
StateUpdate_: (func(x *StateUpdateMessage) *StateUpdateMessage {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.StateUpdate_),
|
||||
StateSync_: (func(x *StateSyncMessage) *StateSyncMessage {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.StateSync_),
|
||||
}
|
||||
}
|
||||
|
||||
type State struct {
|
||||
Items_ []ItemAndMetadata `codec:"items" json:"items"`
|
||||
}
|
||||
|
||||
func (o State) DeepCopy() State {
|
||||
return State{
|
||||
Items_: (func(x []ItemAndMetadata) []ItemAndMetadata {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ItemAndMetadata, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Items_),
|
||||
}
|
||||
}
|
||||
|
||||
type StateUpdateMessage struct {
|
||||
Md_ Metadata `codec:"md" json:"md"`
|
||||
Creation_ *Item `codec:"creation,omitempty" json:"creation,omitempty"`
|
||||
Dismissal_ *Dismissal `codec:"dismissal,omitempty" json:"dismissal,omitempty"`
|
||||
}
|
||||
|
||||
func (o StateUpdateMessage) DeepCopy() StateUpdateMessage {
|
||||
return StateUpdateMessage{
|
||||
Md_: o.Md_.DeepCopy(),
|
||||
Creation_: (func(x *Item) *Item {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Creation_),
|
||||
Dismissal_: (func(x *Dismissal) *Dismissal {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Dismissal_),
|
||||
}
|
||||
}
|
||||
|
||||
type StateSyncMessage struct {
|
||||
Md_ Metadata `codec:"md" json:"md"`
|
||||
}
|
||||
|
||||
func (o StateSyncMessage) DeepCopy() StateSyncMessage {
|
||||
return StateSyncMessage{
|
||||
Md_: o.Md_.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type MsgRange struct {
|
||||
EndTime_ TimeOrOffset `codec:"endTime" json:"endTime"`
|
||||
Category_ Category `codec:"category" json:"category"`
|
||||
SkipMsgIDs_ []MsgID `codec:"skipMsgIDs" json:"skipMsgIDs"`
|
||||
}
|
||||
|
||||
func (o MsgRange) DeepCopy() MsgRange {
|
||||
return MsgRange{
|
||||
EndTime_: o.EndTime_.DeepCopy(),
|
||||
Category_: o.Category_.DeepCopy(),
|
||||
SkipMsgIDs_: (func(x []MsgID) []MsgID {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]MsgID, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.SkipMsgIDs_),
|
||||
}
|
||||
}
|
||||
|
||||
type Dismissal struct {
|
||||
MsgIDs_ []MsgID `codec:"msgIDs" json:"msgIDs"`
|
||||
Ranges_ []MsgRange `codec:"ranges" json:"ranges"`
|
||||
}
|
||||
|
||||
func (o Dismissal) DeepCopy() Dismissal {
|
||||
return Dismissal{
|
||||
MsgIDs_: (func(x []MsgID) []MsgID {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]MsgID, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.MsgIDs_),
|
||||
Ranges_: (func(x []MsgRange) []MsgRange {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]MsgRange, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Ranges_),
|
||||
}
|
||||
}
|
||||
|
||||
type Item struct {
|
||||
Category_ Category `codec:"category" json:"category"`
|
||||
Dtime_ TimeOrOffset `codec:"dtime" json:"dtime"`
|
||||
RemindTimes_ []TimeOrOffset `codec:"remindTimes" json:"remindTimes"`
|
||||
Body_ Body `codec:"body" json:"body"`
|
||||
}
|
||||
|
||||
func (o Item) DeepCopy() Item {
|
||||
return Item{
|
||||
Category_: o.Category_.DeepCopy(),
|
||||
Dtime_: o.Dtime_.DeepCopy(),
|
||||
RemindTimes_: (func(x []TimeOrOffset) []TimeOrOffset {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]TimeOrOffset, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.RemindTimes_),
|
||||
Body_: o.Body_.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type ItemAndMetadata struct {
|
||||
Md_ *Metadata `codec:"md,omitempty" json:"md,omitempty"`
|
||||
Item_ *Item `codec:"item,omitempty" json:"item,omitempty"`
|
||||
}
|
||||
|
||||
func (o ItemAndMetadata) DeepCopy() ItemAndMetadata {
|
||||
return ItemAndMetadata{
|
||||
Md_: (func(x *Metadata) *Metadata {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Md_),
|
||||
Item_: (func(x *Item) *Item {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Item_),
|
||||
}
|
||||
}
|
||||
|
||||
type Reminder struct {
|
||||
Item_ ItemAndMetadata `codec:"item" json:"item"`
|
||||
Seqno_ int `codec:"seqno" json:"seqno"`
|
||||
RemindTime_ Time `codec:"remindTime" json:"remindTime"`
|
||||
}
|
||||
|
||||
func (o Reminder) DeepCopy() Reminder {
|
||||
return Reminder{
|
||||
Item_: o.Item_.DeepCopy(),
|
||||
Seqno_: o.Seqno_,
|
||||
RemindTime_: o.RemindTime_.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type ReminderID struct {
|
||||
Uid_ UID `codec:"uid" json:"uid"`
|
||||
MsgID_ MsgID `codec:"msgID" json:"msgID"`
|
||||
Seqno_ int `codec:"seqno" json:"seqno"`
|
||||
}
|
||||
|
||||
func (o ReminderID) DeepCopy() ReminderID {
|
||||
return ReminderID{
|
||||
Uid_: o.Uid_.DeepCopy(),
|
||||
MsgID_: o.MsgID_.DeepCopy(),
|
||||
Seqno_: o.Seqno_,
|
||||
}
|
||||
}
|
||||
|
||||
type OutOfBandMessage struct {
|
||||
Uid_ UID `codec:"uid" json:"uid"`
|
||||
System_ System `codec:"system" json:"system"`
|
||||
Body_ Body `codec:"body" json:"body"`
|
||||
}
|
||||
|
||||
func (o OutOfBandMessage) DeepCopy() OutOfBandMessage {
|
||||
return OutOfBandMessage{
|
||||
Uid_: o.Uid_.DeepCopy(),
|
||||
System_: o.System_.DeepCopy(),
|
||||
Body_: o.Body_.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type ReminderSet struct {
|
||||
Reminders_ []Reminder `codec:"reminders" json:"reminders"`
|
||||
MoreRemindersReady_ bool `codec:"moreRemindersReady" json:"moreRemindersReady"`
|
||||
}
|
||||
|
||||
func (o ReminderSet) DeepCopy() ReminderSet {
|
||||
return ReminderSet{
|
||||
Reminders_: (func(x []Reminder) []Reminder {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]Reminder, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Reminders_),
|
||||
MoreRemindersReady_: o.MoreRemindersReady_,
|
||||
}
|
||||
}
|
||||
|
||||
type Message struct {
|
||||
Oobm_ *OutOfBandMessage `codec:"oobm,omitempty" json:"oobm,omitempty"`
|
||||
Ibm_ *InBandMessage `codec:"ibm,omitempty" json:"ibm,omitempty"`
|
||||
}
|
||||
|
||||
func (o Message) DeepCopy() Message {
|
||||
return Message{
|
||||
Oobm_: (func(x *OutOfBandMessage) *OutOfBandMessage {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Oobm_),
|
||||
Ibm_: (func(x *InBandMessage) *InBandMessage {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Ibm_),
|
||||
}
|
||||
}
|
||||
|
||||
type DurationMsec int64
|
||||
|
||||
func (o DurationMsec) DeepCopy() DurationMsec {
|
||||
return o
|
||||
}
|
||||
|
||||
type DurationSec int64
|
||||
|
||||
func (o DurationSec) DeepCopy() DurationSec {
|
||||
return o
|
||||
}
|
||||
|
||||
type Category string
|
||||
|
||||
func (o Category) DeepCopy() Category {
|
||||
return o
|
||||
}
|
||||
|
||||
type System string
|
||||
|
||||
func (o System) DeepCopy() System {
|
||||
return o
|
||||
}
|
||||
|
||||
type UID []byte
|
||||
|
||||
func (o UID) DeepCopy() UID {
|
||||
return (func(x []byte) []byte {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
return append([]byte{}, x...)
|
||||
})(o)
|
||||
}
|
||||
|
||||
type MsgID []byte
|
||||
|
||||
func (o MsgID) DeepCopy() MsgID {
|
||||
return (func(x []byte) []byte {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
return append([]byte{}, x...)
|
||||
})(o)
|
||||
}
|
||||
|
||||
type DeviceID []byte
|
||||
|
||||
func (o DeviceID) DeepCopy() DeviceID {
|
||||
return (func(x []byte) []byte {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
return append([]byte{}, x...)
|
||||
})(o)
|
||||
}
|
||||
|
||||
type Body []byte
|
||||
|
||||
func (o Body) DeepCopy() Body {
|
||||
return (func(x []byte) []byte {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
return append([]byte{}, x...)
|
||||
})(o)
|
||||
}
|
||||
|
||||
type Time int64
|
||||
|
||||
func (o Time) DeepCopy() Time {
|
||||
return o
|
||||
}
|
||||
|
||||
type SessionID string
|
||||
|
||||
func (o SessionID) DeepCopy() SessionID {
|
||||
return o
|
||||
}
|
||||
|
||||
type SessionToken string
|
||||
|
||||
func (o SessionToken) DeepCopy() SessionToken {
|
||||
return o
|
||||
}
|
72
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/incoming.go
generated
vendored
Normal file
72
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/incoming.go
generated
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/gregor1/incoming.avdl
|
||||
|
||||
package gregor1
|
||||
|
||||
type SyncResult struct {
|
||||
Msgs []InBandMessage `codec:"msgs" json:"msgs"`
|
||||
Hash []byte `codec:"hash" json:"hash"`
|
||||
}
|
||||
|
||||
func (o SyncResult) DeepCopy() SyncResult {
|
||||
return SyncResult{
|
||||
Msgs: (func(x []InBandMessage) []InBandMessage {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]InBandMessage, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Msgs),
|
||||
Hash: (func(x []byte) []byte {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
return append([]byte{}, x...)
|
||||
})(o.Hash),
|
||||
}
|
||||
}
|
||||
|
||||
// DescribeConnectedUsers will take a list of users, and return the list of users
|
||||
// which are connected to any Gregor in the cluster, and what devices (and device type)
|
||||
// those users are connected with.
|
||||
type ConnectedDevice struct {
|
||||
DeviceID DeviceID `codec:"deviceID" json:"deviceID"`
|
||||
DeviceType string `codec:"deviceType" json:"deviceType"`
|
||||
DevicePlatform string `codec:"devicePlatform" json:"devicePlatform"`
|
||||
UserAgent string `codec:"userAgent" json:"userAgent"`
|
||||
}
|
||||
|
||||
func (o ConnectedDevice) DeepCopy() ConnectedDevice {
|
||||
return ConnectedDevice{
|
||||
DeviceID: o.DeviceID.DeepCopy(),
|
||||
DeviceType: o.DeviceType,
|
||||
DevicePlatform: o.DevicePlatform,
|
||||
UserAgent: o.UserAgent,
|
||||
}
|
||||
}
|
||||
|
||||
type ConnectedUser struct {
|
||||
Uid UID `codec:"uid" json:"uid"`
|
||||
Devices []ConnectedDevice `codec:"devices" json:"devices"`
|
||||
}
|
||||
|
||||
func (o ConnectedUser) DeepCopy() ConnectedUser {
|
||||
return ConnectedUser{
|
||||
Uid: o.Uid.DeepCopy(),
|
||||
Devices: (func(x []ConnectedDevice) []ConnectedDevice {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ConnectedDevice, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Devices),
|
||||
}
|
||||
}
|
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/outgoing.go
generated
vendored
Normal file
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/outgoing.go
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/gregor1/outgoing.avdl
|
||||
|
||||
package gregor1
|
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/remind.go
generated
vendored
Normal file
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/gregor1/remind.go
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/gregor1/remind.avdl
|
||||
|
||||
package gregor1
|
98
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/account.go
generated
vendored
Normal file
98
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/account.go
generated
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/account.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
type HasServerKeysRes struct {
|
||||
HasServerKeys bool `codec:"hasServerKeys" json:"hasServerKeys"`
|
||||
}
|
||||
|
||||
func (o HasServerKeysRes) DeepCopy() HasServerKeysRes {
|
||||
return HasServerKeysRes{
|
||||
HasServerKeys: o.HasServerKeys,
|
||||
}
|
||||
}
|
||||
|
||||
type LockdownHistory struct {
|
||||
Status bool `codec:"status" json:"status"`
|
||||
CreationTime Time `codec:"creationTime" json:"ctime"`
|
||||
DeviceID DeviceID `codec:"deviceID" json:"device_id"`
|
||||
DeviceName string `codec:"deviceName" json:"deviceName"`
|
||||
}
|
||||
|
||||
func (o LockdownHistory) DeepCopy() LockdownHistory {
|
||||
return LockdownHistory{
|
||||
Status: o.Status,
|
||||
CreationTime: o.CreationTime.DeepCopy(),
|
||||
DeviceID: o.DeviceID.DeepCopy(),
|
||||
DeviceName: o.DeviceName,
|
||||
}
|
||||
}
|
||||
|
||||
type GetLockdownResponse struct {
|
||||
History []LockdownHistory `codec:"history" json:"history"`
|
||||
Status bool `codec:"status" json:"status"`
|
||||
}
|
||||
|
||||
func (o GetLockdownResponse) DeepCopy() GetLockdownResponse {
|
||||
return GetLockdownResponse{
|
||||
History: (func(x []LockdownHistory) []LockdownHistory {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]LockdownHistory, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.History),
|
||||
Status: o.Status,
|
||||
}
|
||||
}
|
||||
|
||||
type TeamContactSettings struct {
|
||||
TeamID TeamID `codec:"teamID" json:"team_id"`
|
||||
Enabled bool `codec:"enabled" json:"enabled"`
|
||||
}
|
||||
|
||||
func (o TeamContactSettings) DeepCopy() TeamContactSettings {
|
||||
return TeamContactSettings{
|
||||
TeamID: o.TeamID.DeepCopy(),
|
||||
Enabled: o.Enabled,
|
||||
}
|
||||
}
|
||||
|
||||
type ContactSettings struct {
|
||||
Version *int `codec:"version,omitempty" json:"version,omitempty"`
|
||||
AllowFolloweeDegrees int `codec:"allowFolloweeDegrees" json:"allow_followee_degrees"`
|
||||
AllowGoodTeams bool `codec:"allowGoodTeams" json:"allow_good_teams"`
|
||||
Enabled bool `codec:"enabled" json:"enabled"`
|
||||
Teams []TeamContactSettings `codec:"teams" json:"teams"`
|
||||
}
|
||||
|
||||
func (o ContactSettings) DeepCopy() ContactSettings {
|
||||
return ContactSettings{
|
||||
Version: (func(x *int) *int {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.Version),
|
||||
AllowFolloweeDegrees: o.AllowFolloweeDegrees,
|
||||
AllowGoodTeams: o.AllowGoodTeams,
|
||||
Enabled: o.Enabled,
|
||||
Teams: (func(x []TeamContactSettings) []TeamContactSettings {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]TeamContactSettings, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Teams),
|
||||
}
|
||||
}
|
22
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/airdrop.go
generated
vendored
Normal file
22
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/airdrop.go
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/airdrop.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
type AirdropDetails struct {
|
||||
Uid UID `codec:"uid" json:"uid"`
|
||||
Kid BinaryKID `codec:"kid" json:"kid"`
|
||||
Vid VID `codec:"vid" json:"vid"`
|
||||
Vers string `codec:"vers" json:"vers"`
|
||||
Time Time `codec:"time" json:"time"`
|
||||
}
|
||||
|
||||
func (o AirdropDetails) DeepCopy() AirdropDetails {
|
||||
return AirdropDetails{
|
||||
Uid: o.Uid.DeepCopy(),
|
||||
Kid: o.Kid.DeepCopy(),
|
||||
Vid: o.Vid.DeepCopy(),
|
||||
Vers: o.Vers,
|
||||
Time: o.Time.DeepCopy(),
|
||||
}
|
||||
}
|
20
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/apiserver.go
generated
vendored
Normal file
20
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/apiserver.go
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/apiserver.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
type APIRes struct {
|
||||
Status string `codec:"status" json:"status"`
|
||||
Body string `codec:"body" json:"body"`
|
||||
HttpStatus int `codec:"httpStatus" json:"httpStatus"`
|
||||
AppStatus string `codec:"appStatus" json:"appStatus"`
|
||||
}
|
||||
|
||||
func (o APIRes) DeepCopy() APIRes {
|
||||
return APIRes{
|
||||
Status: o.Status,
|
||||
Body: o.Body,
|
||||
HttpStatus: o.HttpStatus,
|
||||
AppStatus: o.AppStatus,
|
||||
}
|
||||
}
|
75
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/appstate.go
generated
vendored
Normal file
75
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/appstate.go
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/appstate.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type MobileAppState int
|
||||
|
||||
const (
|
||||
MobileAppState_FOREGROUND MobileAppState = 0
|
||||
MobileAppState_BACKGROUND MobileAppState = 1
|
||||
MobileAppState_INACTIVE MobileAppState = 2
|
||||
MobileAppState_BACKGROUNDACTIVE MobileAppState = 3
|
||||
)
|
||||
|
||||
func (o MobileAppState) DeepCopy() MobileAppState { return o }
|
||||
|
||||
var MobileAppStateMap = map[string]MobileAppState{
|
||||
"FOREGROUND": 0,
|
||||
"BACKGROUND": 1,
|
||||
"INACTIVE": 2,
|
||||
"BACKGROUNDACTIVE": 3,
|
||||
}
|
||||
|
||||
var MobileAppStateRevMap = map[MobileAppState]string{
|
||||
0: "FOREGROUND",
|
||||
1: "BACKGROUND",
|
||||
2: "INACTIVE",
|
||||
3: "BACKGROUNDACTIVE",
|
||||
}
|
||||
|
||||
func (e MobileAppState) String() string {
|
||||
if v, ok := MobileAppStateRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type MobileNetworkState int
|
||||
|
||||
const (
|
||||
MobileNetworkState_NONE MobileNetworkState = 0
|
||||
MobileNetworkState_WIFI MobileNetworkState = 1
|
||||
MobileNetworkState_CELLULAR MobileNetworkState = 2
|
||||
MobileNetworkState_UNKNOWN MobileNetworkState = 3
|
||||
MobileNetworkState_NOTAVAILABLE MobileNetworkState = 4
|
||||
)
|
||||
|
||||
func (o MobileNetworkState) DeepCopy() MobileNetworkState { return o }
|
||||
|
||||
var MobileNetworkStateMap = map[string]MobileNetworkState{
|
||||
"NONE": 0,
|
||||
"WIFI": 1,
|
||||
"CELLULAR": 2,
|
||||
"UNKNOWN": 3,
|
||||
"NOTAVAILABLE": 4,
|
||||
}
|
||||
|
||||
var MobileNetworkStateRevMap = map[MobileNetworkState]string{
|
||||
0: "NONE",
|
||||
1: "WIFI",
|
||||
2: "CELLULAR",
|
||||
3: "UNKNOWN",
|
||||
4: "NOTAVAILABLE",
|
||||
}
|
||||
|
||||
func (e MobileNetworkState) String() string {
|
||||
if v, ok := MobileNetworkStateRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
76
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/audit.go
generated
vendored
Normal file
76
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/audit.go
generated
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/audit.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type BoxAuditAttemptResult int
|
||||
|
||||
const (
|
||||
BoxAuditAttemptResult_FAILURE_RETRYABLE BoxAuditAttemptResult = 0
|
||||
BoxAuditAttemptResult_FAILURE_MALICIOUS_SERVER BoxAuditAttemptResult = 1
|
||||
BoxAuditAttemptResult_OK_VERIFIED BoxAuditAttemptResult = 2
|
||||
BoxAuditAttemptResult_OK_NOT_ATTEMPTED_ROLE BoxAuditAttemptResult = 3
|
||||
BoxAuditAttemptResult_OK_NOT_ATTEMPTED_OPENTEAM BoxAuditAttemptResult = 4
|
||||
BoxAuditAttemptResult_OK_NOT_ATTEMPTED_SUBTEAM BoxAuditAttemptResult = 5
|
||||
)
|
||||
|
||||
func (o BoxAuditAttemptResult) DeepCopy() BoxAuditAttemptResult { return o }
|
||||
|
||||
var BoxAuditAttemptResultMap = map[string]BoxAuditAttemptResult{
|
||||
"FAILURE_RETRYABLE": 0,
|
||||
"FAILURE_MALICIOUS_SERVER": 1,
|
||||
"OK_VERIFIED": 2,
|
||||
"OK_NOT_ATTEMPTED_ROLE": 3,
|
||||
"OK_NOT_ATTEMPTED_OPENTEAM": 4,
|
||||
"OK_NOT_ATTEMPTED_SUBTEAM": 5,
|
||||
}
|
||||
|
||||
var BoxAuditAttemptResultRevMap = map[BoxAuditAttemptResult]string{
|
||||
0: "FAILURE_RETRYABLE",
|
||||
1: "FAILURE_MALICIOUS_SERVER",
|
||||
2: "OK_VERIFIED",
|
||||
3: "OK_NOT_ATTEMPTED_ROLE",
|
||||
4: "OK_NOT_ATTEMPTED_OPENTEAM",
|
||||
5: "OK_NOT_ATTEMPTED_SUBTEAM",
|
||||
}
|
||||
|
||||
func (e BoxAuditAttemptResult) String() string {
|
||||
if v, ok := BoxAuditAttemptResultRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type BoxAuditAttempt struct {
|
||||
Ctime UnixTime `codec:"ctime" json:"ctime"`
|
||||
Error *string `codec:"error,omitempty" json:"error,omitempty"`
|
||||
Result BoxAuditAttemptResult `codec:"result" json:"result"`
|
||||
Generation *PerTeamKeyGeneration `codec:"generation,omitempty" json:"generation,omitempty"`
|
||||
Rotated bool `codec:"rotated" json:"rotated"`
|
||||
}
|
||||
|
||||
func (o BoxAuditAttempt) DeepCopy() BoxAuditAttempt {
|
||||
return BoxAuditAttempt{
|
||||
Ctime: o.Ctime.DeepCopy(),
|
||||
Error: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.Error),
|
||||
Result: o.Result.DeepCopy(),
|
||||
Generation: (func(x *PerTeamKeyGeneration) *PerTeamKeyGeneration {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Generation),
|
||||
Rotated: o.Rotated,
|
||||
}
|
||||
}
|
72
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/avatars.go
generated
vendored
Normal file
72
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/avatars.go
generated
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/avatars.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
type AvatarUrl string
|
||||
|
||||
func (o AvatarUrl) DeepCopy() AvatarUrl {
|
||||
return o
|
||||
}
|
||||
|
||||
type AvatarFormat string
|
||||
|
||||
func (o AvatarFormat) DeepCopy() AvatarFormat {
|
||||
return o
|
||||
}
|
||||
|
||||
type LoadAvatarsRes struct {
|
||||
Picmap map[string]map[AvatarFormat]AvatarUrl `codec:"picmap" json:"picmap"`
|
||||
}
|
||||
|
||||
func (o LoadAvatarsRes) DeepCopy() LoadAvatarsRes {
|
||||
return LoadAvatarsRes{
|
||||
Picmap: (func(x map[string]map[AvatarFormat]AvatarUrl) map[string]map[AvatarFormat]AvatarUrl {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make(map[string]map[AvatarFormat]AvatarUrl, len(x))
|
||||
for k, v := range x {
|
||||
kCopy := k
|
||||
vCopy := (func(x map[AvatarFormat]AvatarUrl) map[AvatarFormat]AvatarUrl {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make(map[AvatarFormat]AvatarUrl, len(x))
|
||||
for k, v := range x {
|
||||
kCopy := k.DeepCopy()
|
||||
vCopy := v.DeepCopy()
|
||||
ret[kCopy] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(v)
|
||||
ret[kCopy] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Picmap),
|
||||
}
|
||||
}
|
||||
|
||||
type AvatarClearCacheMsg struct {
|
||||
Name string `codec:"name" json:"name"`
|
||||
Formats []AvatarFormat `codec:"formats" json:"formats"`
|
||||
Typ AvatarUpdateType `codec:"typ" json:"typ"`
|
||||
}
|
||||
|
||||
func (o AvatarClearCacheMsg) DeepCopy() AvatarClearCacheMsg {
|
||||
return AvatarClearCacheMsg{
|
||||
Name: o.Name,
|
||||
Formats: (func(x []AvatarFormat) []AvatarFormat {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]AvatarFormat, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Formats),
|
||||
Typ: o.Typ.DeepCopy(),
|
||||
}
|
||||
}
|
63
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/backend_common.go
generated
vendored
Normal file
63
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/backend_common.go
generated
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/backend_common.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type BlockType int
|
||||
|
||||
const (
|
||||
BlockType_DATA BlockType = 0
|
||||
BlockType_MD BlockType = 1
|
||||
BlockType_GIT BlockType = 2
|
||||
)
|
||||
|
||||
func (o BlockType) DeepCopy() BlockType { return o }
|
||||
|
||||
var BlockTypeMap = map[string]BlockType{
|
||||
"DATA": 0,
|
||||
"MD": 1,
|
||||
"GIT": 2,
|
||||
}
|
||||
|
||||
var BlockTypeRevMap = map[BlockType]string{
|
||||
0: "DATA",
|
||||
1: "MD",
|
||||
2: "GIT",
|
||||
}
|
||||
|
||||
func (e BlockType) String() string {
|
||||
if v, ok := BlockTypeRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type BlockIdCombo struct {
|
||||
BlockHash string `codec:"blockHash" json:"blockHash"`
|
||||
ChargedTo UserOrTeamID `codec:"chargedTo" json:"chargedTo"`
|
||||
BlockType BlockType `codec:"blockType" json:"blockType"`
|
||||
}
|
||||
|
||||
func (o BlockIdCombo) DeepCopy() BlockIdCombo {
|
||||
return BlockIdCombo{
|
||||
BlockHash: o.BlockHash,
|
||||
ChargedTo: o.ChargedTo.DeepCopy(),
|
||||
BlockType: o.BlockType.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type ChallengeInfo struct {
|
||||
Now int64 `codec:"now" json:"now"`
|
||||
Challenge string `codec:"challenge" json:"challenge"`
|
||||
}
|
||||
|
||||
func (o ChallengeInfo) DeepCopy() ChallengeInfo {
|
||||
return ChallengeInfo{
|
||||
Now: o.Now,
|
||||
Challenge: o.Challenge,
|
||||
}
|
||||
}
|
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/badger.go
generated
vendored
Normal file
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/badger.go
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/badger.avdl
|
||||
|
||||
package keybase1
|
153
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/block.go
generated
vendored
Normal file
153
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/block.go
generated
vendored
Normal file
@@ -0,0 +1,153 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/block.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type BlockStatus int
|
||||
|
||||
const (
|
||||
BlockStatus_UNKNOWN BlockStatus = 0
|
||||
BlockStatus_LIVE BlockStatus = 1
|
||||
BlockStatus_ARCHIVED BlockStatus = 2
|
||||
)
|
||||
|
||||
func (o BlockStatus) DeepCopy() BlockStatus { return o }
|
||||
|
||||
var BlockStatusMap = map[string]BlockStatus{
|
||||
"UNKNOWN": 0,
|
||||
"LIVE": 1,
|
||||
"ARCHIVED": 2,
|
||||
}
|
||||
|
||||
var BlockStatusRevMap = map[BlockStatus]string{
|
||||
0: "UNKNOWN",
|
||||
1: "LIVE",
|
||||
2: "ARCHIVED",
|
||||
}
|
||||
|
||||
func (e BlockStatus) String() string {
|
||||
if v, ok := BlockStatusRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type GetBlockRes struct {
|
||||
BlockKey string `codec:"blockKey" json:"blockKey"`
|
||||
Buf []byte `codec:"buf" json:"buf"`
|
||||
Size int `codec:"size" json:"size"`
|
||||
Status BlockStatus `codec:"status" json:"status"`
|
||||
}
|
||||
|
||||
func (o GetBlockRes) DeepCopy() GetBlockRes {
|
||||
return GetBlockRes{
|
||||
BlockKey: o.BlockKey,
|
||||
Buf: (func(x []byte) []byte {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
return append([]byte{}, x...)
|
||||
})(o.Buf),
|
||||
Size: o.Size,
|
||||
Status: o.Status.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type BlockRefNonce [8]byte
|
||||
|
||||
func (o BlockRefNonce) DeepCopy() BlockRefNonce {
|
||||
var ret BlockRefNonce
|
||||
copy(ret[:], o[:])
|
||||
return ret
|
||||
}
|
||||
|
||||
type BlockReference struct {
|
||||
Bid BlockIdCombo `codec:"bid" json:"bid"`
|
||||
Nonce BlockRefNonce `codec:"nonce" json:"nonce"`
|
||||
ChargedTo UserOrTeamID `codec:"chargedTo" json:"chargedTo"`
|
||||
}
|
||||
|
||||
func (o BlockReference) DeepCopy() BlockReference {
|
||||
return BlockReference{
|
||||
Bid: o.Bid.DeepCopy(),
|
||||
Nonce: o.Nonce.DeepCopy(),
|
||||
ChargedTo: o.ChargedTo.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type BlockReferenceCount struct {
|
||||
Ref BlockReference `codec:"ref" json:"ref"`
|
||||
LiveCount int `codec:"liveCount" json:"liveCount"`
|
||||
}
|
||||
|
||||
func (o BlockReferenceCount) DeepCopy() BlockReferenceCount {
|
||||
return BlockReferenceCount{
|
||||
Ref: o.Ref.DeepCopy(),
|
||||
LiveCount: o.LiveCount,
|
||||
}
|
||||
}
|
||||
|
||||
type DowngradeReferenceRes struct {
|
||||
Completed []BlockReferenceCount `codec:"completed" json:"completed"`
|
||||
Failed BlockReference `codec:"failed" json:"failed"`
|
||||
}
|
||||
|
||||
func (o DowngradeReferenceRes) DeepCopy() DowngradeReferenceRes {
|
||||
return DowngradeReferenceRes{
|
||||
Completed: (func(x []BlockReferenceCount) []BlockReferenceCount {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]BlockReferenceCount, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Completed),
|
||||
Failed: o.Failed.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type BlockIdCount struct {
|
||||
Id BlockIdCombo `codec:"id" json:"id"`
|
||||
LiveCount int `codec:"liveCount" json:"liveCount"`
|
||||
}
|
||||
|
||||
func (o BlockIdCount) DeepCopy() BlockIdCount {
|
||||
return BlockIdCount{
|
||||
Id: o.Id.DeepCopy(),
|
||||
LiveCount: o.LiveCount,
|
||||
}
|
||||
}
|
||||
|
||||
type ReferenceCountRes struct {
|
||||
Counts []BlockIdCount `codec:"counts" json:"counts"`
|
||||
}
|
||||
|
||||
func (o ReferenceCountRes) DeepCopy() ReferenceCountRes {
|
||||
return ReferenceCountRes{
|
||||
Counts: (func(x []BlockIdCount) []BlockIdCount {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]BlockIdCount, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Counts),
|
||||
}
|
||||
}
|
||||
|
||||
type BlockPingResponse struct {
|
||||
}
|
||||
|
||||
func (o BlockPingResponse) DeepCopy() BlockPingResponse {
|
||||
return BlockPingResponse{}
|
||||
}
|
22
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/bot.go
generated
vendored
Normal file
22
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/bot.go
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/bot.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
type BotToken string
|
||||
|
||||
func (o BotToken) DeepCopy() BotToken {
|
||||
return o
|
||||
}
|
||||
|
||||
type BotTokenInfo struct {
|
||||
Token BotToken `codec:"token" json:"bot_token"`
|
||||
Ctime Time `codec:"ctime" json:"ctime"`
|
||||
}
|
||||
|
||||
func (o BotTokenInfo) DeepCopy() BotTokenInfo {
|
||||
return BotTokenInfo{
|
||||
Token: o.Token.DeepCopy(),
|
||||
Ctime: o.Ctime.DeepCopy(),
|
||||
}
|
||||
}
|
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/btc.go
generated
vendored
Normal file
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/btc.go
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/btc.avdl
|
||||
|
||||
package keybase1
|
1090
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/common.go
generated
vendored
Normal file
1090
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/common.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
842
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/config.go
generated
vendored
Normal file
842
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/config.go
generated
vendored
Normal file
@@ -0,0 +1,842 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/config.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type CurrentStatus struct {
|
||||
Configured bool `codec:"configured" json:"configured"`
|
||||
Registered bool `codec:"registered" json:"registered"`
|
||||
LoggedIn bool `codec:"loggedIn" json:"loggedIn"`
|
||||
SessionIsValid bool `codec:"sessionIsValid" json:"sessionIsValid"`
|
||||
User *User `codec:"user,omitempty" json:"user,omitempty"`
|
||||
}
|
||||
|
||||
func (o CurrentStatus) DeepCopy() CurrentStatus {
|
||||
return CurrentStatus{
|
||||
Configured: o.Configured,
|
||||
Registered: o.Registered,
|
||||
LoggedIn: o.LoggedIn,
|
||||
SessionIsValid: o.SessionIsValid,
|
||||
User: (func(x *User) *User {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.User),
|
||||
}
|
||||
}
|
||||
|
||||
type SessionStatus struct {
|
||||
SessionFor string `codec:"SessionFor" json:"SessionFor"`
|
||||
Loaded bool `codec:"Loaded" json:"Loaded"`
|
||||
Cleared bool `codec:"Cleared" json:"Cleared"`
|
||||
SaltOnly bool `codec:"SaltOnly" json:"SaltOnly"`
|
||||
Expired bool `codec:"Expired" json:"Expired"`
|
||||
}
|
||||
|
||||
func (o SessionStatus) DeepCopy() SessionStatus {
|
||||
return SessionStatus{
|
||||
SessionFor: o.SessionFor,
|
||||
Loaded: o.Loaded,
|
||||
Cleared: o.Cleared,
|
||||
SaltOnly: o.SaltOnly,
|
||||
Expired: o.Expired,
|
||||
}
|
||||
}
|
||||
|
||||
type ClientDetails struct {
|
||||
Pid int `codec:"pid" json:"pid"`
|
||||
ClientType ClientType `codec:"clientType" json:"clientType"`
|
||||
Argv []string `codec:"argv" json:"argv"`
|
||||
Desc string `codec:"desc" json:"desc"`
|
||||
Version string `codec:"version" json:"version"`
|
||||
}
|
||||
|
||||
func (o ClientDetails) DeepCopy() ClientDetails {
|
||||
return ClientDetails{
|
||||
Pid: o.Pid,
|
||||
ClientType: o.ClientType.DeepCopy(),
|
||||
Argv: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Argv),
|
||||
Desc: o.Desc,
|
||||
Version: o.Version,
|
||||
}
|
||||
}
|
||||
|
||||
type ClientStatus struct {
|
||||
Details ClientDetails `codec:"details" json:"details"`
|
||||
ConnectionID int `codec:"connectionID" json:"connectionID"`
|
||||
NotificationChannels NotificationChannels `codec:"notificationChannels" json:"notificationChannels"`
|
||||
}
|
||||
|
||||
func (o ClientStatus) DeepCopy() ClientStatus {
|
||||
return ClientStatus{
|
||||
Details: o.Details.DeepCopy(),
|
||||
ConnectionID: o.ConnectionID,
|
||||
NotificationChannels: o.NotificationChannels.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type PlatformInfo struct {
|
||||
Os string `codec:"os" json:"os"`
|
||||
OsVersion string `codec:"osVersion" json:"osVersion"`
|
||||
Arch string `codec:"arch" json:"arch"`
|
||||
GoVersion string `codec:"goVersion" json:"goVersion"`
|
||||
}
|
||||
|
||||
func (o PlatformInfo) DeepCopy() PlatformInfo {
|
||||
return PlatformInfo{
|
||||
Os: o.Os,
|
||||
OsVersion: o.OsVersion,
|
||||
Arch: o.Arch,
|
||||
GoVersion: o.GoVersion,
|
||||
}
|
||||
}
|
||||
|
||||
type LoadDeviceErr struct {
|
||||
Where string `codec:"where" json:"where"`
|
||||
Desc string `codec:"desc" json:"desc"`
|
||||
}
|
||||
|
||||
func (o LoadDeviceErr) DeepCopy() LoadDeviceErr {
|
||||
return LoadDeviceErr{
|
||||
Where: o.Where,
|
||||
Desc: o.Desc,
|
||||
}
|
||||
}
|
||||
|
||||
type DirSizeInfo struct {
|
||||
NumFiles int `codec:"numFiles" json:"numFiles"`
|
||||
Name string `codec:"name" json:"name"`
|
||||
HumanSize string `codec:"humanSize" json:"humanSize"`
|
||||
}
|
||||
|
||||
func (o DirSizeInfo) DeepCopy() DirSizeInfo {
|
||||
return DirSizeInfo{
|
||||
NumFiles: o.NumFiles,
|
||||
Name: o.Name,
|
||||
HumanSize: o.HumanSize,
|
||||
}
|
||||
}
|
||||
|
||||
type ExtendedStatus struct {
|
||||
Standalone bool `codec:"standalone" json:"standalone"`
|
||||
PassphraseStreamCached bool `codec:"passphraseStreamCached" json:"passphraseStreamCached"`
|
||||
TsecCached bool `codec:"tsecCached" json:"tsecCached"`
|
||||
DeviceSigKeyCached bool `codec:"deviceSigKeyCached" json:"deviceSigKeyCached"`
|
||||
DeviceEncKeyCached bool `codec:"deviceEncKeyCached" json:"deviceEncKeyCached"`
|
||||
PaperSigKeyCached bool `codec:"paperSigKeyCached" json:"paperSigKeyCached"`
|
||||
PaperEncKeyCached bool `codec:"paperEncKeyCached" json:"paperEncKeyCached"`
|
||||
StoredSecret bool `codec:"storedSecret" json:"storedSecret"`
|
||||
SecretPromptSkip bool `codec:"secretPromptSkip" json:"secretPromptSkip"`
|
||||
RememberPassphrase bool `codec:"rememberPassphrase" json:"rememberPassphrase"`
|
||||
Device *Device `codec:"device,omitempty" json:"device,omitempty"`
|
||||
DeviceErr *LoadDeviceErr `codec:"deviceErr,omitempty" json:"deviceErr,omitempty"`
|
||||
LogDir string `codec:"logDir" json:"logDir"`
|
||||
Session *SessionStatus `codec:"session,omitempty" json:"session,omitempty"`
|
||||
DefaultUsername string `codec:"defaultUsername" json:"defaultUsername"`
|
||||
ProvisionedUsernames []string `codec:"provisionedUsernames" json:"provisionedUsernames"`
|
||||
ConfiguredAccounts []ConfiguredAccount `codec:"configuredAccounts" json:"configuredAccounts"`
|
||||
Clients []ClientStatus `codec:"Clients" json:"Clients"`
|
||||
DeviceEkNames []string `codec:"deviceEkNames" json:"deviceEkNames"`
|
||||
PlatformInfo PlatformInfo `codec:"platformInfo" json:"platformInfo"`
|
||||
DefaultDeviceID DeviceID `codec:"defaultDeviceID" json:"defaultDeviceID"`
|
||||
LocalDbStats []string `codec:"localDbStats" json:"localDbStats"`
|
||||
LocalChatDbStats []string `codec:"localChatDbStats" json:"localChatDbStats"`
|
||||
LocalBlockCacheDbStats []string `codec:"localBlockCacheDbStats" json:"localBlockCacheDbStats"`
|
||||
LocalSyncCacheDbStats []string `codec:"localSyncCacheDbStats" json:"localSyncCacheDbStats"`
|
||||
CacheDirSizeInfo []DirSizeInfo `codec:"cacheDirSizeInfo" json:"cacheDirSizeInfo"`
|
||||
UiRouterMapping map[string]int `codec:"uiRouterMapping" json:"uiRouterMapping"`
|
||||
}
|
||||
|
||||
func (o ExtendedStatus) DeepCopy() ExtendedStatus {
|
||||
return ExtendedStatus{
|
||||
Standalone: o.Standalone,
|
||||
PassphraseStreamCached: o.PassphraseStreamCached,
|
||||
TsecCached: o.TsecCached,
|
||||
DeviceSigKeyCached: o.DeviceSigKeyCached,
|
||||
DeviceEncKeyCached: o.DeviceEncKeyCached,
|
||||
PaperSigKeyCached: o.PaperSigKeyCached,
|
||||
PaperEncKeyCached: o.PaperEncKeyCached,
|
||||
StoredSecret: o.StoredSecret,
|
||||
SecretPromptSkip: o.SecretPromptSkip,
|
||||
RememberPassphrase: o.RememberPassphrase,
|
||||
Device: (func(x *Device) *Device {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Device),
|
||||
DeviceErr: (func(x *LoadDeviceErr) *LoadDeviceErr {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.DeviceErr),
|
||||
LogDir: o.LogDir,
|
||||
Session: (func(x *SessionStatus) *SessionStatus {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Session),
|
||||
DefaultUsername: o.DefaultUsername,
|
||||
ProvisionedUsernames: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.ProvisionedUsernames),
|
||||
ConfiguredAccounts: (func(x []ConfiguredAccount) []ConfiguredAccount {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ConfiguredAccount, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.ConfiguredAccounts),
|
||||
Clients: (func(x []ClientStatus) []ClientStatus {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ClientStatus, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Clients),
|
||||
DeviceEkNames: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.DeviceEkNames),
|
||||
PlatformInfo: o.PlatformInfo.DeepCopy(),
|
||||
DefaultDeviceID: o.DefaultDeviceID.DeepCopy(),
|
||||
LocalDbStats: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.LocalDbStats),
|
||||
LocalChatDbStats: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.LocalChatDbStats),
|
||||
LocalBlockCacheDbStats: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.LocalBlockCacheDbStats),
|
||||
LocalSyncCacheDbStats: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.LocalSyncCacheDbStats),
|
||||
CacheDirSizeInfo: (func(x []DirSizeInfo) []DirSizeInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]DirSizeInfo, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.CacheDirSizeInfo),
|
||||
UiRouterMapping: (func(x map[string]int) map[string]int {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make(map[string]int, len(x))
|
||||
for k, v := range x {
|
||||
kCopy := k
|
||||
vCopy := v
|
||||
ret[kCopy] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.UiRouterMapping),
|
||||
}
|
||||
}
|
||||
|
||||
type KbClientStatus struct {
|
||||
Version string `codec:"version" json:"version"`
|
||||
}
|
||||
|
||||
func (o KbClientStatus) DeepCopy() KbClientStatus {
|
||||
return KbClientStatus{
|
||||
Version: o.Version,
|
||||
}
|
||||
}
|
||||
|
||||
type KbServiceStatus struct {
|
||||
Version string `codec:"version" json:"version"`
|
||||
Running bool `codec:"running" json:"running"`
|
||||
Pid string `codec:"pid" json:"pid"`
|
||||
Log string `codec:"log" json:"log"`
|
||||
EkLog string `codec:"ekLog" json:"ekLog"`
|
||||
}
|
||||
|
||||
func (o KbServiceStatus) DeepCopy() KbServiceStatus {
|
||||
return KbServiceStatus{
|
||||
Version: o.Version,
|
||||
Running: o.Running,
|
||||
Pid: o.Pid,
|
||||
Log: o.Log,
|
||||
EkLog: o.EkLog,
|
||||
}
|
||||
}
|
||||
|
||||
type KBFSStatus struct {
|
||||
Version string `codec:"version" json:"version"`
|
||||
InstalledVersion string `codec:"installedVersion" json:"installedVersion"`
|
||||
Running bool `codec:"running" json:"running"`
|
||||
Pid string `codec:"pid" json:"pid"`
|
||||
Log string `codec:"log" json:"log"`
|
||||
Mount string `codec:"mount" json:"mount"`
|
||||
}
|
||||
|
||||
func (o KBFSStatus) DeepCopy() KBFSStatus {
|
||||
return KBFSStatus{
|
||||
Version: o.Version,
|
||||
InstalledVersion: o.InstalledVersion,
|
||||
Running: o.Running,
|
||||
Pid: o.Pid,
|
||||
Log: o.Log,
|
||||
Mount: o.Mount,
|
||||
}
|
||||
}
|
||||
|
||||
type DesktopStatus struct {
|
||||
Version string `codec:"version" json:"version"`
|
||||
Running bool `codec:"running" json:"running"`
|
||||
Log string `codec:"log" json:"log"`
|
||||
}
|
||||
|
||||
func (o DesktopStatus) DeepCopy() DesktopStatus {
|
||||
return DesktopStatus{
|
||||
Version: o.Version,
|
||||
Running: o.Running,
|
||||
Log: o.Log,
|
||||
}
|
||||
}
|
||||
|
||||
type UpdaterStatus struct {
|
||||
Log string `codec:"log" json:"log"`
|
||||
}
|
||||
|
||||
func (o UpdaterStatus) DeepCopy() UpdaterStatus {
|
||||
return UpdaterStatus{
|
||||
Log: o.Log,
|
||||
}
|
||||
}
|
||||
|
||||
type StartStatus struct {
|
||||
Log string `codec:"log" json:"log"`
|
||||
}
|
||||
|
||||
func (o StartStatus) DeepCopy() StartStatus {
|
||||
return StartStatus{
|
||||
Log: o.Log,
|
||||
}
|
||||
}
|
||||
|
||||
type GitStatus struct {
|
||||
Log string `codec:"log" json:"log"`
|
||||
}
|
||||
|
||||
func (o GitStatus) DeepCopy() GitStatus {
|
||||
return GitStatus{
|
||||
Log: o.Log,
|
||||
}
|
||||
}
|
||||
|
||||
type FullStatus struct {
|
||||
Username string `codec:"username" json:"username"`
|
||||
ConfigPath string `codec:"configPath" json:"configPath"`
|
||||
CurStatus CurrentStatus `codec:"curStatus" json:"curStatus"`
|
||||
ExtStatus ExtendedStatus `codec:"extStatus" json:"extStatus"`
|
||||
Client KbClientStatus `codec:"client" json:"client"`
|
||||
Service KbServiceStatus `codec:"service" json:"service"`
|
||||
Kbfs KBFSStatus `codec:"kbfs" json:"kbfs"`
|
||||
Desktop DesktopStatus `codec:"desktop" json:"desktop"`
|
||||
Updater UpdaterStatus `codec:"updater" json:"updater"`
|
||||
Start StartStatus `codec:"start" json:"start"`
|
||||
Git GitStatus `codec:"git" json:"git"`
|
||||
}
|
||||
|
||||
func (o FullStatus) DeepCopy() FullStatus {
|
||||
return FullStatus{
|
||||
Username: o.Username,
|
||||
ConfigPath: o.ConfigPath,
|
||||
CurStatus: o.CurStatus.DeepCopy(),
|
||||
ExtStatus: o.ExtStatus.DeepCopy(),
|
||||
Client: o.Client.DeepCopy(),
|
||||
Service: o.Service.DeepCopy(),
|
||||
Kbfs: o.Kbfs.DeepCopy(),
|
||||
Desktop: o.Desktop.DeepCopy(),
|
||||
Updater: o.Updater.DeepCopy(),
|
||||
Start: o.Start.DeepCopy(),
|
||||
Git: o.Git.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type LogSendID string
|
||||
|
||||
func (o LogSendID) DeepCopy() LogSendID {
|
||||
return o
|
||||
}
|
||||
|
||||
type AllProvisionedUsernames struct {
|
||||
DefaultUsername string `codec:"defaultUsername" json:"defaultUsername"`
|
||||
ProvisionedUsernames []string `codec:"provisionedUsernames" json:"provisionedUsernames"`
|
||||
HasProvisionedUser bool `codec:"hasProvisionedUser" json:"hasProvisionedUser"`
|
||||
}
|
||||
|
||||
func (o AllProvisionedUsernames) DeepCopy() AllProvisionedUsernames {
|
||||
return AllProvisionedUsernames{
|
||||
DefaultUsername: o.DefaultUsername,
|
||||
ProvisionedUsernames: (func(x []string) []string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]string, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.ProvisionedUsernames),
|
||||
HasProvisionedUser: o.HasProvisionedUser,
|
||||
}
|
||||
}
|
||||
|
||||
type ForkType int
|
||||
|
||||
const (
|
||||
ForkType_NONE ForkType = 0
|
||||
ForkType_AUTO ForkType = 1
|
||||
ForkType_WATCHDOG ForkType = 2
|
||||
ForkType_LAUNCHD ForkType = 3
|
||||
ForkType_SYSTEMD ForkType = 4
|
||||
)
|
||||
|
||||
func (o ForkType) DeepCopy() ForkType { return o }
|
||||
|
||||
var ForkTypeMap = map[string]ForkType{
|
||||
"NONE": 0,
|
||||
"AUTO": 1,
|
||||
"WATCHDOG": 2,
|
||||
"LAUNCHD": 3,
|
||||
"SYSTEMD": 4,
|
||||
}
|
||||
|
||||
var ForkTypeRevMap = map[ForkType]string{
|
||||
0: "NONE",
|
||||
1: "AUTO",
|
||||
2: "WATCHDOG",
|
||||
3: "LAUNCHD",
|
||||
4: "SYSTEMD",
|
||||
}
|
||||
|
||||
func (e ForkType) String() string {
|
||||
if v, ok := ForkTypeRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type Config struct {
|
||||
ServerURI string `codec:"serverURI" json:"serverURI"`
|
||||
SocketFile string `codec:"socketFile" json:"socketFile"`
|
||||
Label string `codec:"label" json:"label"`
|
||||
RunMode string `codec:"runMode" json:"runMode"`
|
||||
GpgExists bool `codec:"gpgExists" json:"gpgExists"`
|
||||
GpgPath string `codec:"gpgPath" json:"gpgPath"`
|
||||
Version string `codec:"version" json:"version"`
|
||||
Path string `codec:"path" json:"path"`
|
||||
BinaryRealpath string `codec:"binaryRealpath" json:"binaryRealpath"`
|
||||
ConfigPath string `codec:"configPath" json:"configPath"`
|
||||
VersionShort string `codec:"versionShort" json:"versionShort"`
|
||||
VersionFull string `codec:"versionFull" json:"versionFull"`
|
||||
IsAutoForked bool `codec:"isAutoForked" json:"isAutoForked"`
|
||||
ForkType ForkType `codec:"forkType" json:"forkType"`
|
||||
}
|
||||
|
||||
func (o Config) DeepCopy() Config {
|
||||
return Config{
|
||||
ServerURI: o.ServerURI,
|
||||
SocketFile: o.SocketFile,
|
||||
Label: o.Label,
|
||||
RunMode: o.RunMode,
|
||||
GpgExists: o.GpgExists,
|
||||
GpgPath: o.GpgPath,
|
||||
Version: o.Version,
|
||||
Path: o.Path,
|
||||
BinaryRealpath: o.BinaryRealpath,
|
||||
ConfigPath: o.ConfigPath,
|
||||
VersionShort: o.VersionShort,
|
||||
VersionFull: o.VersionFull,
|
||||
IsAutoForked: o.IsAutoForked,
|
||||
ForkType: o.ForkType.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type ConfigValue struct {
|
||||
IsNull bool `codec:"isNull" json:"isNull"`
|
||||
B *bool `codec:"b,omitempty" json:"b,omitempty"`
|
||||
I *int `codec:"i,omitempty" json:"i,omitempty"`
|
||||
F *float64 `codec:"f,omitempty" json:"f,omitempty"`
|
||||
S *string `codec:"s,omitempty" json:"s,omitempty"`
|
||||
O *string `codec:"o,omitempty" json:"o,omitempty"`
|
||||
}
|
||||
|
||||
func (o ConfigValue) DeepCopy() ConfigValue {
|
||||
return ConfigValue{
|
||||
IsNull: o.IsNull,
|
||||
B: (func(x *bool) *bool {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.B),
|
||||
I: (func(x *int) *int {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.I),
|
||||
F: (func(x *float64) *float64 {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.F),
|
||||
S: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.S),
|
||||
O: (func(x *string) *string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x)
|
||||
return &tmp
|
||||
})(o.O),
|
||||
}
|
||||
}
|
||||
|
||||
type OutOfDateInfo struct {
|
||||
UpgradeTo string `codec:"upgradeTo" json:"upgradeTo"`
|
||||
UpgradeURI string `codec:"upgradeURI" json:"upgradeURI"`
|
||||
CustomMessage string `codec:"customMessage" json:"customMessage"`
|
||||
CriticalClockSkew int64 `codec:"criticalClockSkew" json:"criticalClockSkew"`
|
||||
}
|
||||
|
||||
func (o OutOfDateInfo) DeepCopy() OutOfDateInfo {
|
||||
return OutOfDateInfo{
|
||||
UpgradeTo: o.UpgradeTo,
|
||||
UpgradeURI: o.UpgradeURI,
|
||||
CustomMessage: o.CustomMessage,
|
||||
CriticalClockSkew: o.CriticalClockSkew,
|
||||
}
|
||||
}
|
||||
|
||||
type UpdateInfoStatus int
|
||||
|
||||
const (
|
||||
UpdateInfoStatus_UP_TO_DATE UpdateInfoStatus = 0
|
||||
UpdateInfoStatus_NEED_UPDATE UpdateInfoStatus = 1
|
||||
UpdateInfoStatus_CRITICALLY_OUT_OF_DATE UpdateInfoStatus = 2
|
||||
)
|
||||
|
||||
func (o UpdateInfoStatus) DeepCopy() UpdateInfoStatus { return o }
|
||||
|
||||
var UpdateInfoStatusMap = map[string]UpdateInfoStatus{
|
||||
"UP_TO_DATE": 0,
|
||||
"NEED_UPDATE": 1,
|
||||
"CRITICALLY_OUT_OF_DATE": 2,
|
||||
}
|
||||
|
||||
var UpdateInfoStatusRevMap = map[UpdateInfoStatus]string{
|
||||
0: "UP_TO_DATE",
|
||||
1: "NEED_UPDATE",
|
||||
2: "CRITICALLY_OUT_OF_DATE",
|
||||
}
|
||||
|
||||
func (e UpdateInfoStatus) String() string {
|
||||
if v, ok := UpdateInfoStatusRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type UpdateInfo struct {
|
||||
Status UpdateInfoStatus `codec:"status" json:"status"`
|
||||
Message string `codec:"message" json:"message"`
|
||||
}
|
||||
|
||||
func (o UpdateInfo) DeepCopy() UpdateInfo {
|
||||
return UpdateInfo{
|
||||
Status: o.Status.DeepCopy(),
|
||||
Message: o.Message,
|
||||
}
|
||||
}
|
||||
|
||||
type BootstrapStatus struct {
|
||||
Registered bool `codec:"registered" json:"registered"`
|
||||
LoggedIn bool `codec:"loggedIn" json:"loggedIn"`
|
||||
Uid UID `codec:"uid" json:"uid"`
|
||||
Username string `codec:"username" json:"username"`
|
||||
DeviceID DeviceID `codec:"deviceID" json:"deviceID"`
|
||||
DeviceName string `codec:"deviceName" json:"deviceName"`
|
||||
Fullname FullName `codec:"fullname" json:"fullname"`
|
||||
UserReacjis UserReacjis `codec:"userReacjis" json:"userReacjis"`
|
||||
HttpSrvInfo *HttpSrvInfo `codec:"httpSrvInfo,omitempty" json:"httpSrvInfo,omitempty"`
|
||||
}
|
||||
|
||||
func (o BootstrapStatus) DeepCopy() BootstrapStatus {
|
||||
return BootstrapStatus{
|
||||
Registered: o.Registered,
|
||||
LoggedIn: o.LoggedIn,
|
||||
Uid: o.Uid.DeepCopy(),
|
||||
Username: o.Username,
|
||||
DeviceID: o.DeviceID.DeepCopy(),
|
||||
DeviceName: o.DeviceName,
|
||||
Fullname: o.Fullname.DeepCopy(),
|
||||
UserReacjis: o.UserReacjis.DeepCopy(),
|
||||
HttpSrvInfo: (func(x *HttpSrvInfo) *HttpSrvInfo {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.HttpSrvInfo),
|
||||
}
|
||||
}
|
||||
|
||||
type UpdateInfoStatus2 int
|
||||
|
||||
const (
|
||||
UpdateInfoStatus2_OK UpdateInfoStatus2 = 0
|
||||
UpdateInfoStatus2_SUGGESTED UpdateInfoStatus2 = 1
|
||||
UpdateInfoStatus2_CRITICAL UpdateInfoStatus2 = 2
|
||||
)
|
||||
|
||||
func (o UpdateInfoStatus2) DeepCopy() UpdateInfoStatus2 { return o }
|
||||
|
||||
var UpdateInfoStatus2Map = map[string]UpdateInfoStatus2{
|
||||
"OK": 0,
|
||||
"SUGGESTED": 1,
|
||||
"CRITICAL": 2,
|
||||
}
|
||||
|
||||
var UpdateInfoStatus2RevMap = map[UpdateInfoStatus2]string{
|
||||
0: "OK",
|
||||
1: "SUGGESTED",
|
||||
2: "CRITICAL",
|
||||
}
|
||||
|
||||
func (e UpdateInfoStatus2) String() string {
|
||||
if v, ok := UpdateInfoStatus2RevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type UpdateDetails struct {
|
||||
Message string `codec:"message" json:"message"`
|
||||
}
|
||||
|
||||
func (o UpdateDetails) DeepCopy() UpdateDetails {
|
||||
return UpdateDetails{
|
||||
Message: o.Message,
|
||||
}
|
||||
}
|
||||
|
||||
type UpdateInfo2 struct {
|
||||
Status__ UpdateInfoStatus2 `codec:"status" json:"status"`
|
||||
Suggested__ *UpdateDetails `codec:"suggested,omitempty" json:"suggested,omitempty"`
|
||||
Critical__ *UpdateDetails `codec:"critical,omitempty" json:"critical,omitempty"`
|
||||
}
|
||||
|
||||
func (o *UpdateInfo2) Status() (ret UpdateInfoStatus2, err error) {
|
||||
switch o.Status__ {
|
||||
case UpdateInfoStatus2_SUGGESTED:
|
||||
if o.Suggested__ == nil {
|
||||
err = errors.New("unexpected nil value for Suggested__")
|
||||
return ret, err
|
||||
}
|
||||
case UpdateInfoStatus2_CRITICAL:
|
||||
if o.Critical__ == nil {
|
||||
err = errors.New("unexpected nil value for Critical__")
|
||||
return ret, err
|
||||
}
|
||||
}
|
||||
return o.Status__, nil
|
||||
}
|
||||
|
||||
func (o UpdateInfo2) Suggested() (res UpdateDetails) {
|
||||
if o.Status__ != UpdateInfoStatus2_SUGGESTED {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Suggested__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Suggested__
|
||||
}
|
||||
|
||||
func (o UpdateInfo2) Critical() (res UpdateDetails) {
|
||||
if o.Status__ != UpdateInfoStatus2_CRITICAL {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Critical__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Critical__
|
||||
}
|
||||
|
||||
func NewUpdateInfo2WithOk() UpdateInfo2 {
|
||||
return UpdateInfo2{
|
||||
Status__: UpdateInfoStatus2_OK,
|
||||
}
|
||||
}
|
||||
|
||||
func NewUpdateInfo2WithSuggested(v UpdateDetails) UpdateInfo2 {
|
||||
return UpdateInfo2{
|
||||
Status__: UpdateInfoStatus2_SUGGESTED,
|
||||
Suggested__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewUpdateInfo2WithCritical(v UpdateDetails) UpdateInfo2 {
|
||||
return UpdateInfo2{
|
||||
Status__: UpdateInfoStatus2_CRITICAL,
|
||||
Critical__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func (o UpdateInfo2) DeepCopy() UpdateInfo2 {
|
||||
return UpdateInfo2{
|
||||
Status__: o.Status__.DeepCopy(),
|
||||
Suggested__: (func(x *UpdateDetails) *UpdateDetails {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Suggested__),
|
||||
Critical__: (func(x *UpdateDetails) *UpdateDetails {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Critical__),
|
||||
}
|
||||
}
|
||||
|
||||
type ProxyType int
|
||||
|
||||
const (
|
||||
ProxyType_No_Proxy ProxyType = 0
|
||||
ProxyType_HTTP_Connect ProxyType = 1
|
||||
ProxyType_Socks ProxyType = 2
|
||||
)
|
||||
|
||||
func (o ProxyType) DeepCopy() ProxyType { return o }
|
||||
|
||||
var ProxyTypeMap = map[string]ProxyType{
|
||||
"No_Proxy": 0,
|
||||
"HTTP_Connect": 1,
|
||||
"Socks": 2,
|
||||
}
|
||||
|
||||
var ProxyTypeRevMap = map[ProxyType]string{
|
||||
0: "No_Proxy",
|
||||
1: "HTTP_Connect",
|
||||
2: "Socks",
|
||||
}
|
||||
|
||||
func (e ProxyType) String() string {
|
||||
if v, ok := ProxyTypeRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type ProxyData struct {
|
||||
AddressWithPort string `codec:"addressWithPort" json:"addressWithPort"`
|
||||
ProxyType ProxyType `codec:"proxyType" json:"proxyType"`
|
||||
CertPinning bool `codec:"certPinning" json:"certPinning"`
|
||||
}
|
||||
|
||||
func (o ProxyData) DeepCopy() ProxyData {
|
||||
return ProxyData{
|
||||
AddressWithPort: o.AddressWithPort,
|
||||
ProxyType: o.ProxyType.DeepCopy(),
|
||||
CertPinning: o.CertPinning,
|
||||
}
|
||||
}
|
724
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/constants.go
generated
vendored
Normal file
724
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/constants.go
generated
vendored
Normal file
@@ -0,0 +1,724 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/constants.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type StatusCode int
|
||||
|
||||
const (
|
||||
StatusCode_SCOk StatusCode = 0
|
||||
StatusCode_SCInputError StatusCode = 100
|
||||
StatusCode_SCLoginRequired StatusCode = 201
|
||||
StatusCode_SCBadSession StatusCode = 202
|
||||
StatusCode_SCBadLoginUserNotFound StatusCode = 203
|
||||
StatusCode_SCBadLoginPassword StatusCode = 204
|
||||
StatusCode_SCNotFound StatusCode = 205
|
||||
StatusCode_SCThrottleControl StatusCode = 210
|
||||
StatusCode_SCDeleted StatusCode = 216
|
||||
StatusCode_SCGeneric StatusCode = 218
|
||||
StatusCode_SCAlreadyLoggedIn StatusCode = 235
|
||||
StatusCode_SCExists StatusCode = 230
|
||||
StatusCode_SCCanceled StatusCode = 237
|
||||
StatusCode_SCInputCanceled StatusCode = 239
|
||||
StatusCode_SCBadUsername StatusCode = 243
|
||||
StatusCode_SCOffline StatusCode = 267
|
||||
StatusCode_SCReloginRequired StatusCode = 274
|
||||
StatusCode_SCResolutionFailed StatusCode = 275
|
||||
StatusCode_SCProfileNotPublic StatusCode = 276
|
||||
StatusCode_SCIdentifyFailed StatusCode = 277
|
||||
StatusCode_SCTrackingBroke StatusCode = 278
|
||||
StatusCode_SCWrongCryptoFormat StatusCode = 279
|
||||
StatusCode_SCDecryptionError StatusCode = 280
|
||||
StatusCode_SCInvalidAddress StatusCode = 281
|
||||
StatusCode_SCNoSession StatusCode = 283
|
||||
StatusCode_SCAccountReset StatusCode = 290
|
||||
StatusCode_SCIdentifiesFailed StatusCode = 295
|
||||
StatusCode_SCNoSpaceOnDevice StatusCode = 297
|
||||
StatusCode_SCMerkleClientError StatusCode = 299
|
||||
StatusCode_SCBadEmail StatusCode = 472
|
||||
StatusCode_SCRateLimit StatusCode = 602
|
||||
StatusCode_SCBadSignupUsernameTaken StatusCode = 701
|
||||
StatusCode_SCDuplicate StatusCode = 706
|
||||
StatusCode_SCBadInvitationCode StatusCode = 707
|
||||
StatusCode_SCBadSignupUsernameReserved StatusCode = 710
|
||||
StatusCode_SCBadSignupTeamName StatusCode = 711
|
||||
StatusCode_SCFeatureFlag StatusCode = 712
|
||||
StatusCode_SCEmailTaken StatusCode = 713
|
||||
StatusCode_SCEmailAlreadyAdded StatusCode = 714
|
||||
StatusCode_SCEmailLimitExceeded StatusCode = 715
|
||||
StatusCode_SCEmailCannotDeletePrimary StatusCode = 716
|
||||
StatusCode_SCEmailUnknown StatusCode = 717
|
||||
StatusCode_SCBotSignupTokenNotFound StatusCode = 719
|
||||
StatusCode_SCNoUpdate StatusCode = 723
|
||||
StatusCode_SCMissingResult StatusCode = 801
|
||||
StatusCode_SCKeyNotFound StatusCode = 901
|
||||
StatusCode_SCKeyCorrupted StatusCode = 905
|
||||
StatusCode_SCKeyInUse StatusCode = 907
|
||||
StatusCode_SCKeyBadGen StatusCode = 913
|
||||
StatusCode_SCKeyNoSecret StatusCode = 914
|
||||
StatusCode_SCKeyBadUIDs StatusCode = 915
|
||||
StatusCode_SCKeyNoActive StatusCode = 916
|
||||
StatusCode_SCKeyNoSig StatusCode = 917
|
||||
StatusCode_SCKeyBadSig StatusCode = 918
|
||||
StatusCode_SCKeyBadEldest StatusCode = 919
|
||||
StatusCode_SCKeyNoEldest StatusCode = 920
|
||||
StatusCode_SCKeyDuplicateUpdate StatusCode = 921
|
||||
StatusCode_SCSibkeyAlreadyExists StatusCode = 922
|
||||
StatusCode_SCDecryptionKeyNotFound StatusCode = 924
|
||||
StatusCode_SCKeyNoPGPEncryption StatusCode = 927
|
||||
StatusCode_SCKeyNoNaClEncryption StatusCode = 928
|
||||
StatusCode_SCKeySyncedPGPNotFound StatusCode = 929
|
||||
StatusCode_SCKeyNoMatchingGPG StatusCode = 930
|
||||
StatusCode_SCKeyRevoked StatusCode = 931
|
||||
StatusCode_SCSigCannotVerify StatusCode = 1002
|
||||
StatusCode_SCSigWrongKey StatusCode = 1008
|
||||
StatusCode_SCSigOldSeqno StatusCode = 1010
|
||||
StatusCode_SCSigCreationDisallowed StatusCode = 1016
|
||||
StatusCode_SCSigMissingRatchet StatusCode = 1021
|
||||
StatusCode_SCSigBadTotalOrder StatusCode = 1022
|
||||
StatusCode_SCBadTrackSession StatusCode = 1301
|
||||
StatusCode_SCDeviceBadName StatusCode = 1404
|
||||
StatusCode_SCDeviceBadStatus StatusCode = 1405
|
||||
StatusCode_SCDeviceNameInUse StatusCode = 1408
|
||||
StatusCode_SCDeviceNotFound StatusCode = 1409
|
||||
StatusCode_SCDeviceMismatch StatusCode = 1410
|
||||
StatusCode_SCDeviceRequired StatusCode = 1411
|
||||
StatusCode_SCDevicePrevProvisioned StatusCode = 1413
|
||||
StatusCode_SCDeviceNoProvision StatusCode = 1414
|
||||
StatusCode_SCDeviceProvisionViaDevice StatusCode = 1415
|
||||
StatusCode_SCRevokeCurrentDevice StatusCode = 1416
|
||||
StatusCode_SCRevokeLastDevice StatusCode = 1417
|
||||
StatusCode_SCDeviceProvisionOffline StatusCode = 1418
|
||||
StatusCode_SCRevokeLastDevicePGP StatusCode = 1419
|
||||
StatusCode_SCStreamExists StatusCode = 1501
|
||||
StatusCode_SCStreamNotFound StatusCode = 1502
|
||||
StatusCode_SCStreamWrongKind StatusCode = 1503
|
||||
StatusCode_SCStreamEOF StatusCode = 1504
|
||||
StatusCode_SCStreamUnknown StatusCode = 1505
|
||||
StatusCode_SCGenericAPIError StatusCode = 1600
|
||||
StatusCode_SCAPINetworkError StatusCode = 1601
|
||||
StatusCode_SCTimeout StatusCode = 1602
|
||||
StatusCode_SCProofError StatusCode = 1701
|
||||
StatusCode_SCIdentificationExpired StatusCode = 1702
|
||||
StatusCode_SCSelfNotFound StatusCode = 1703
|
||||
StatusCode_SCBadKexPhrase StatusCode = 1704
|
||||
StatusCode_SCNoUIDelegation StatusCode = 1705
|
||||
StatusCode_SCNoUI StatusCode = 1706
|
||||
StatusCode_SCGPGUnavailable StatusCode = 1707
|
||||
StatusCode_SCInvalidVersionError StatusCode = 1800
|
||||
StatusCode_SCOldVersionError StatusCode = 1801
|
||||
StatusCode_SCInvalidLocationError StatusCode = 1802
|
||||
StatusCode_SCServiceStatusError StatusCode = 1803
|
||||
StatusCode_SCInstallError StatusCode = 1804
|
||||
StatusCode_SCLoadKextError StatusCode = 1810
|
||||
StatusCode_SCLoadKextPermError StatusCode = 1811
|
||||
StatusCode_SCGitInternal StatusCode = 2300
|
||||
StatusCode_SCGitRepoAlreadyExists StatusCode = 2301
|
||||
StatusCode_SCGitInvalidRepoName StatusCode = 2302
|
||||
StatusCode_SCGitCannotDelete StatusCode = 2303
|
||||
StatusCode_SCGitRepoDoesntExist StatusCode = 2304
|
||||
StatusCode_SCLoginStateTimeout StatusCode = 2400
|
||||
StatusCode_SCChatInternal StatusCode = 2500
|
||||
StatusCode_SCChatRateLimit StatusCode = 2501
|
||||
StatusCode_SCChatConvExists StatusCode = 2502
|
||||
StatusCode_SCChatUnknownTLFID StatusCode = 2503
|
||||
StatusCode_SCChatNotInConv StatusCode = 2504
|
||||
StatusCode_SCChatBadMsg StatusCode = 2505
|
||||
StatusCode_SCChatBroadcast StatusCode = 2506
|
||||
StatusCode_SCChatAlreadySuperseded StatusCode = 2507
|
||||
StatusCode_SCChatAlreadyDeleted StatusCode = 2508
|
||||
StatusCode_SCChatTLFFinalized StatusCode = 2509
|
||||
StatusCode_SCChatCollision StatusCode = 2510
|
||||
StatusCode_SCIdentifySummaryError StatusCode = 2511
|
||||
StatusCode_SCNeedSelfRekey StatusCode = 2512
|
||||
StatusCode_SCNeedOtherRekey StatusCode = 2513
|
||||
StatusCode_SCChatMessageCollision StatusCode = 2514
|
||||
StatusCode_SCChatDuplicateMessage StatusCode = 2515
|
||||
StatusCode_SCChatClientError StatusCode = 2516
|
||||
StatusCode_SCChatNotInTeam StatusCode = 2517
|
||||
StatusCode_SCChatStalePreviousState StatusCode = 2518
|
||||
StatusCode_SCChatEphemeralRetentionPolicyViolatedError StatusCode = 2519
|
||||
StatusCode_SCTeamBadMembership StatusCode = 2604
|
||||
StatusCode_SCTeamSelfNotOwner StatusCode = 2607
|
||||
StatusCode_SCTeamNotFound StatusCode = 2614
|
||||
StatusCode_SCTeamExists StatusCode = 2619
|
||||
StatusCode_SCTeamReadError StatusCode = 2623
|
||||
StatusCode_SCTeamWritePermDenied StatusCode = 2625
|
||||
StatusCode_SCTeamBadGeneration StatusCode = 2634
|
||||
StatusCode_SCNoOp StatusCode = 2638
|
||||
StatusCode_SCTeamInviteBadCancel StatusCode = 2645
|
||||
StatusCode_SCTeamInviteBadToken StatusCode = 2646
|
||||
StatusCode_SCTeamTarDuplicate StatusCode = 2663
|
||||
StatusCode_SCTeamTarNotFound StatusCode = 2664
|
||||
StatusCode_SCTeamMemberExists StatusCode = 2665
|
||||
StatusCode_SCTeamNotReleased StatusCode = 2666
|
||||
StatusCode_SCTeamPermanentlyLeft StatusCode = 2667
|
||||
StatusCode_SCTeamNeedRootId StatusCode = 2668
|
||||
StatusCode_SCTeamHasLiveChildren StatusCode = 2669
|
||||
StatusCode_SCTeamDeleteError StatusCode = 2670
|
||||
StatusCode_SCTeamBadRootTeam StatusCode = 2671
|
||||
StatusCode_SCTeamNameConflictsWithUser StatusCode = 2672
|
||||
StatusCode_SCTeamDeleteNoUpPointer StatusCode = 2673
|
||||
StatusCode_SCTeamNeedOwner StatusCode = 2674
|
||||
StatusCode_SCTeamNoOwnerAllowed StatusCode = 2675
|
||||
StatusCode_SCTeamImplicitNoNonSbs StatusCode = 2676
|
||||
StatusCode_SCTeamImplicitBadHash StatusCode = 2677
|
||||
StatusCode_SCTeamImplicitBadName StatusCode = 2678
|
||||
StatusCode_SCTeamImplicitClash StatusCode = 2679
|
||||
StatusCode_SCTeamImplicitDuplicate StatusCode = 2680
|
||||
StatusCode_SCTeamImplicitBadOp StatusCode = 2681
|
||||
StatusCode_SCTeamImplicitBadRole StatusCode = 2682
|
||||
StatusCode_SCTeamImplicitNotFound StatusCode = 2683
|
||||
StatusCode_SCTeamBadAdminSeqnoType StatusCode = 2684
|
||||
StatusCode_SCTeamImplicitBadAdd StatusCode = 2685
|
||||
StatusCode_SCTeamImplicitBadRemove StatusCode = 2686
|
||||
StatusCode_SCTeamInviteTokenReused StatusCode = 2696
|
||||
StatusCode_SCTeamKeyMaskNotFound StatusCode = 2697
|
||||
StatusCode_SCTeamBanned StatusCode = 2702
|
||||
StatusCode_SCTeamInvalidBan StatusCode = 2703
|
||||
StatusCode_SCTeamShowcasePermDenied StatusCode = 2711
|
||||
StatusCode_SCTeamProvisionalCanKey StatusCode = 2721
|
||||
StatusCode_SCTeamProvisionalCannotKey StatusCode = 2722
|
||||
StatusCode_SCTeamFTLOutdated StatusCode = 2736
|
||||
StatusCode_SCTeamStorageWrongRevision StatusCode = 2760
|
||||
StatusCode_SCTeamStorageBadGeneration StatusCode = 2761
|
||||
StatusCode_SCTeamStorageNotFound StatusCode = 2762
|
||||
StatusCode_SCTeamContactSettingsBlock StatusCode = 2763
|
||||
StatusCode_SCEphemeralKeyBadGeneration StatusCode = 2900
|
||||
StatusCode_SCEphemeralKeyUnexpectedBox StatusCode = 2901
|
||||
StatusCode_SCEphemeralKeyMissingBox StatusCode = 2902
|
||||
StatusCode_SCEphemeralKeyWrongNumberOfKeys StatusCode = 2903
|
||||
StatusCode_SCEphemeralKeyMismatchedKey StatusCode = 2904
|
||||
StatusCode_SCEphemeralPairwiseMACsMissingUIDs StatusCode = 2905
|
||||
StatusCode_SCEphemeralDeviceAfterEK StatusCode = 2906
|
||||
StatusCode_SCEphemeralMemberAfterEK StatusCode = 2907
|
||||
StatusCode_SCEphemeralDeviceStale StatusCode = 2908
|
||||
StatusCode_SCEphemeralUserStale StatusCode = 2909
|
||||
StatusCode_SCStellarError StatusCode = 3100
|
||||
StatusCode_SCStellarBadInput StatusCode = 3101
|
||||
StatusCode_SCStellarWrongRevision StatusCode = 3102
|
||||
StatusCode_SCStellarMissingBundle StatusCode = 3103
|
||||
StatusCode_SCStellarBadPuk StatusCode = 3104
|
||||
StatusCode_SCStellarMissingAccount StatusCode = 3105
|
||||
StatusCode_SCStellarBadPrev StatusCode = 3106
|
||||
StatusCode_SCStellarWrongPrimary StatusCode = 3107
|
||||
StatusCode_SCStellarUnsupportedCurrency StatusCode = 3108
|
||||
StatusCode_SCStellarNeedDisclaimer StatusCode = 3109
|
||||
StatusCode_SCStellarDeviceNotMobile StatusCode = 3110
|
||||
StatusCode_SCStellarMobileOnlyPurgatory StatusCode = 3111
|
||||
StatusCode_SCStellarIncompatibleVersion StatusCode = 3112
|
||||
StatusCode_SCNISTWrongSize StatusCode = 3201
|
||||
StatusCode_SCNISTBadMode StatusCode = 3202
|
||||
StatusCode_SCNISTHashWrongSize StatusCode = 3203
|
||||
StatusCode_SCNISTSigWrongSize StatusCode = 3204
|
||||
StatusCode_SCNISTSigBadInput StatusCode = 3205
|
||||
StatusCode_SCNISTSigBadUID StatusCode = 3206
|
||||
StatusCode_SCNISTSigBadDeviceID StatusCode = 3207
|
||||
StatusCode_SCNISTSigBadNonce StatusCode = 3208
|
||||
StatusCode_SCNISTNoSigOrHash StatusCode = 3209
|
||||
StatusCode_SCNISTExpired StatusCode = 3210
|
||||
StatusCode_SCNISTSigRevoked StatusCode = 3211
|
||||
StatusCode_SCNISTKeyRevoked StatusCode = 3212
|
||||
StatusCode_SCNISTUserDeleted StatusCode = 3213
|
||||
StatusCode_SCNISTNoDevice StatusCode = 3214
|
||||
StatusCode_SCNISTSigCannot_verify StatusCode = 3215
|
||||
StatusCode_SCNISTReplay StatusCode = 3216
|
||||
StatusCode_SCNISTSigBadLifetime StatusCode = 3217
|
||||
StatusCode_SCNISTNotFound StatusCode = 3218
|
||||
StatusCode_SCNISTBadClock StatusCode = 3219
|
||||
StatusCode_SCNISTSigBadCtime StatusCode = 3220
|
||||
StatusCode_SCBadSignupUsernameDeleted StatusCode = 3221
|
||||
StatusCode_SCPhoneNumberUnknown StatusCode = 3400
|
||||
StatusCode_SCPhoneNumberAlreadyVerified StatusCode = 3401
|
||||
StatusCode_SCPhoneNumberVerificationCodeExpired StatusCode = 3402
|
||||
StatusCode_SCPhoneNumberWrongVerificationCode StatusCode = 3403
|
||||
StatusCode_SCPhoneNumberLimitExceeded StatusCode = 3404
|
||||
StatusCode_SCNoPaperKeys StatusCode = 3605
|
||||
StatusCode_SCTeambotKeyGenerationExists StatusCode = 3800
|
||||
StatusCode_SCTeambotKeyOldBoxedGeneration StatusCode = 3801
|
||||
StatusCode_SCTeambotKeyBadGeneration StatusCode = 3802
|
||||
StatusCode_SCAirdropRegisterFailedMisc StatusCode = 4207
|
||||
)
|
||||
|
||||
func (o StatusCode) DeepCopy() StatusCode { return o }
|
||||
|
||||
var StatusCodeMap = map[string]StatusCode{
|
||||
"SCOk": 0,
|
||||
"SCInputError": 100,
|
||||
"SCLoginRequired": 201,
|
||||
"SCBadSession": 202,
|
||||
"SCBadLoginUserNotFound": 203,
|
||||
"SCBadLoginPassword": 204,
|
||||
"SCNotFound": 205,
|
||||
"SCThrottleControl": 210,
|
||||
"SCDeleted": 216,
|
||||
"SCGeneric": 218,
|
||||
"SCAlreadyLoggedIn": 235,
|
||||
"SCExists": 230,
|
||||
"SCCanceled": 237,
|
||||
"SCInputCanceled": 239,
|
||||
"SCBadUsername": 243,
|
||||
"SCOffline": 267,
|
||||
"SCReloginRequired": 274,
|
||||
"SCResolutionFailed": 275,
|
||||
"SCProfileNotPublic": 276,
|
||||
"SCIdentifyFailed": 277,
|
||||
"SCTrackingBroke": 278,
|
||||
"SCWrongCryptoFormat": 279,
|
||||
"SCDecryptionError": 280,
|
||||
"SCInvalidAddress": 281,
|
||||
"SCNoSession": 283,
|
||||
"SCAccountReset": 290,
|
||||
"SCIdentifiesFailed": 295,
|
||||
"SCNoSpaceOnDevice": 297,
|
||||
"SCMerkleClientError": 299,
|
||||
"SCBadEmail": 472,
|
||||
"SCRateLimit": 602,
|
||||
"SCBadSignupUsernameTaken": 701,
|
||||
"SCDuplicate": 706,
|
||||
"SCBadInvitationCode": 707,
|
||||
"SCBadSignupUsernameReserved": 710,
|
||||
"SCBadSignupTeamName": 711,
|
||||
"SCFeatureFlag": 712,
|
||||
"SCEmailTaken": 713,
|
||||
"SCEmailAlreadyAdded": 714,
|
||||
"SCEmailLimitExceeded": 715,
|
||||
"SCEmailCannotDeletePrimary": 716,
|
||||
"SCEmailUnknown": 717,
|
||||
"SCBotSignupTokenNotFound": 719,
|
||||
"SCNoUpdate": 723,
|
||||
"SCMissingResult": 801,
|
||||
"SCKeyNotFound": 901,
|
||||
"SCKeyCorrupted": 905,
|
||||
"SCKeyInUse": 907,
|
||||
"SCKeyBadGen": 913,
|
||||
"SCKeyNoSecret": 914,
|
||||
"SCKeyBadUIDs": 915,
|
||||
"SCKeyNoActive": 916,
|
||||
"SCKeyNoSig": 917,
|
||||
"SCKeyBadSig": 918,
|
||||
"SCKeyBadEldest": 919,
|
||||
"SCKeyNoEldest": 920,
|
||||
"SCKeyDuplicateUpdate": 921,
|
||||
"SCSibkeyAlreadyExists": 922,
|
||||
"SCDecryptionKeyNotFound": 924,
|
||||
"SCKeyNoPGPEncryption": 927,
|
||||
"SCKeyNoNaClEncryption": 928,
|
||||
"SCKeySyncedPGPNotFound": 929,
|
||||
"SCKeyNoMatchingGPG": 930,
|
||||
"SCKeyRevoked": 931,
|
||||
"SCSigCannotVerify": 1002,
|
||||
"SCSigWrongKey": 1008,
|
||||
"SCSigOldSeqno": 1010,
|
||||
"SCSigCreationDisallowed": 1016,
|
||||
"SCSigMissingRatchet": 1021,
|
||||
"SCSigBadTotalOrder": 1022,
|
||||
"SCBadTrackSession": 1301,
|
||||
"SCDeviceBadName": 1404,
|
||||
"SCDeviceBadStatus": 1405,
|
||||
"SCDeviceNameInUse": 1408,
|
||||
"SCDeviceNotFound": 1409,
|
||||
"SCDeviceMismatch": 1410,
|
||||
"SCDeviceRequired": 1411,
|
||||
"SCDevicePrevProvisioned": 1413,
|
||||
"SCDeviceNoProvision": 1414,
|
||||
"SCDeviceProvisionViaDevice": 1415,
|
||||
"SCRevokeCurrentDevice": 1416,
|
||||
"SCRevokeLastDevice": 1417,
|
||||
"SCDeviceProvisionOffline": 1418,
|
||||
"SCRevokeLastDevicePGP": 1419,
|
||||
"SCStreamExists": 1501,
|
||||
"SCStreamNotFound": 1502,
|
||||
"SCStreamWrongKind": 1503,
|
||||
"SCStreamEOF": 1504,
|
||||
"SCStreamUnknown": 1505,
|
||||
"SCGenericAPIError": 1600,
|
||||
"SCAPINetworkError": 1601,
|
||||
"SCTimeout": 1602,
|
||||
"SCProofError": 1701,
|
||||
"SCIdentificationExpired": 1702,
|
||||
"SCSelfNotFound": 1703,
|
||||
"SCBadKexPhrase": 1704,
|
||||
"SCNoUIDelegation": 1705,
|
||||
"SCNoUI": 1706,
|
||||
"SCGPGUnavailable": 1707,
|
||||
"SCInvalidVersionError": 1800,
|
||||
"SCOldVersionError": 1801,
|
||||
"SCInvalidLocationError": 1802,
|
||||
"SCServiceStatusError": 1803,
|
||||
"SCInstallError": 1804,
|
||||
"SCLoadKextError": 1810,
|
||||
"SCLoadKextPermError": 1811,
|
||||
"SCGitInternal": 2300,
|
||||
"SCGitRepoAlreadyExists": 2301,
|
||||
"SCGitInvalidRepoName": 2302,
|
||||
"SCGitCannotDelete": 2303,
|
||||
"SCGitRepoDoesntExist": 2304,
|
||||
"SCLoginStateTimeout": 2400,
|
||||
"SCChatInternal": 2500,
|
||||
"SCChatRateLimit": 2501,
|
||||
"SCChatConvExists": 2502,
|
||||
"SCChatUnknownTLFID": 2503,
|
||||
"SCChatNotInConv": 2504,
|
||||
"SCChatBadMsg": 2505,
|
||||
"SCChatBroadcast": 2506,
|
||||
"SCChatAlreadySuperseded": 2507,
|
||||
"SCChatAlreadyDeleted": 2508,
|
||||
"SCChatTLFFinalized": 2509,
|
||||
"SCChatCollision": 2510,
|
||||
"SCIdentifySummaryError": 2511,
|
||||
"SCNeedSelfRekey": 2512,
|
||||
"SCNeedOtherRekey": 2513,
|
||||
"SCChatMessageCollision": 2514,
|
||||
"SCChatDuplicateMessage": 2515,
|
||||
"SCChatClientError": 2516,
|
||||
"SCChatNotInTeam": 2517,
|
||||
"SCChatStalePreviousState": 2518,
|
||||
"SCChatEphemeralRetentionPolicyViolatedError": 2519,
|
||||
"SCTeamBadMembership": 2604,
|
||||
"SCTeamSelfNotOwner": 2607,
|
||||
"SCTeamNotFound": 2614,
|
||||
"SCTeamExists": 2619,
|
||||
"SCTeamReadError": 2623,
|
||||
"SCTeamWritePermDenied": 2625,
|
||||
"SCTeamBadGeneration": 2634,
|
||||
"SCNoOp": 2638,
|
||||
"SCTeamInviteBadCancel": 2645,
|
||||
"SCTeamInviteBadToken": 2646,
|
||||
"SCTeamTarDuplicate": 2663,
|
||||
"SCTeamTarNotFound": 2664,
|
||||
"SCTeamMemberExists": 2665,
|
||||
"SCTeamNotReleased": 2666,
|
||||
"SCTeamPermanentlyLeft": 2667,
|
||||
"SCTeamNeedRootId": 2668,
|
||||
"SCTeamHasLiveChildren": 2669,
|
||||
"SCTeamDeleteError": 2670,
|
||||
"SCTeamBadRootTeam": 2671,
|
||||
"SCTeamNameConflictsWithUser": 2672,
|
||||
"SCTeamDeleteNoUpPointer": 2673,
|
||||
"SCTeamNeedOwner": 2674,
|
||||
"SCTeamNoOwnerAllowed": 2675,
|
||||
"SCTeamImplicitNoNonSbs": 2676,
|
||||
"SCTeamImplicitBadHash": 2677,
|
||||
"SCTeamImplicitBadName": 2678,
|
||||
"SCTeamImplicitClash": 2679,
|
||||
"SCTeamImplicitDuplicate": 2680,
|
||||
"SCTeamImplicitBadOp": 2681,
|
||||
"SCTeamImplicitBadRole": 2682,
|
||||
"SCTeamImplicitNotFound": 2683,
|
||||
"SCTeamBadAdminSeqnoType": 2684,
|
||||
"SCTeamImplicitBadAdd": 2685,
|
||||
"SCTeamImplicitBadRemove": 2686,
|
||||
"SCTeamInviteTokenReused": 2696,
|
||||
"SCTeamKeyMaskNotFound": 2697,
|
||||
"SCTeamBanned": 2702,
|
||||
"SCTeamInvalidBan": 2703,
|
||||
"SCTeamShowcasePermDenied": 2711,
|
||||
"SCTeamProvisionalCanKey": 2721,
|
||||
"SCTeamProvisionalCannotKey": 2722,
|
||||
"SCTeamFTLOutdated": 2736,
|
||||
"SCTeamStorageWrongRevision": 2760,
|
||||
"SCTeamStorageBadGeneration": 2761,
|
||||
"SCTeamStorageNotFound": 2762,
|
||||
"SCTeamContactSettingsBlock": 2763,
|
||||
"SCEphemeralKeyBadGeneration": 2900,
|
||||
"SCEphemeralKeyUnexpectedBox": 2901,
|
||||
"SCEphemeralKeyMissingBox": 2902,
|
||||
"SCEphemeralKeyWrongNumberOfKeys": 2903,
|
||||
"SCEphemeralKeyMismatchedKey": 2904,
|
||||
"SCEphemeralPairwiseMACsMissingUIDs": 2905,
|
||||
"SCEphemeralDeviceAfterEK": 2906,
|
||||
"SCEphemeralMemberAfterEK": 2907,
|
||||
"SCEphemeralDeviceStale": 2908,
|
||||
"SCEphemeralUserStale": 2909,
|
||||
"SCStellarError": 3100,
|
||||
"SCStellarBadInput": 3101,
|
||||
"SCStellarWrongRevision": 3102,
|
||||
"SCStellarMissingBundle": 3103,
|
||||
"SCStellarBadPuk": 3104,
|
||||
"SCStellarMissingAccount": 3105,
|
||||
"SCStellarBadPrev": 3106,
|
||||
"SCStellarWrongPrimary": 3107,
|
||||
"SCStellarUnsupportedCurrency": 3108,
|
||||
"SCStellarNeedDisclaimer": 3109,
|
||||
"SCStellarDeviceNotMobile": 3110,
|
||||
"SCStellarMobileOnlyPurgatory": 3111,
|
||||
"SCStellarIncompatibleVersion": 3112,
|
||||
"SCNISTWrongSize": 3201,
|
||||
"SCNISTBadMode": 3202,
|
||||
"SCNISTHashWrongSize": 3203,
|
||||
"SCNISTSigWrongSize": 3204,
|
||||
"SCNISTSigBadInput": 3205,
|
||||
"SCNISTSigBadUID": 3206,
|
||||
"SCNISTSigBadDeviceID": 3207,
|
||||
"SCNISTSigBadNonce": 3208,
|
||||
"SCNISTNoSigOrHash": 3209,
|
||||
"SCNISTExpired": 3210,
|
||||
"SCNISTSigRevoked": 3211,
|
||||
"SCNISTKeyRevoked": 3212,
|
||||
"SCNISTUserDeleted": 3213,
|
||||
"SCNISTNoDevice": 3214,
|
||||
"SCNISTSigCannot_verify": 3215,
|
||||
"SCNISTReplay": 3216,
|
||||
"SCNISTSigBadLifetime": 3217,
|
||||
"SCNISTNotFound": 3218,
|
||||
"SCNISTBadClock": 3219,
|
||||
"SCNISTSigBadCtime": 3220,
|
||||
"SCBadSignupUsernameDeleted": 3221,
|
||||
"SCPhoneNumberUnknown": 3400,
|
||||
"SCPhoneNumberAlreadyVerified": 3401,
|
||||
"SCPhoneNumberVerificationCodeExpired": 3402,
|
||||
"SCPhoneNumberWrongVerificationCode": 3403,
|
||||
"SCPhoneNumberLimitExceeded": 3404,
|
||||
"SCNoPaperKeys": 3605,
|
||||
"SCTeambotKeyGenerationExists": 3800,
|
||||
"SCTeambotKeyOldBoxedGeneration": 3801,
|
||||
"SCTeambotKeyBadGeneration": 3802,
|
||||
"SCAirdropRegisterFailedMisc": 4207,
|
||||
}
|
||||
|
||||
var StatusCodeRevMap = map[StatusCode]string{
|
||||
0: "SCOk",
|
||||
100: "SCInputError",
|
||||
201: "SCLoginRequired",
|
||||
202: "SCBadSession",
|
||||
203: "SCBadLoginUserNotFound",
|
||||
204: "SCBadLoginPassword",
|
||||
205: "SCNotFound",
|
||||
210: "SCThrottleControl",
|
||||
216: "SCDeleted",
|
||||
218: "SCGeneric",
|
||||
235: "SCAlreadyLoggedIn",
|
||||
230: "SCExists",
|
||||
237: "SCCanceled",
|
||||
239: "SCInputCanceled",
|
||||
243: "SCBadUsername",
|
||||
267: "SCOffline",
|
||||
274: "SCReloginRequired",
|
||||
275: "SCResolutionFailed",
|
||||
276: "SCProfileNotPublic",
|
||||
277: "SCIdentifyFailed",
|
||||
278: "SCTrackingBroke",
|
||||
279: "SCWrongCryptoFormat",
|
||||
280: "SCDecryptionError",
|
||||
281: "SCInvalidAddress",
|
||||
283: "SCNoSession",
|
||||
290: "SCAccountReset",
|
||||
295: "SCIdentifiesFailed",
|
||||
297: "SCNoSpaceOnDevice",
|
||||
299: "SCMerkleClientError",
|
||||
472: "SCBadEmail",
|
||||
602: "SCRateLimit",
|
||||
701: "SCBadSignupUsernameTaken",
|
||||
706: "SCDuplicate",
|
||||
707: "SCBadInvitationCode",
|
||||
710: "SCBadSignupUsernameReserved",
|
||||
711: "SCBadSignupTeamName",
|
||||
712: "SCFeatureFlag",
|
||||
713: "SCEmailTaken",
|
||||
714: "SCEmailAlreadyAdded",
|
||||
715: "SCEmailLimitExceeded",
|
||||
716: "SCEmailCannotDeletePrimary",
|
||||
717: "SCEmailUnknown",
|
||||
719: "SCBotSignupTokenNotFound",
|
||||
723: "SCNoUpdate",
|
||||
801: "SCMissingResult",
|
||||
901: "SCKeyNotFound",
|
||||
905: "SCKeyCorrupted",
|
||||
907: "SCKeyInUse",
|
||||
913: "SCKeyBadGen",
|
||||
914: "SCKeyNoSecret",
|
||||
915: "SCKeyBadUIDs",
|
||||
916: "SCKeyNoActive",
|
||||
917: "SCKeyNoSig",
|
||||
918: "SCKeyBadSig",
|
||||
919: "SCKeyBadEldest",
|
||||
920: "SCKeyNoEldest",
|
||||
921: "SCKeyDuplicateUpdate",
|
||||
922: "SCSibkeyAlreadyExists",
|
||||
924: "SCDecryptionKeyNotFound",
|
||||
927: "SCKeyNoPGPEncryption",
|
||||
928: "SCKeyNoNaClEncryption",
|
||||
929: "SCKeySyncedPGPNotFound",
|
||||
930: "SCKeyNoMatchingGPG",
|
||||
931: "SCKeyRevoked",
|
||||
1002: "SCSigCannotVerify",
|
||||
1008: "SCSigWrongKey",
|
||||
1010: "SCSigOldSeqno",
|
||||
1016: "SCSigCreationDisallowed",
|
||||
1021: "SCSigMissingRatchet",
|
||||
1022: "SCSigBadTotalOrder",
|
||||
1301: "SCBadTrackSession",
|
||||
1404: "SCDeviceBadName",
|
||||
1405: "SCDeviceBadStatus",
|
||||
1408: "SCDeviceNameInUse",
|
||||
1409: "SCDeviceNotFound",
|
||||
1410: "SCDeviceMismatch",
|
||||
1411: "SCDeviceRequired",
|
||||
1413: "SCDevicePrevProvisioned",
|
||||
1414: "SCDeviceNoProvision",
|
||||
1415: "SCDeviceProvisionViaDevice",
|
||||
1416: "SCRevokeCurrentDevice",
|
||||
1417: "SCRevokeLastDevice",
|
||||
1418: "SCDeviceProvisionOffline",
|
||||
1419: "SCRevokeLastDevicePGP",
|
||||
1501: "SCStreamExists",
|
||||
1502: "SCStreamNotFound",
|
||||
1503: "SCStreamWrongKind",
|
||||
1504: "SCStreamEOF",
|
||||
1505: "SCStreamUnknown",
|
||||
1600: "SCGenericAPIError",
|
||||
1601: "SCAPINetworkError",
|
||||
1602: "SCTimeout",
|
||||
1701: "SCProofError",
|
||||
1702: "SCIdentificationExpired",
|
||||
1703: "SCSelfNotFound",
|
||||
1704: "SCBadKexPhrase",
|
||||
1705: "SCNoUIDelegation",
|
||||
1706: "SCNoUI",
|
||||
1707: "SCGPGUnavailable",
|
||||
1800: "SCInvalidVersionError",
|
||||
1801: "SCOldVersionError",
|
||||
1802: "SCInvalidLocationError",
|
||||
1803: "SCServiceStatusError",
|
||||
1804: "SCInstallError",
|
||||
1810: "SCLoadKextError",
|
||||
1811: "SCLoadKextPermError",
|
||||
2300: "SCGitInternal",
|
||||
2301: "SCGitRepoAlreadyExists",
|
||||
2302: "SCGitInvalidRepoName",
|
||||
2303: "SCGitCannotDelete",
|
||||
2304: "SCGitRepoDoesntExist",
|
||||
2400: "SCLoginStateTimeout",
|
||||
2500: "SCChatInternal",
|
||||
2501: "SCChatRateLimit",
|
||||
2502: "SCChatConvExists",
|
||||
2503: "SCChatUnknownTLFID",
|
||||
2504: "SCChatNotInConv",
|
||||
2505: "SCChatBadMsg",
|
||||
2506: "SCChatBroadcast",
|
||||
2507: "SCChatAlreadySuperseded",
|
||||
2508: "SCChatAlreadyDeleted",
|
||||
2509: "SCChatTLFFinalized",
|
||||
2510: "SCChatCollision",
|
||||
2511: "SCIdentifySummaryError",
|
||||
2512: "SCNeedSelfRekey",
|
||||
2513: "SCNeedOtherRekey",
|
||||
2514: "SCChatMessageCollision",
|
||||
2515: "SCChatDuplicateMessage",
|
||||
2516: "SCChatClientError",
|
||||
2517: "SCChatNotInTeam",
|
||||
2518: "SCChatStalePreviousState",
|
||||
2519: "SCChatEphemeralRetentionPolicyViolatedError",
|
||||
2604: "SCTeamBadMembership",
|
||||
2607: "SCTeamSelfNotOwner",
|
||||
2614: "SCTeamNotFound",
|
||||
2619: "SCTeamExists",
|
||||
2623: "SCTeamReadError",
|
||||
2625: "SCTeamWritePermDenied",
|
||||
2634: "SCTeamBadGeneration",
|
||||
2638: "SCNoOp",
|
||||
2645: "SCTeamInviteBadCancel",
|
||||
2646: "SCTeamInviteBadToken",
|
||||
2663: "SCTeamTarDuplicate",
|
||||
2664: "SCTeamTarNotFound",
|
||||
2665: "SCTeamMemberExists",
|
||||
2666: "SCTeamNotReleased",
|
||||
2667: "SCTeamPermanentlyLeft",
|
||||
2668: "SCTeamNeedRootId",
|
||||
2669: "SCTeamHasLiveChildren",
|
||||
2670: "SCTeamDeleteError",
|
||||
2671: "SCTeamBadRootTeam",
|
||||
2672: "SCTeamNameConflictsWithUser",
|
||||
2673: "SCTeamDeleteNoUpPointer",
|
||||
2674: "SCTeamNeedOwner",
|
||||
2675: "SCTeamNoOwnerAllowed",
|
||||
2676: "SCTeamImplicitNoNonSbs",
|
||||
2677: "SCTeamImplicitBadHash",
|
||||
2678: "SCTeamImplicitBadName",
|
||||
2679: "SCTeamImplicitClash",
|
||||
2680: "SCTeamImplicitDuplicate",
|
||||
2681: "SCTeamImplicitBadOp",
|
||||
2682: "SCTeamImplicitBadRole",
|
||||
2683: "SCTeamImplicitNotFound",
|
||||
2684: "SCTeamBadAdminSeqnoType",
|
||||
2685: "SCTeamImplicitBadAdd",
|
||||
2686: "SCTeamImplicitBadRemove",
|
||||
2696: "SCTeamInviteTokenReused",
|
||||
2697: "SCTeamKeyMaskNotFound",
|
||||
2702: "SCTeamBanned",
|
||||
2703: "SCTeamInvalidBan",
|
||||
2711: "SCTeamShowcasePermDenied",
|
||||
2721: "SCTeamProvisionalCanKey",
|
||||
2722: "SCTeamProvisionalCannotKey",
|
||||
2736: "SCTeamFTLOutdated",
|
||||
2760: "SCTeamStorageWrongRevision",
|
||||
2761: "SCTeamStorageBadGeneration",
|
||||
2762: "SCTeamStorageNotFound",
|
||||
2763: "SCTeamContactSettingsBlock",
|
||||
2900: "SCEphemeralKeyBadGeneration",
|
||||
2901: "SCEphemeralKeyUnexpectedBox",
|
||||
2902: "SCEphemeralKeyMissingBox",
|
||||
2903: "SCEphemeralKeyWrongNumberOfKeys",
|
||||
2904: "SCEphemeralKeyMismatchedKey",
|
||||
2905: "SCEphemeralPairwiseMACsMissingUIDs",
|
||||
2906: "SCEphemeralDeviceAfterEK",
|
||||
2907: "SCEphemeralMemberAfterEK",
|
||||
2908: "SCEphemeralDeviceStale",
|
||||
2909: "SCEphemeralUserStale",
|
||||
3100: "SCStellarError",
|
||||
3101: "SCStellarBadInput",
|
||||
3102: "SCStellarWrongRevision",
|
||||
3103: "SCStellarMissingBundle",
|
||||
3104: "SCStellarBadPuk",
|
||||
3105: "SCStellarMissingAccount",
|
||||
3106: "SCStellarBadPrev",
|
||||
3107: "SCStellarWrongPrimary",
|
||||
3108: "SCStellarUnsupportedCurrency",
|
||||
3109: "SCStellarNeedDisclaimer",
|
||||
3110: "SCStellarDeviceNotMobile",
|
||||
3111: "SCStellarMobileOnlyPurgatory",
|
||||
3112: "SCStellarIncompatibleVersion",
|
||||
3201: "SCNISTWrongSize",
|
||||
3202: "SCNISTBadMode",
|
||||
3203: "SCNISTHashWrongSize",
|
||||
3204: "SCNISTSigWrongSize",
|
||||
3205: "SCNISTSigBadInput",
|
||||
3206: "SCNISTSigBadUID",
|
||||
3207: "SCNISTSigBadDeviceID",
|
||||
3208: "SCNISTSigBadNonce",
|
||||
3209: "SCNISTNoSigOrHash",
|
||||
3210: "SCNISTExpired",
|
||||
3211: "SCNISTSigRevoked",
|
||||
3212: "SCNISTKeyRevoked",
|
||||
3213: "SCNISTUserDeleted",
|
||||
3214: "SCNISTNoDevice",
|
||||
3215: "SCNISTSigCannot_verify",
|
||||
3216: "SCNISTReplay",
|
||||
3217: "SCNISTSigBadLifetime",
|
||||
3218: "SCNISTNotFound",
|
||||
3219: "SCNISTBadClock",
|
||||
3220: "SCNISTSigBadCtime",
|
||||
3221: "SCBadSignupUsernameDeleted",
|
||||
3400: "SCPhoneNumberUnknown",
|
||||
3401: "SCPhoneNumberAlreadyVerified",
|
||||
3402: "SCPhoneNumberVerificationCodeExpired",
|
||||
3403: "SCPhoneNumberWrongVerificationCode",
|
||||
3404: "SCPhoneNumberLimitExceeded",
|
||||
3605: "SCNoPaperKeys",
|
||||
3800: "SCTeambotKeyGenerationExists",
|
||||
3801: "SCTeambotKeyOldBoxedGeneration",
|
||||
3802: "SCTeambotKeyBadGeneration",
|
||||
4207: "SCAirdropRegisterFailedMisc",
|
||||
}
|
||||
|
||||
func (e StatusCode) String() string {
|
||||
if v, ok := StatusCodeRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
127
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/contacts.go
generated
vendored
Normal file
127
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/contacts.go
generated
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/contacts.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
type ContactComponent struct {
|
||||
Label string `codec:"label" json:"label"`
|
||||
PhoneNumber *RawPhoneNumber `codec:"phoneNumber,omitempty" json:"phoneNumber,omitempty"`
|
||||
Email *EmailAddress `codec:"email,omitempty" json:"email,omitempty"`
|
||||
}
|
||||
|
||||
func (o ContactComponent) DeepCopy() ContactComponent {
|
||||
return ContactComponent{
|
||||
Label: o.Label,
|
||||
PhoneNumber: (func(x *RawPhoneNumber) *RawPhoneNumber {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.PhoneNumber),
|
||||
Email: (func(x *EmailAddress) *EmailAddress {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Email),
|
||||
}
|
||||
}
|
||||
|
||||
type Contact struct {
|
||||
Name string `codec:"name" json:"name"`
|
||||
Components []ContactComponent `codec:"components" json:"components"`
|
||||
}
|
||||
|
||||
func (o Contact) DeepCopy() Contact {
|
||||
return Contact{
|
||||
Name: o.Name,
|
||||
Components: (func(x []ContactComponent) []ContactComponent {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ContactComponent, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Components),
|
||||
}
|
||||
}
|
||||
|
||||
type ProcessedContact struct {
|
||||
ContactIndex int `codec:"contactIndex" json:"contactIndex"`
|
||||
ContactName string `codec:"contactName" json:"contactName"`
|
||||
Component ContactComponent `codec:"component" json:"component"`
|
||||
Resolved bool `codec:"resolved" json:"resolved"`
|
||||
Uid UID `codec:"uid" json:"uid"`
|
||||
Username string `codec:"username" json:"username"`
|
||||
FullName string `codec:"fullName" json:"fullName"`
|
||||
Following bool `codec:"following" json:"following"`
|
||||
ServiceMap map[string]string `codec:"serviceMap" json:"serviceMap"`
|
||||
Assertion string `codec:"assertion" json:"assertion"`
|
||||
DisplayName string `codec:"displayName" json:"displayName"`
|
||||
DisplayLabel string `codec:"displayLabel" json:"displayLabel"`
|
||||
}
|
||||
|
||||
func (o ProcessedContact) DeepCopy() ProcessedContact {
|
||||
return ProcessedContact{
|
||||
ContactIndex: o.ContactIndex,
|
||||
ContactName: o.ContactName,
|
||||
Component: o.Component.DeepCopy(),
|
||||
Resolved: o.Resolved,
|
||||
Uid: o.Uid.DeepCopy(),
|
||||
Username: o.Username,
|
||||
FullName: o.FullName,
|
||||
Following: o.Following,
|
||||
ServiceMap: (func(x map[string]string) map[string]string {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make(map[string]string, len(x))
|
||||
for k, v := range x {
|
||||
kCopy := k
|
||||
vCopy := v
|
||||
ret[kCopy] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.ServiceMap),
|
||||
Assertion: o.Assertion,
|
||||
DisplayName: o.DisplayName,
|
||||
DisplayLabel: o.DisplayLabel,
|
||||
}
|
||||
}
|
||||
|
||||
type ContactListResolutionResult struct {
|
||||
NewlyResolved []ProcessedContact `codec:"newlyResolved" json:"newlyResolved"`
|
||||
Resolved []ProcessedContact `codec:"resolved" json:"resolved"`
|
||||
}
|
||||
|
||||
func (o ContactListResolutionResult) DeepCopy() ContactListResolutionResult {
|
||||
return ContactListResolutionResult{
|
||||
NewlyResolved: (func(x []ProcessedContact) []ProcessedContact {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ProcessedContact, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.NewlyResolved),
|
||||
Resolved: (func(x []ProcessedContact) []ProcessedContact {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
ret := make([]ProcessedContact, len(x))
|
||||
for i, v := range x {
|
||||
vCopy := v.DeepCopy()
|
||||
ret[i] = vCopy
|
||||
}
|
||||
return ret
|
||||
})(o.Resolved),
|
||||
}
|
||||
}
|
86
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/crypto.go
generated
vendored
Normal file
86
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/crypto.go
generated
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/crypto.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
type ED25519PublicKey [32]byte
|
||||
|
||||
func (o ED25519PublicKey) DeepCopy() ED25519PublicKey {
|
||||
var ret ED25519PublicKey
|
||||
copy(ret[:], o[:])
|
||||
return ret
|
||||
}
|
||||
|
||||
type ED25519Signature [64]byte
|
||||
|
||||
func (o ED25519Signature) DeepCopy() ED25519Signature {
|
||||
var ret ED25519Signature
|
||||
copy(ret[:], o[:])
|
||||
return ret
|
||||
}
|
||||
|
||||
type ED25519SignatureInfo struct {
|
||||
Sig ED25519Signature `codec:"sig" json:"sig"`
|
||||
PublicKey ED25519PublicKey `codec:"publicKey" json:"publicKey"`
|
||||
}
|
||||
|
||||
func (o ED25519SignatureInfo) DeepCopy() ED25519SignatureInfo {
|
||||
return ED25519SignatureInfo{
|
||||
Sig: o.Sig.DeepCopy(),
|
||||
PublicKey: o.PublicKey.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type EncryptedBytes32 [48]byte
|
||||
|
||||
func (o EncryptedBytes32) DeepCopy() EncryptedBytes32 {
|
||||
var ret EncryptedBytes32
|
||||
copy(ret[:], o[:])
|
||||
return ret
|
||||
}
|
||||
|
||||
type BoxNonce [24]byte
|
||||
|
||||
func (o BoxNonce) DeepCopy() BoxNonce {
|
||||
var ret BoxNonce
|
||||
copy(ret[:], o[:])
|
||||
return ret
|
||||
}
|
||||
|
||||
type BoxPublicKey [32]byte
|
||||
|
||||
func (o BoxPublicKey) DeepCopy() BoxPublicKey {
|
||||
var ret BoxPublicKey
|
||||
copy(ret[:], o[:])
|
||||
return ret
|
||||
}
|
||||
|
||||
type CiphertextBundle struct {
|
||||
Kid KID `codec:"kid" json:"kid"`
|
||||
Ciphertext EncryptedBytes32 `codec:"ciphertext" json:"ciphertext"`
|
||||
Nonce BoxNonce `codec:"nonce" json:"nonce"`
|
||||
PublicKey BoxPublicKey `codec:"publicKey" json:"publicKey"`
|
||||
}
|
||||
|
||||
func (o CiphertextBundle) DeepCopy() CiphertextBundle {
|
||||
return CiphertextBundle{
|
||||
Kid: o.Kid.DeepCopy(),
|
||||
Ciphertext: o.Ciphertext.DeepCopy(),
|
||||
Nonce: o.Nonce.DeepCopy(),
|
||||
PublicKey: o.PublicKey.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type UnboxAnyRes struct {
|
||||
Kid KID `codec:"kid" json:"kid"`
|
||||
Plaintext Bytes32 `codec:"plaintext" json:"plaintext"`
|
||||
Index int `codec:"index" json:"index"`
|
||||
}
|
||||
|
||||
func (o UnboxAnyRes) DeepCopy() UnboxAnyRes {
|
||||
return UnboxAnyRes{
|
||||
Kid: o.Kid.DeepCopy(),
|
||||
Plaintext: o.Plaintext.DeepCopy(),
|
||||
Index: o.Index,
|
||||
}
|
||||
}
|
16
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/cryptocurrency.go
generated
vendored
Normal file
16
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/cryptocurrency.go
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/cryptocurrency.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
type RegisterAddressRes struct {
|
||||
Type string `codec:"type" json:"type"`
|
||||
Family string `codec:"family" json:"family"`
|
||||
}
|
||||
|
||||
func (o RegisterAddressRes) DeepCopy() RegisterAddressRes {
|
||||
return RegisterAddressRes{
|
||||
Type: o.Type,
|
||||
Family: o.Family,
|
||||
}
|
||||
}
|
129
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/ctl.go
generated
vendored
Normal file
129
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/ctl.go
generated
vendored
Normal file
@@ -0,0 +1,129 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/ctl.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type ExitCode int
|
||||
|
||||
const (
|
||||
ExitCode_OK ExitCode = 0
|
||||
ExitCode_NOTOK ExitCode = 2
|
||||
ExitCode_RESTART ExitCode = 4
|
||||
)
|
||||
|
||||
func (o ExitCode) DeepCopy() ExitCode { return o }
|
||||
|
||||
var ExitCodeMap = map[string]ExitCode{
|
||||
"OK": 0,
|
||||
"NOTOK": 2,
|
||||
"RESTART": 4,
|
||||
}
|
||||
|
||||
var ExitCodeRevMap = map[ExitCode]string{
|
||||
0: "OK",
|
||||
2: "NOTOK",
|
||||
4: "RESTART",
|
||||
}
|
||||
|
||||
func (e ExitCode) String() string {
|
||||
if v, ok := ExitCodeRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type DbType int
|
||||
|
||||
const (
|
||||
DbType_MAIN DbType = 0
|
||||
DbType_CHAT DbType = 1
|
||||
DbType_FS_BLOCK_CACHE DbType = 2
|
||||
DbType_FS_BLOCK_CACHE_META DbType = 3
|
||||
DbType_FS_SYNC_BLOCK_CACHE DbType = 4
|
||||
DbType_FS_SYNC_BLOCK_CACHE_META DbType = 5
|
||||
)
|
||||
|
||||
func (o DbType) DeepCopy() DbType { return o }
|
||||
|
||||
var DbTypeMap = map[string]DbType{
|
||||
"MAIN": 0,
|
||||
"CHAT": 1,
|
||||
"FS_BLOCK_CACHE": 2,
|
||||
"FS_BLOCK_CACHE_META": 3,
|
||||
"FS_SYNC_BLOCK_CACHE": 4,
|
||||
"FS_SYNC_BLOCK_CACHE_META": 5,
|
||||
}
|
||||
|
||||
var DbTypeRevMap = map[DbType]string{
|
||||
0: "MAIN",
|
||||
1: "CHAT",
|
||||
2: "FS_BLOCK_CACHE",
|
||||
3: "FS_BLOCK_CACHE_META",
|
||||
4: "FS_SYNC_BLOCK_CACHE",
|
||||
5: "FS_SYNC_BLOCK_CACHE_META",
|
||||
}
|
||||
|
||||
func (e DbType) String() string {
|
||||
if v, ok := DbTypeRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type DbKey struct {
|
||||
DbType DbType `codec:"dbType" json:"dbType"`
|
||||
ObjType int `codec:"objType" json:"objType"`
|
||||
Key string `codec:"key" json:"key"`
|
||||
}
|
||||
|
||||
func (o DbKey) DeepCopy() DbKey {
|
||||
return DbKey{
|
||||
DbType: o.DbType.DeepCopy(),
|
||||
ObjType: o.ObjType,
|
||||
Key: o.Key,
|
||||
}
|
||||
}
|
||||
|
||||
type DbValue []byte
|
||||
|
||||
func (o DbValue) DeepCopy() DbValue {
|
||||
return (func(x []byte) []byte {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
return append([]byte{}, x...)
|
||||
})(o)
|
||||
}
|
||||
|
||||
type OnLoginStartupStatus int
|
||||
|
||||
const (
|
||||
OnLoginStartupStatus_UNKNOWN OnLoginStartupStatus = 0
|
||||
OnLoginStartupStatus_DISABLED OnLoginStartupStatus = 1
|
||||
OnLoginStartupStatus_ENABLED OnLoginStartupStatus = 2
|
||||
)
|
||||
|
||||
func (o OnLoginStartupStatus) DeepCopy() OnLoginStartupStatus { return o }
|
||||
|
||||
var OnLoginStartupStatusMap = map[string]OnLoginStartupStatus{
|
||||
"UNKNOWN": 0,
|
||||
"DISABLED": 1,
|
||||
"ENABLED": 2,
|
||||
}
|
||||
|
||||
var OnLoginStartupStatusRevMap = map[OnLoginStartupStatus]string{
|
||||
0: "UNKNOWN",
|
||||
1: "DISABLED",
|
||||
2: "ENABLED",
|
||||
}
|
||||
|
||||
func (e OnLoginStartupStatus) String() string {
|
||||
if v, ok := OnLoginStartupStatusRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
14
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/debugging.go
generated
vendored
Normal file
14
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/debugging.go
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/debugging.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
type FirstStepResult struct {
|
||||
ValPlusTwo int `codec:"valPlusTwo" json:"valPlusTwo"`
|
||||
}
|
||||
|
||||
func (o FirstStepResult) DeepCopy() FirstStepResult {
|
||||
return FirstStepResult{
|
||||
ValPlusTwo: o.ValPlusTwo,
|
||||
}
|
||||
}
|
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/delegate_ui_ctl.go
generated
vendored
Normal file
4
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/delegate_ui_ctl.go
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/delegate_ui_ctl.avdl
|
||||
|
||||
package keybase1
|
52
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/device.go
generated
vendored
Normal file
52
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/device.go
generated
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/device.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
type DeviceDetail struct {
|
||||
Device Device `codec:"device" json:"device"`
|
||||
Eldest bool `codec:"eldest" json:"eldest"`
|
||||
Provisioner *Device `codec:"provisioner,omitempty" json:"provisioner,omitempty"`
|
||||
ProvisionedAt *Time `codec:"provisionedAt,omitempty" json:"provisionedAt,omitempty"`
|
||||
RevokedAt *Time `codec:"revokedAt,omitempty" json:"revokedAt,omitempty"`
|
||||
RevokedBy KID `codec:"revokedBy" json:"revokedBy"`
|
||||
RevokedByDevice *Device `codec:"revokedByDevice,omitempty" json:"revokedByDevice,omitempty"`
|
||||
CurrentDevice bool `codec:"currentDevice" json:"currentDevice"`
|
||||
}
|
||||
|
||||
func (o DeviceDetail) DeepCopy() DeviceDetail {
|
||||
return DeviceDetail{
|
||||
Device: o.Device.DeepCopy(),
|
||||
Eldest: o.Eldest,
|
||||
Provisioner: (func(x *Device) *Device {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Provisioner),
|
||||
ProvisionedAt: (func(x *Time) *Time {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.ProvisionedAt),
|
||||
RevokedAt: (func(x *Time) *Time {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.RevokedAt),
|
||||
RevokedBy: o.RevokedBy.DeepCopy(),
|
||||
RevokedByDevice: (func(x *Device) *Device {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.RevokedByDevice),
|
||||
CurrentDevice: o.CurrentDevice,
|
||||
}
|
||||
}
|
42
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/emails.go
generated
vendored
Normal file
42
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/emails.go
generated
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/emails.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
type EmailLookupResult struct {
|
||||
Email EmailAddress `codec:"email" json:"email"`
|
||||
Uid *UID `codec:"uid,omitempty" json:"uid,omitempty"`
|
||||
}
|
||||
|
||||
func (o EmailLookupResult) DeepCopy() EmailLookupResult {
|
||||
return EmailLookupResult{
|
||||
Email: o.Email.DeepCopy(),
|
||||
Uid: (func(x *UID) *UID {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Uid),
|
||||
}
|
||||
}
|
||||
|
||||
type EmailAddressVerifiedMsg struct {
|
||||
Email EmailAddress `codec:"email" json:"email"`
|
||||
}
|
||||
|
||||
func (o EmailAddressVerifiedMsg) DeepCopy() EmailAddressVerifiedMsg {
|
||||
return EmailAddressVerifiedMsg{
|
||||
Email: o.Email.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type EmailAddressChangedMsg struct {
|
||||
Email EmailAddress `codec:"email" json:"email"`
|
||||
}
|
||||
|
||||
func (o EmailAddressChangedMsg) DeepCopy() EmailAddressChangedMsg {
|
||||
return EmailAddressChangedMsg{
|
||||
Email: o.Email.DeepCopy(),
|
||||
}
|
||||
}
|
423
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/ephemeral.go
generated
vendored
Normal file
423
vendor/github.com/keybase/go-keybase-chat-bot/kbchat/types/keybase1/ephemeral.go
generated
vendored
Normal file
@@ -0,0 +1,423 @@
|
||||
// Auto-generated to Go types using avdl-compiler v1.4.6 (https://github.com/keybase/node-avdl-compiler)
|
||||
// Input file: ../client/protocol/avdl/keybase1/ephemeral.avdl
|
||||
|
||||
package keybase1
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type EkGeneration int64
|
||||
|
||||
func (o EkGeneration) DeepCopy() EkGeneration {
|
||||
return o
|
||||
}
|
||||
|
||||
type DeviceEkMetadata struct {
|
||||
Kid KID `codec:"kid" json:"device_ephemeral_dh_public"`
|
||||
HashMeta HashMeta `codec:"hashMeta" json:"hash_meta"`
|
||||
Generation EkGeneration `codec:"generation" json:"generation"`
|
||||
Ctime Time `codec:"ctime" json:"ctime"`
|
||||
DeviceCtime Time `codec:"deviceCtime" json:"deviceCtime"`
|
||||
}
|
||||
|
||||
func (o DeviceEkMetadata) DeepCopy() DeviceEkMetadata {
|
||||
return DeviceEkMetadata{
|
||||
Kid: o.Kid.DeepCopy(),
|
||||
HashMeta: o.HashMeta.DeepCopy(),
|
||||
Generation: o.Generation.DeepCopy(),
|
||||
Ctime: o.Ctime.DeepCopy(),
|
||||
DeviceCtime: o.DeviceCtime.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type DeviceEkStatement struct {
|
||||
CurrentDeviceEkMetadata DeviceEkMetadata `codec:"currentDeviceEkMetadata" json:"current_device_ek_metadata"`
|
||||
}
|
||||
|
||||
func (o DeviceEkStatement) DeepCopy() DeviceEkStatement {
|
||||
return DeviceEkStatement{
|
||||
CurrentDeviceEkMetadata: o.CurrentDeviceEkMetadata.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type DeviceEk struct {
|
||||
Seed Bytes32 `codec:"seed" json:"seed"`
|
||||
Metadata DeviceEkMetadata `codec:"metadata" json:"metadata"`
|
||||
}
|
||||
|
||||
func (o DeviceEk) DeepCopy() DeviceEk {
|
||||
return DeviceEk{
|
||||
Seed: o.Seed.DeepCopy(),
|
||||
Metadata: o.Metadata.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type UserEkStatement struct {
|
||||
CurrentUserEkMetadata UserEkMetadata `codec:"currentUserEkMetadata" json:"current_user_ek_metadata"`
|
||||
}
|
||||
|
||||
func (o UserEkStatement) DeepCopy() UserEkStatement {
|
||||
return UserEkStatement{
|
||||
CurrentUserEkMetadata: o.CurrentUserEkMetadata.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type UserEkMetadata struct {
|
||||
Kid KID `codec:"kid" json:"user_ephemeral_dh_public"`
|
||||
HashMeta HashMeta `codec:"hashMeta" json:"hash_meta"`
|
||||
Generation EkGeneration `codec:"generation" json:"generation"`
|
||||
Ctime Time `codec:"ctime" json:"ctime"`
|
||||
}
|
||||
|
||||
func (o UserEkMetadata) DeepCopy() UserEkMetadata {
|
||||
return UserEkMetadata{
|
||||
Kid: o.Kid.DeepCopy(),
|
||||
HashMeta: o.HashMeta.DeepCopy(),
|
||||
Generation: o.Generation.DeepCopy(),
|
||||
Ctime: o.Ctime.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type UserEkBoxed struct {
|
||||
Box string `codec:"box" json:"box"`
|
||||
DeviceEkGeneration EkGeneration `codec:"deviceEkGeneration" json:"device_ek_generation"`
|
||||
Metadata UserEkMetadata `codec:"metadata" json:"metadata"`
|
||||
}
|
||||
|
||||
func (o UserEkBoxed) DeepCopy() UserEkBoxed {
|
||||
return UserEkBoxed{
|
||||
Box: o.Box,
|
||||
DeviceEkGeneration: o.DeviceEkGeneration.DeepCopy(),
|
||||
Metadata: o.Metadata.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type UserEkBoxMetadata struct {
|
||||
Box string `codec:"box" json:"box"`
|
||||
RecipientGeneration EkGeneration `codec:"recipientGeneration" json:"recipient_generation"`
|
||||
RecipientDeviceID DeviceID `codec:"recipientDeviceID" json:"recipient_device_id"`
|
||||
}
|
||||
|
||||
func (o UserEkBoxMetadata) DeepCopy() UserEkBoxMetadata {
|
||||
return UserEkBoxMetadata{
|
||||
Box: o.Box,
|
||||
RecipientGeneration: o.RecipientGeneration.DeepCopy(),
|
||||
RecipientDeviceID: o.RecipientDeviceID.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type UserEk struct {
|
||||
Seed Bytes32 `codec:"seed" json:"seed"`
|
||||
Metadata UserEkMetadata `codec:"metadata" json:"metadata"`
|
||||
}
|
||||
|
||||
func (o UserEk) DeepCopy() UserEk {
|
||||
return UserEk{
|
||||
Seed: o.Seed.DeepCopy(),
|
||||
Metadata: o.Metadata.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type UserEkReboxArg struct {
|
||||
UserEkBoxMetadata UserEkBoxMetadata `codec:"userEkBoxMetadata" json:"userEkBoxMetadata"`
|
||||
DeviceID DeviceID `codec:"deviceID" json:"deviceID"`
|
||||
DeviceEkStatementSig string `codec:"deviceEkStatementSig" json:"deviceEkStatementSig"`
|
||||
}
|
||||
|
||||
func (o UserEkReboxArg) DeepCopy() UserEkReboxArg {
|
||||
return UserEkReboxArg{
|
||||
UserEkBoxMetadata: o.UserEkBoxMetadata.DeepCopy(),
|
||||
DeviceID: o.DeviceID.DeepCopy(),
|
||||
DeviceEkStatementSig: o.DeviceEkStatementSig,
|
||||
}
|
||||
}
|
||||
|
||||
type TeamEkMetadata struct {
|
||||
Kid KID `codec:"kid" json:"team_ephemeral_dh_public"`
|
||||
HashMeta HashMeta `codec:"hashMeta" json:"hash_meta"`
|
||||
Generation EkGeneration `codec:"generation" json:"generation"`
|
||||
Ctime Time `codec:"ctime" json:"ctime"`
|
||||
}
|
||||
|
||||
func (o TeamEkMetadata) DeepCopy() TeamEkMetadata {
|
||||
return TeamEkMetadata{
|
||||
Kid: o.Kid.DeepCopy(),
|
||||
HashMeta: o.HashMeta.DeepCopy(),
|
||||
Generation: o.Generation.DeepCopy(),
|
||||
Ctime: o.Ctime.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type TeamEkStatement struct {
|
||||
CurrentTeamEkMetadata TeamEkMetadata `codec:"currentTeamEkMetadata" json:"current_team_ek_metadata"`
|
||||
}
|
||||
|
||||
func (o TeamEkStatement) DeepCopy() TeamEkStatement {
|
||||
return TeamEkStatement{
|
||||
CurrentTeamEkMetadata: o.CurrentTeamEkMetadata.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type TeamEkBoxed struct {
|
||||
Box string `codec:"box" json:"box"`
|
||||
UserEkGeneration EkGeneration `codec:"userEkGeneration" json:"user_ek_generation"`
|
||||
Metadata TeamEkMetadata `codec:"metadata" json:"metadata"`
|
||||
}
|
||||
|
||||
func (o TeamEkBoxed) DeepCopy() TeamEkBoxed {
|
||||
return TeamEkBoxed{
|
||||
Box: o.Box,
|
||||
UserEkGeneration: o.UserEkGeneration.DeepCopy(),
|
||||
Metadata: o.Metadata.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type TeamEkBoxMetadata struct {
|
||||
Box string `codec:"box" json:"box"`
|
||||
RecipientGeneration EkGeneration `codec:"recipientGeneration" json:"recipient_generation"`
|
||||
RecipientUID UID `codec:"recipientUID" json:"recipient_uid"`
|
||||
}
|
||||
|
||||
func (o TeamEkBoxMetadata) DeepCopy() TeamEkBoxMetadata {
|
||||
return TeamEkBoxMetadata{
|
||||
Box: o.Box,
|
||||
RecipientGeneration: o.RecipientGeneration.DeepCopy(),
|
||||
RecipientUID: o.RecipientUID.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type TeamEk struct {
|
||||
Seed Bytes32 `codec:"seed" json:"seed"`
|
||||
Metadata TeamEkMetadata `codec:"metadata" json:"metadata"`
|
||||
}
|
||||
|
||||
func (o TeamEk) DeepCopy() TeamEk {
|
||||
return TeamEk{
|
||||
Seed: o.Seed.DeepCopy(),
|
||||
Metadata: o.Metadata.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type TeambotEkMetadata struct {
|
||||
Kid KID `codec:"kid" json:"teambot_dh_public"`
|
||||
Generation EkGeneration `codec:"generation" json:"generation"`
|
||||
Uid UID `codec:"uid" json:"uid"`
|
||||
UserEkGeneration EkGeneration `codec:"userEkGeneration" json:"user_ek_generation"`
|
||||
HashMeta HashMeta `codec:"hashMeta" json:"hash_meta"`
|
||||
Ctime Time `codec:"ctime" json:"ctime"`
|
||||
}
|
||||
|
||||
func (o TeambotEkMetadata) DeepCopy() TeambotEkMetadata {
|
||||
return TeambotEkMetadata{
|
||||
Kid: o.Kid.DeepCopy(),
|
||||
Generation: o.Generation.DeepCopy(),
|
||||
Uid: o.Uid.DeepCopy(),
|
||||
UserEkGeneration: o.UserEkGeneration.DeepCopy(),
|
||||
HashMeta: o.HashMeta.DeepCopy(),
|
||||
Ctime: o.Ctime.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type TeambotEkBoxed struct {
|
||||
Box string `codec:"box" json:"box"`
|
||||
Metadata TeambotEkMetadata `codec:"metadata" json:"metadata"`
|
||||
}
|
||||
|
||||
func (o TeambotEkBoxed) DeepCopy() TeambotEkBoxed {
|
||||
return TeambotEkBoxed{
|
||||
Box: o.Box,
|
||||
Metadata: o.Metadata.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type TeambotEk struct {
|
||||
Seed Bytes32 `codec:"seed" json:"seed"`
|
||||
Metadata TeambotEkMetadata `codec:"metadata" json:"metadata"`
|
||||
}
|
||||
|
||||
func (o TeambotEk) DeepCopy() TeambotEk {
|
||||
return TeambotEk{
|
||||
Seed: o.Seed.DeepCopy(),
|
||||
Metadata: o.Metadata.DeepCopy(),
|
||||
}
|
||||
}
|
||||
|
||||
type TeamEphemeralKeyType int
|
||||
|
||||
const (
|
||||
TeamEphemeralKeyType_TEAM TeamEphemeralKeyType = 0
|
||||
TeamEphemeralKeyType_TEAMBOT TeamEphemeralKeyType = 1
|
||||
)
|
||||
|
||||
func (o TeamEphemeralKeyType) DeepCopy() TeamEphemeralKeyType { return o }
|
||||
|
||||
var TeamEphemeralKeyTypeMap = map[string]TeamEphemeralKeyType{
|
||||
"TEAM": 0,
|
||||
"TEAMBOT": 1,
|
||||
}
|
||||
|
||||
var TeamEphemeralKeyTypeRevMap = map[TeamEphemeralKeyType]string{
|
||||
0: "TEAM",
|
||||
1: "TEAMBOT",
|
||||
}
|
||||
|
||||
func (e TeamEphemeralKeyType) String() string {
|
||||
if v, ok := TeamEphemeralKeyTypeRevMap[e]; ok {
|
||||
return v
|
||||
}
|
||||
return fmt.Sprintf("%v", int(e))
|
||||
}
|
||||
|
||||
type TeamEphemeralKey struct {
|
||||
KeyType__ TeamEphemeralKeyType `codec:"keyType" json:"keyType"`
|
||||
Team__ *TeamEk `codec:"team,omitempty" json:"team,omitempty"`
|
||||
Teambot__ *TeambotEk `codec:"teambot,omitempty" json:"teambot,omitempty"`
|
||||
}
|
||||
|
||||
func (o *TeamEphemeralKey) KeyType() (ret TeamEphemeralKeyType, err error) {
|
||||
switch o.KeyType__ {
|
||||
case TeamEphemeralKeyType_TEAM:
|
||||
if o.Team__ == nil {
|
||||
err = errors.New("unexpected nil value for Team__")
|
||||
return ret, err
|
||||
}
|
||||
case TeamEphemeralKeyType_TEAMBOT:
|
||||
if o.Teambot__ == nil {
|
||||
err = errors.New("unexpected nil value for Teambot__")
|
||||
return ret, err
|
||||
}
|
||||
}
|
||||
return o.KeyType__, nil
|
||||
}
|
||||
|
||||
func (o TeamEphemeralKey) Team() (res TeamEk) {
|
||||
if o.KeyType__ != TeamEphemeralKeyType_TEAM {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Team__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Team__
|
||||
}
|
||||
|
||||
func (o TeamEphemeralKey) Teambot() (res TeambotEk) {
|
||||
if o.KeyType__ != TeamEphemeralKeyType_TEAMBOT {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Teambot__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Teambot__
|
||||
}
|
||||
|
||||
func NewTeamEphemeralKeyWithTeam(v TeamEk) TeamEphemeralKey {
|
||||
return TeamEphemeralKey{
|
||||
KeyType__: TeamEphemeralKeyType_TEAM,
|
||||
Team__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewTeamEphemeralKeyWithTeambot(v TeambotEk) TeamEphemeralKey {
|
||||
return TeamEphemeralKey{
|
||||
KeyType__: TeamEphemeralKeyType_TEAMBOT,
|
||||
Teambot__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func (o TeamEphemeralKey) DeepCopy() TeamEphemeralKey {
|
||||
return TeamEphemeralKey{
|
||||
KeyType__: o.KeyType__.DeepCopy(),
|
||||
Team__: (func(x *TeamEk) *TeamEk {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Team__),
|
||||
Teambot__: (func(x *TeambotEk) *TeambotEk {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Teambot__),
|
||||
}
|
||||
}
|
||||
|
||||
type TeamEphemeralKeyBoxed struct {
|
||||
KeyType__ TeamEphemeralKeyType `codec:"keyType" json:"keyType"`
|
||||
Team__ *TeamEkBoxed `codec:"team,omitempty" json:"team,omitempty"`
|
||||
Teambot__ *TeambotEkBoxed `codec:"teambot,omitempty" json:"teambot,omitempty"`
|
||||
}
|
||||
|
||||
func (o *TeamEphemeralKeyBoxed) KeyType() (ret TeamEphemeralKeyType, err error) {
|
||||
switch o.KeyType__ {
|
||||
case TeamEphemeralKeyType_TEAM:
|
||||
if o.Team__ == nil {
|
||||
err = errors.New("unexpected nil value for Team__")
|
||||
return ret, err
|
||||
}
|
||||
case TeamEphemeralKeyType_TEAMBOT:
|
||||
if o.Teambot__ == nil {
|
||||
err = errors.New("unexpected nil value for Teambot__")
|
||||
return ret, err
|
||||
}
|
||||
}
|
||||
return o.KeyType__, nil
|
||||
}
|
||||
|
||||
func (o TeamEphemeralKeyBoxed) Team() (res TeamEkBoxed) {
|
||||
if o.KeyType__ != TeamEphemeralKeyType_TEAM {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Team__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Team__
|
||||
}
|
||||
|
||||
func (o TeamEphemeralKeyBoxed) Teambot() (res TeambotEkBoxed) {
|
||||
if o.KeyType__ != TeamEphemeralKeyType_TEAMBOT {
|
||||
panic("wrong case accessed")
|
||||
}
|
||||
if o.Teambot__ == nil {
|
||||
return
|
||||
}
|
||||
return *o.Teambot__
|
||||
}
|
||||
|
||||
func NewTeamEphemeralKeyBoxedWithTeam(v TeamEkBoxed) TeamEphemeralKeyBoxed {
|
||||
return TeamEphemeralKeyBoxed{
|
||||
KeyType__: TeamEphemeralKeyType_TEAM,
|
||||
Team__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func NewTeamEphemeralKeyBoxedWithTeambot(v TeambotEkBoxed) TeamEphemeralKeyBoxed {
|
||||
return TeamEphemeralKeyBoxed{
|
||||
KeyType__: TeamEphemeralKeyType_TEAMBOT,
|
||||
Teambot__: &v,
|
||||
}
|
||||
}
|
||||
|
||||
func (o TeamEphemeralKeyBoxed) DeepCopy() TeamEphemeralKeyBoxed {
|
||||
return TeamEphemeralKeyBoxed{
|
||||
KeyType__: o.KeyType__.DeepCopy(),
|
||||
Team__: (func(x *TeamEkBoxed) *TeamEkBoxed {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Team__),
|
||||
Teambot__: (func(x *TeambotEkBoxed) *TeambotEkBoxed {
|
||||
if x == nil {
|
||||
return nil
|
||||
}
|
||||
tmp := (*x).DeepCopy()
|
||||
return &tmp
|
||||
})(o.Teambot__),
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user