mirror of
https://github.com/m1k1o/neko.git
synced 2025-04-29 10:26:22 +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
|
||||
case oldEvent.SCREEN_RESOLUTION:
|
||||
// No WS equivalent, call HTTP API and return screen resolution.
|
||||
return fmt.Errorf("event not implemented: %s", header.Event)
|
||||
response := &types.ScreenSize{}
|
||||
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:
|
||||
// No WS equivalent, call HTTP API and return screen configurations.
|
||||
return fmt.Errorf("event not implemented: %s", header.Event)
|
||||
response := &[]types.ScreenSize{}
|
||||
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:
|
||||
request := &oldMessage.ScreenResolution{}
|
||||
|
|
|
@ -37,6 +37,36 @@ func profileToMember(id string, profile types.MemberProfile) (*oldTypes.Member,
|
|||
}, 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 {
|
||||
lastHostID := s.lastHostID
|
||||
|
||||
|
@ -216,35 +246,9 @@ func (s *session) wsToClient(msg []byte) error {
|
|||
// 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{
|
||||
Event: oldEvent.SCREEN_CONFIGURATIONS,
|
||||
Configurations: screenSizesList,
|
||||
Configurations: screenConfigurations(request.ScreenSizesList),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
Loading…
Add table
Reference in a new issue