( ctx context.Context, manager *Manager, join sessionpkg.NetworkPeerJoin, )
| 459 | } |
| 460 | |
| 461 | func normalizeJoinChannelRequest( |
| 462 | ctx context.Context, |
| 463 | manager *Manager, |
| 464 | join sessionpkg.NetworkPeerJoin, |
| 465 | ) (joinChannelRequest, error) { |
| 466 | if ctx == nil { |
| 467 | return joinChannelRequest{}, errors.New("network: join context is required") |
| 468 | } |
| 469 | if manager == nil { |
| 470 | return joinChannelRequest{}, errors.New("network: manager is required") |
| 471 | } |
| 472 | if err := ctx.Err(); err != nil { |
| 473 | return joinChannelRequest{}, err |
| 474 | } |
| 475 | if err := manager.lifecycleCtx.Err(); err != nil { |
| 476 | return joinChannelRequest{}, err |
| 477 | } |
| 478 | |
| 479 | request := joinChannelRequest{ |
| 480 | sessionID: strings.TrimSpace(join.SessionID), |
| 481 | peerID: strings.TrimSpace(join.PeerID), |
| 482 | workspaceID: strings.TrimSpace(join.WorkspaceID), |
| 483 | displayName: strings.TrimSpace(join.DisplayName), |
| 484 | channel: strings.TrimSpace(join.Channel), |
| 485 | capabilities: cloneJoinCapabilities(join.Capabilities), |
| 486 | } |
| 487 | if request.sessionID == "" { |
| 488 | return joinChannelRequest{}, fmt.Errorf("%w: session id is required", ErrMissingField) |
| 489 | } |
| 490 | if request.peerID == "" { |
| 491 | return joinChannelRequest{}, fmt.Errorf("%w: peer id is required", ErrMissingField) |
| 492 | } |
| 493 | if err := ValidateWorkspaceID(request.workspaceID); err != nil { |
| 494 | return joinChannelRequest{}, err |
| 495 | } |
| 496 | if err := ValidateChannel(request.channel); err != nil { |
| 497 | return joinChannelRequest{}, err |
| 498 | } |
| 499 | return request, nil |
| 500 | } |
| 501 | |
| 502 | func cloneJoinCapabilities(capabilities []sessionpkg.NetworkPeerCapability) []sessionpkg.NetworkPeerCapability { |
| 503 | return cloneNetworkPeerCapabilityCatalog(capabilities) |
no test coverage detected