(
baseUrl: string,
token?: string,
query: RemoteSessionDiscoveryQuery = {}
)
| 77 | } |
| 78 | |
| 79 | function fetchRemoteSessions( |
| 80 | baseUrl: string, |
| 81 | token?: string, |
| 82 | query: RemoteSessionDiscoveryQuery = {} |
| 83 | ): Promise<RemoteSessionDiscoveryResult> { |
| 84 | return new Promise<RemoteSessionDiscoveryResult>((resolve, reject) => { |
| 85 | const url = buildRemoteSessionsUrl(normalizeBaseUrl(baseUrl), query) |
| 86 | |
| 87 | const request = net.request(url) |
| 88 | if (token) { |
| 89 | request.setHeader('Authorization', `Bearer ${token}`) |
| 90 | } |
| 91 | request.setHeader('Accept', 'application/json') |
| 92 | |
| 93 | let body = '' |
| 94 | |
| 95 | request.on('response', (response) => { |
| 96 | if (response.statusCode !== 200) { |
| 97 | reject(new Error(`Remote server returned HTTP ${response.statusCode}`)) |
| 98 | return |
| 99 | } |
| 100 | |
| 101 | response.on('data', (chunk: Buffer) => { |
| 102 | body += chunk.toString('utf-8') |
| 103 | }) |
| 104 | |
| 105 | response.on('end', () => { |
| 106 | try { |
| 107 | resolve(parseRemoteSessionsResponse(body)) |
| 108 | } catch { |
| 109 | reject(new Error('Failed to parse remote sessions response')) |
| 110 | } |
| 111 | }) |
| 112 | |
| 113 | response.on('error', (err: Error) => { |
| 114 | reject(err) |
| 115 | }) |
| 116 | }) |
| 117 | |
| 118 | request.on('error', (err: Error) => { |
| 119 | reject(err) |
| 120 | }) |
| 121 | |
| 122 | request.end() |
| 123 | }) |
| 124 | } |
| 125 | |
| 126 | export function registerApiHandlers(_ctx: IpcContext): void { |
| 127 | ensureInstances() |
no test coverage detected