mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
163 lines
3.0 KiB
Go
163 lines
3.0 KiB
Go
package legacy
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/demodesk/neko/internal/http/legacy/event"
|
|
"github.com/demodesk/neko/internal/http/legacy/message"
|
|
)
|
|
|
|
func (h *LegacyHandler) wsToClient(msg []byte) ([]byte, error) {
|
|
header := message.Message{}
|
|
err := json.Unmarshal(msg, &header)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var payload any
|
|
switch header.Event {
|
|
// System Events
|
|
case:
|
|
payload = &message.SystemMessage{
|
|
Event: event.SYSTEM_DISCONNECT,
|
|
}
|
|
case:
|
|
payload = &message.SystemMessage{
|
|
Event: event.SYSTEM_ERROR,
|
|
}
|
|
case:
|
|
payload = &message.SystemInit{
|
|
Event: event.SYSTEM_INIT,
|
|
}
|
|
|
|
// Member Events
|
|
case:
|
|
payload = &message.MembersList{
|
|
Event: event.MEMBER_LIST,
|
|
}
|
|
case:
|
|
payload = &message.Member{
|
|
Event: event.MEMBER_CONNECTED,
|
|
}
|
|
case:
|
|
payload = &message.MemberDisconnected{
|
|
Event: event.MEMBER_DISCONNECTED,
|
|
}
|
|
|
|
// Signal Events
|
|
case:
|
|
payload = &message.SignalOffer{
|
|
Event: event.SIGNAL_OFFER,
|
|
}
|
|
case:
|
|
payload = &message.SignalAnswer{
|
|
Event: event.SIGNAL_ANSWER,
|
|
}
|
|
case:
|
|
payload = &message.SignalCandidate{
|
|
Event: event.SIGNAL_CANDIDATE,
|
|
}
|
|
case:
|
|
payload = &message.SignalProvide{
|
|
Event: event.SIGNAL_PROVIDE,
|
|
}
|
|
|
|
// Control Events
|
|
case:
|
|
payload = &message.Clipboard{
|
|
Event: event.CONTROL_CLIPBOARD,
|
|
}
|
|
case:
|
|
payload = &message.Control{
|
|
Event: event.CONTROL_REQUEST,
|
|
}
|
|
case:
|
|
payload = &message.Control{
|
|
Event: event.CONTROL_REQUESTING,
|
|
}
|
|
case:
|
|
payload = &message.ControlTarget{
|
|
Event: event.CONTROL_GIVE,
|
|
} // message.AdminTarget
|
|
case:
|
|
payload = &message.Control{
|
|
Event: event.CONTROL_RELEASE,
|
|
}
|
|
case:
|
|
payload = &message.Control{
|
|
Event: event.CONTROL_LOCKED,
|
|
}
|
|
|
|
// Chat Events
|
|
case:
|
|
payload = &message.ChatSend{
|
|
Event: event.CHAT_MESSAGE,
|
|
}
|
|
case:
|
|
payload = &message.EmoteSend{
|
|
Event: event.CHAT_EMOTE,
|
|
}
|
|
|
|
// File Transfer Events
|
|
case:
|
|
payload = &message.FileTransferList{
|
|
Event: event.FILETRANSFER_LIST,
|
|
}
|
|
|
|
// Screen Events
|
|
case:
|
|
payload = &message.ScreenResolution{
|
|
Event: event.SCREEN_RESOLUTION,
|
|
}
|
|
case:
|
|
payload = &message.ScreenConfigurations{
|
|
Event: event.SCREEN_CONFIGURATIONS,
|
|
}
|
|
|
|
// Broadcast Events
|
|
case:
|
|
payload = &message.BroadcastStatus{
|
|
Event: event.BROADCAST_STATUS,
|
|
}
|
|
|
|
// Admin Events
|
|
case:
|
|
payload = &message.AdminLock{
|
|
Event: event.ADMIN_UNLOCK,
|
|
}
|
|
case:
|
|
payload = &message.AdminLock{
|
|
Event: event.ADMIN_LOCK,
|
|
}
|
|
case:
|
|
payload = &message.AdminTarget{
|
|
Event: event.ADMIN_CONTROL,
|
|
} // message.Admin
|
|
case:
|
|
payload = &message.AdminTarget{
|
|
Event: event.ADMIN_RELEASE,
|
|
} // message.Admin
|
|
case:
|
|
payload = &message.AdminTarget{
|
|
Event: event.ADMIN_MUTE,
|
|
}
|
|
case:
|
|
payload = &message.AdminTarget{
|
|
Event: event.ADMIN_UNMUTE,
|
|
}
|
|
case:
|
|
payload = &message.AdminTarget{
|
|
Event: event.ADMIN_KICK,
|
|
}
|
|
case:
|
|
payload = &message.AdminTarget{
|
|
Event: event.ADMIN_BAN,
|
|
}
|
|
default:
|
|
return nil, fmt.Errorf("unknown event type: %s", header.Event)
|
|
}
|
|
|
|
return json.Marshal(payload)
|
|
}
|