import { URLExt } from '@jupyterlab/coreutils'; import { ServerConnection } from '@jupyterlab/services'; /** * Call the server extension * * @param endPoint API REST end point for the extension * @param serverSettings The server settings to use for the request * @param init Initial values for the request * @returns The response body interpreted as JSON */ export async function requestAPI( endPoint: string, serverSettings: ServerConnection.ISettings, init: RequestInit = {} ): Promise { // Make request to Jupyter API const requestUrl = URLExt.join( serverSettings.baseUrl, 'opencode-bridge', // our server extension's API namespace endPoint ); let response: Response; try { response = await ServerConnection.makeRequest( requestUrl, init, serverSettings ); } catch (error) { throw new ServerConnection.NetworkError(error as any); } let data: any = await response.text(); if (data.length > 0) { try { data = JSON.parse(data); } catch (error) { console.log('Not a JSON response body.', response); } } if (!response.ok) { throw new ServerConnection.ResponseError(response, data.message || data); } return data; }