mirror of
https://github.com/m1k1o/neko.git
synced 2025-05-02 11:55:53 +02:00
legacy: implement screen resolution API.
This commit is contained in:
parent
17467dc3c8
commit
6a8f8052cd
2 changed files with 53 additions and 31 deletions
|
@ -188,12 +188,30 @@ func (s *session) wsToBackend(msg []byte) error {
|
||||||
|
|
||||||
// Screen Events
|
// Screen Events
|
||||||
case oldEvent.SCREEN_RESOLUTION:
|
case oldEvent.SCREEN_RESOLUTION:
|
||||||
// No WS equivalent, call HTTP API and return screen resolution.
|
response := &types.ScreenSize{}
|
||||||
return fmt.Errorf("event not implemented: %s", header.Event)
|
err := s.apiReq(http.MethodGet, "/api/room/screen", nil, response)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.toClient(&oldMessage.ScreenResolution{
|
||||||
|
Event: oldEvent.SCREEN_RESOLUTION,
|
||||||
|
Width: response.Width,
|
||||||
|
Height: response.Height,
|
||||||
|
Rate: response.Rate,
|
||||||
|
})
|
||||||
|
|
||||||
case oldEvent.SCREEN_CONFIGURATIONS:
|
case oldEvent.SCREEN_CONFIGURATIONS:
|
||||||
// No WS equivalent, call HTTP API and return screen configurations.
|
response := &[]types.ScreenSize{}
|
||||||
return fmt.Errorf("event not implemented: %s", header.Event)
|
err := s.apiReq(http.MethodGet, "/api/room/screen/configurations", nil, response)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.toClient(&oldMessage.ScreenConfigurations{
|
||||||
|
Event: oldEvent.SCREEN_CONFIGURATIONS,
|
||||||
|
Configurations: screenConfigurations(*response),
|
||||||
|
})
|
||||||
|
|
||||||
case oldEvent.SCREEN_SET:
|
case oldEvent.SCREEN_SET:
|
||||||
request := &oldMessage.ScreenResolution{}
|
request := &oldMessage.ScreenResolution{}
|
||||||
|
|
|
@ -37,6 +37,36 @@ func profileToMember(id string, profile types.MemberProfile) (*oldTypes.Member,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func screenConfigurations(screenSizes []types.ScreenSize) map[int]oldTypes.ScreenConfiguration {
|
||||||
|
rates := map[string][]int16{}
|
||||||
|
for _, size := range screenSizes {
|
||||||
|
key := fmt.Sprintf("%dx%d", size.Width, size.Height)
|
||||||
|
rates[key] = append(rates[key], size.Rate)
|
||||||
|
}
|
||||||
|
|
||||||
|
usedScreenSizes := map[string]struct{}{}
|
||||||
|
screenSizesList := map[int]oldTypes.ScreenConfiguration{}
|
||||||
|
for i, size := range screenSizes {
|
||||||
|
key := fmt.Sprintf("%dx%d", size.Width, size.Height)
|
||||||
|
if _, ok := usedScreenSizes[key]; ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
ratesMap := map[int]int16{}
|
||||||
|
for i, rate := range rates[key] {
|
||||||
|
ratesMap[i] = rate
|
||||||
|
}
|
||||||
|
|
||||||
|
screenSizesList[i] = oldTypes.ScreenConfiguration{
|
||||||
|
Width: size.Width,
|
||||||
|
Height: size.Height,
|
||||||
|
Rates: ratesMap,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return screenSizesList
|
||||||
|
}
|
||||||
|
|
||||||
func (s *session) sendControlHost(request message.ControlHost) error {
|
func (s *session) sendControlHost(request message.ControlHost) error {
|
||||||
lastHostID := s.lastHostID
|
lastHostID := s.lastHostID
|
||||||
|
|
||||||
|
@ -216,35 +246,9 @@ func (s *session) wsToClient(msg []byte) error {
|
||||||
// ScreenSizesList
|
// ScreenSizesList
|
||||||
//
|
//
|
||||||
|
|
||||||
rates := map[string][]int16{}
|
|
||||||
for _, size := range request.ScreenSizesList {
|
|
||||||
key := fmt.Sprintf("%dx%d", size.Width, size.Height)
|
|
||||||
rates[key] = append(rates[key], size.Rate)
|
|
||||||
}
|
|
||||||
|
|
||||||
usedScreenSizes := map[string]struct{}{}
|
|
||||||
screenSizesList := map[int]oldTypes.ScreenConfiguration{}
|
|
||||||
for i, size := range request.ScreenSizesList {
|
|
||||||
key := fmt.Sprintf("%dx%d", size.Width, size.Height)
|
|
||||||
if _, ok := usedScreenSizes[key]; ok {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
ratesMap := map[int]int16{}
|
|
||||||
for i, rate := range rates[key] {
|
|
||||||
ratesMap[i] = rate
|
|
||||||
}
|
|
||||||
|
|
||||||
screenSizesList[i] = oldTypes.ScreenConfiguration{
|
|
||||||
Width: size.Width,
|
|
||||||
Height: size.Height,
|
|
||||||
Rates: ratesMap,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
err = s.toClient(&oldMessage.ScreenConfigurations{
|
err = s.toClient(&oldMessage.ScreenConfigurations{
|
||||||
Event: oldEvent.SCREEN_CONFIGURATIONS,
|
Event: oldEvent.SCREEN_CONFIGURATIONS,
|
||||||
Configurations: screenSizesList,
|
Configurations: screenConfigurations(request.ScreenSizesList),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
Loading…
Add table
Reference in a new issue