mirror of
https://github.com/Kyren223/eko.git
synced 2025-09-05 21:18:14 +00:00
360 lines
6.4 KiB
Go
360 lines
6.4 KiB
Go
// Eko: A terminal-native social media platform
|
|
// Copyright (C) 2025 Kyren223
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License as published
|
|
// by the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Affero General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
package packet
|
|
|
|
import (
|
|
"crypto/ed25519"
|
|
|
|
"github.com/kyren223/eko/internal/data"
|
|
"github.com/kyren223/eko/pkg/snowflake"
|
|
)
|
|
|
|
type Error struct {
|
|
Error string
|
|
}
|
|
|
|
func (m *Error) Type() PacketType {
|
|
return PacketError
|
|
}
|
|
|
|
type CreateNetwork struct {
|
|
Name string
|
|
Icon string
|
|
BgHexColor string
|
|
FgHexColor string
|
|
IsPublic bool
|
|
}
|
|
|
|
func (m *CreateNetwork) Type() PacketType {
|
|
return PacketCreateNetwork
|
|
}
|
|
|
|
type UpdateNetwork struct {
|
|
CreateNetwork
|
|
Network snowflake.ID
|
|
}
|
|
|
|
func (m *UpdateNetwork) Type() PacketType {
|
|
return PacketUpdateNetwork
|
|
}
|
|
|
|
type TransferNetwork struct {
|
|
Network snowflake.ID
|
|
User snowflake.ID
|
|
}
|
|
|
|
func (m *TransferNetwork) Type() PacketType {
|
|
return PacketTransferNetwork
|
|
}
|
|
|
|
type DeleteNetwork struct {
|
|
Network snowflake.ID
|
|
}
|
|
|
|
func (m *DeleteNetwork) Type() PacketType {
|
|
return PacketDeleteNetwork
|
|
}
|
|
|
|
type SetMember struct {
|
|
Member *bool
|
|
Admin *bool
|
|
Muted *bool
|
|
Banned *bool
|
|
BanReason *string
|
|
Network snowflake.ID
|
|
User snowflake.ID
|
|
}
|
|
|
|
func (m *SetMember) Type() PacketType {
|
|
return PacketSetMember
|
|
}
|
|
|
|
type FullNetwork struct {
|
|
data.Network
|
|
Frequencies []data.Frequency
|
|
Members []data.Member
|
|
Users []data.User
|
|
}
|
|
|
|
type NetworksInfo struct {
|
|
Networks []FullNetwork
|
|
RemovedNetworks []snowflake.ID
|
|
Partial bool
|
|
}
|
|
|
|
func (m *NetworksInfo) Type() PacketType {
|
|
return PacketNetworksInfo
|
|
}
|
|
|
|
type CreateFrequency struct {
|
|
Name string
|
|
HexColor string
|
|
Network snowflake.ID
|
|
Perms int
|
|
}
|
|
|
|
func (m *CreateFrequency) Type() PacketType {
|
|
return PacketCreateFrequency
|
|
}
|
|
|
|
type UpdateFrequency struct {
|
|
Name string
|
|
HexColor string
|
|
Frequency snowflake.ID
|
|
Perms int
|
|
}
|
|
|
|
func (m *UpdateFrequency) Type() PacketType {
|
|
return PacketUpdateFrequency
|
|
}
|
|
|
|
type DeleteFrequency struct {
|
|
Frequency snowflake.ID
|
|
}
|
|
|
|
func (m *DeleteFrequency) Type() PacketType {
|
|
return PacketDeleteFrequency
|
|
}
|
|
|
|
type SwapFrequencies struct {
|
|
Network snowflake.ID
|
|
Pos1 int
|
|
Pos2 int
|
|
}
|
|
|
|
func (m *SwapFrequencies) Type() PacketType {
|
|
return PacketSwapFrequencies
|
|
}
|
|
|
|
type FrequenciesInfo struct {
|
|
RemovedFrequencies []snowflake.ID
|
|
Frequencies []data.Frequency
|
|
Network snowflake.ID
|
|
}
|
|
|
|
func (m *FrequenciesInfo) Type() PacketType {
|
|
return PacketFrequenciesInfo
|
|
}
|
|
|
|
type SendMessage struct {
|
|
ReceiverID *snowflake.ID
|
|
FrequencyID *snowflake.ID
|
|
Content string
|
|
Ping *snowflake.ID
|
|
}
|
|
|
|
func (m *SendMessage) Type() PacketType {
|
|
return PacketSendMessage
|
|
}
|
|
|
|
type EditMessage struct {
|
|
Content string
|
|
Message snowflake.ID
|
|
}
|
|
|
|
func (m *EditMessage) Type() PacketType {
|
|
return PacketEditMessage
|
|
}
|
|
|
|
type DeleteMessage struct {
|
|
Message snowflake.ID
|
|
}
|
|
|
|
func (m *DeleteMessage) Type() PacketType {
|
|
return PacketDeleteMessage
|
|
}
|
|
|
|
type RequestMessages struct {
|
|
ReceiverID *snowflake.ID
|
|
FrequencyID *snowflake.ID
|
|
}
|
|
|
|
func (m *RequestMessages) Type() PacketType {
|
|
return PacketRequestMessages
|
|
}
|
|
|
|
type MessagesInfo struct {
|
|
Messages []data.Message
|
|
RemovedMessages []snowflake.ID
|
|
}
|
|
|
|
func (m *MessagesInfo) Type() PacketType {
|
|
return PacketMessagesInfo
|
|
}
|
|
|
|
type MembersInfo struct {
|
|
RemovedMembers []snowflake.ID
|
|
Members []data.Member
|
|
Users []data.User
|
|
Network snowflake.ID
|
|
}
|
|
|
|
func (m *MembersInfo) Type() PacketType {
|
|
return PacketMembersInfo
|
|
}
|
|
|
|
type SetUserData struct {
|
|
Data *string
|
|
User *data.User
|
|
Nonce []byte // optional
|
|
}
|
|
|
|
func (m *SetUserData) Type() PacketType {
|
|
return PacketSetUserData
|
|
}
|
|
|
|
type GetUserData struct{}
|
|
|
|
func (m *GetUserData) Type() PacketType {
|
|
return PacketGetUserData
|
|
}
|
|
|
|
type TrustUser struct {
|
|
User snowflake.ID
|
|
Trust bool
|
|
}
|
|
|
|
func (m *TrustUser) Type() PacketType {
|
|
return PacketTrustUser
|
|
}
|
|
|
|
type TrustInfo struct {
|
|
TrustedUsers []snowflake.ID
|
|
TrustedPublicKeys []ed25519.PublicKey
|
|
RemovedTrustedUsers []snowflake.ID
|
|
}
|
|
|
|
func (m *TrustInfo) Type() PacketType {
|
|
return PacketTrustInfo
|
|
}
|
|
|
|
type GetBannedMembers struct {
|
|
Network snowflake.ID
|
|
}
|
|
|
|
func (m *GetBannedMembers) Type() PacketType {
|
|
return PacketGetBannedMembers
|
|
}
|
|
|
|
type SetLastReadMessages struct {
|
|
Source []snowflake.ID
|
|
LastRead []int64
|
|
}
|
|
|
|
func (m *SetLastReadMessages) Type() PacketType {
|
|
return PacketSetLastReadMessages
|
|
}
|
|
|
|
type NotificationsInfo struct {
|
|
Source []snowflake.ID
|
|
LastRead []int64
|
|
Pings []*int64
|
|
}
|
|
|
|
func (m *NotificationsInfo) Type() PacketType {
|
|
return PacketNotificationsInfo
|
|
}
|
|
|
|
type BlockUser struct {
|
|
User snowflake.ID
|
|
Block bool
|
|
}
|
|
|
|
func (m *BlockUser) Type() PacketType {
|
|
return PacketBlockUser
|
|
}
|
|
|
|
type BlockInfo struct {
|
|
BlockedUsers []snowflake.ID
|
|
RemovedBlockedUsers []snowflake.ID
|
|
BlockingUsers []snowflake.ID
|
|
RemovedBlockingUsers []snowflake.ID
|
|
}
|
|
|
|
func (m *BlockInfo) Type() PacketType {
|
|
return PacketBlockInfo
|
|
}
|
|
|
|
type GetUsers struct {
|
|
Users []snowflake.ID
|
|
}
|
|
|
|
func (m *GetUsers) Type() PacketType {
|
|
return PacketGetUsers
|
|
}
|
|
|
|
type UsersInfo struct {
|
|
Users []data.User
|
|
}
|
|
|
|
func (m *UsersInfo) Type() PacketType {
|
|
return PacketUsersInfo
|
|
}
|
|
|
|
type TosInfo struct {
|
|
Tos string
|
|
PrivacyPolicy string
|
|
Hash string
|
|
}
|
|
|
|
func (m *TosInfo) Type() PacketType {
|
|
return PacketTosInfo
|
|
}
|
|
|
|
type AcceptTos struct {
|
|
IAgreeToTheTermsOfServiceAndPrivacyPolicy bool
|
|
}
|
|
|
|
func (m *AcceptTos) Type() PacketType {
|
|
return PacketAcceptTos
|
|
}
|
|
|
|
type GetNonce struct{}
|
|
|
|
func (m *GetNonce) Type() PacketType {
|
|
return PacketGetNonce
|
|
}
|
|
|
|
type NonceInfo struct {
|
|
Nonce []byte
|
|
}
|
|
|
|
func (m *NonceInfo) Type() PacketType {
|
|
return PacketNonceInfo
|
|
}
|
|
|
|
type Authenticate struct {
|
|
PubKey ed25519.PublicKey
|
|
Signature []byte
|
|
}
|
|
|
|
func (m *Authenticate) Type() PacketType {
|
|
return PacketAuthenticate
|
|
}
|
|
|
|
type DeviceAnalytics struct {
|
|
DeviceID string
|
|
OS string
|
|
Arch string
|
|
Term string
|
|
Colorterm string
|
|
}
|
|
|
|
func (m *DeviceAnalytics) Type() PacketType {
|
|
return PacketDeviceAnalytics
|
|
}
|