mirror of
https://github.com/HeyPuter/puter.git
synced 2026-08-24 06:58:21 +00:00
add puter.workers.getLoggingHandle (#1779)
Docker Image CI / build-and-push-image (push) Has been cancelled
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
release-please / release-please (push) Has been cancelled
test / test (20.x) (push) Has been cancelled
test / test (22.x) (push) Has been cancelled
test / api-test (22.x) (push) Has been cancelled
Docker Image CI / build-and-push-image (push) Has been cancelled
Maintain Release Merge PR / update-release-pr (push) Has been cancelled
release-please / release-please (push) Has been cancelled
test / test (20.x) (push) Has been cancelled
test / test (22.x) (push) Has been cancelled
test / api-test (22.x) (push) Has been cancelled
This commit is contained in:
@@ -326,6 +326,9 @@ class WorkerService extends BaseService {
|
||||
async endLogs({ workerName, authorization }) {
|
||||
return await this.exec_({ runtime, code });
|
||||
},
|
||||
async getLoggingUrl({ }) {
|
||||
return this.config.loggingUrl;
|
||||
}
|
||||
}
|
||||
}
|
||||
async ['__on_driver.register.interfaces']() {
|
||||
@@ -381,19 +384,11 @@ class WorkerService extends BaseService {
|
||||
},
|
||||
result: { type: 'json' },
|
||||
},
|
||||
endLogs: {
|
||||
description: 'Get logs for your backend worker',
|
||||
getLoggingUrl: {
|
||||
description: 'Get logging endpoint for your backend worker',
|
||||
parameters: {
|
||||
workerName: {
|
||||
type: "string",
|
||||
description: "The name of the worker you want the logs of"
|
||||
},
|
||||
authorization: {
|
||||
type: "string",
|
||||
description: "Puter token"
|
||||
}
|
||||
},
|
||||
result: { type: 'json' },
|
||||
result: { type: 'string' },
|
||||
},
|
||||
destroy: {
|
||||
description: 'Get rid of your backend worker',
|
||||
|
||||
@@ -97,7 +97,7 @@ export class WorkersHandler {
|
||||
|
||||
workerName = workerName.toLocaleLowerCase(); // just incase
|
||||
// const driverCall = await puter.drivers.call("workers", "worker-service", "destroy", { authorization: puter.authToken, workerName });
|
||||
const driverResult = await utils.make_driver_method(['authorization', 'workerName'], 'workers', "worker-service", 'destroy')(puter.authToken, workerName);;
|
||||
const driverResult = await utils.make_driver_method(['authorization', 'workerName'], 'workers', "worker-service", 'destroy')(puter.authToken, workerName);
|
||||
|
||||
if (!driverResult.result) {
|
||||
if (!driverResult.result) {
|
||||
@@ -116,5 +116,55 @@ export class WorkersHandler {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
async getLoggingHandle (workerName) {
|
||||
const loggingEndpoint = await utils.make_driver_method([], 'workers', "worker-service", 'getLoggingUrl')(puter.authToken, workerName);
|
||||
const socket = new WebSocket(`${loggingEndpoint}/${puter.authToken}/${workerName}`);
|
||||
const logStreamObject = new EventTarget();
|
||||
logStreamObject.onLog = (data) => { };
|
||||
|
||||
// Coercibility to ReadableStream
|
||||
Object.defineProperty(logStreamObject, 'start', {
|
||||
enumerable: false,
|
||||
value: async (controller) => {
|
||||
socket.addEventListener("message", (event) => {
|
||||
controller.enqueue(JSON.parse(event.data));
|
||||
});
|
||||
socket.addEventListener("close", (event) => {
|
||||
try {
|
||||
controller.close();
|
||||
} catch (e) { }
|
||||
});
|
||||
}
|
||||
});
|
||||
Object.defineProperty(logStreamObject, 'cancel', {
|
||||
enumerable: false,
|
||||
value: async () => {
|
||||
socket.close();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
socket.addEventListener("message", (event) => {
|
||||
const logEvent = new MessageEvent("log", { data: JSON.parse(event.data) });
|
||||
|
||||
logStreamObject.dispatchEvent(logEvent)
|
||||
logStreamObject.onLog(logEvent);
|
||||
});
|
||||
logStreamObject.close = socket.close;
|
||||
return new Promise((res, rej) => {
|
||||
let done = false;
|
||||
socket.onopen = ()=>{
|
||||
done = true;
|
||||
res(logStreamObject);
|
||||
}
|
||||
|
||||
socket.onerror = () => {
|
||||
if (!done) {
|
||||
rej("Failed to open logging connection");
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user