diff --git a/src/widgets/octoprint/component.jsx b/src/widgets/octoprint/component.jsx
index 894bd887..2483e5bf 100644
--- a/src/widgets/octoprint/component.jsx
+++ b/src/widgets/octoprint/component.jsx
@@ -8,24 +8,29 @@ export default function Component({ service }) {
const { widget } = service;
const { data: printerStats, error: printerStatsError } = useWidgetAPI(widget, "printer_stats");
- const { data: jobStats, error: jobStatsError } = useWidgetAPI(widget, "job_stats");
+ // const { data: jobStats, error: jobStatsError } = useWidgetAPI(widget, "job_stats");
if (printerStatsError) {
- const msg = JSON.parse(Buffer.from(printerStatsError.resultData.data).toString());
+ let msg
+ try {
+ msg = JSON.parse(Buffer.from(printerStatsError.resultData.data).toString()).error;
+ } catch (error) {
+ msg = 'Octoprint Not Found'
+ }
return (
-
+
);
}
- if (jobStatsError) {
- return ;
- }
+ // if (jobStatsError) {
+ // return ;
+ // }
- const state = printerStats?.state?.text;
- const tempTool = printerStats?.temperature?.tool0?.actual;
- const tempBed = printerStats?.temperature?.bed?.actual;
+ const state = printerStats[1].Status;
+ const tempTool = printerStats[1].Temp.Tool;
+ const tempBed = printerStats[1].Temp.Bed;
if (!printerStats || !state || !tempTool || !tempBed) {
return (
diff --git a/src/widgets/octoprint/proxy.js b/src/widgets/octoprint/proxy.js
new file mode 100644
index 00000000..c7461148
--- /dev/null
+++ b/src/widgets/octoprint/proxy.js
@@ -0,0 +1,68 @@
+
+import getServiceWidget from "utils/config/service-helpers";
+import { httpProxy } from "utils/proxy/http";
+import createLogger from "utils/logger";
+
+const proxyName = "octoprintProxyHandler";
+const logger = createLogger(proxyName);
+
+async function getWidget(req) {
+ const { group, service } = req.query;
+ if (!group || !service) {
+ logger.debug("Invalid or missing service '%s' or group '%s'", service, group);
+ return null;
+ }
+ const widget = await getServiceWidget(group, service);
+ if (!widget) {
+ logger.debug("Invalid or missing widget for service '%s' in group '%s'", service, group);
+ return null;
+ }
+
+ return widget;
+}
+//http://192.168.4.200/api/printer?apikey=97F8AA6805FD428E8395C8E5E805D01A
+async function printer_stats(params) {
+ const path = `/api/printer?apikey=${params.key}`;
+ const url = `${new URL(`${params.url}${path}`)}`
+
+ const [status, , data] = await httpProxy(url, {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ });
+
+ if (status !== 200) {
+ logger.error("HTTP %d communicating with jdownloader. Data: %s", status, data.toString());
+ return [status, data];
+ }
+
+ try {
+ const decryptedData = JSON.parse(data)
+
+ return [status, {
+ "Status": decryptedData.state.text,
+ "Flags": decryptedData.state.flags,
+ "Temp":{
+ "Tool": decryptedData.temperature.tool0.actual,
+ "Bed": decryptedData.temperature.bed.actual
+ }
+ }];
+ } catch (e) {
+ logger.error("Error decoding jdownloader API data. Data: %s", data.toString());
+ return [status, null];
+ }
+
+}
+
+export default async function octoprintProxyHandler(req, res) {
+ const widget = await getWidget(req);
+
+ if (!widget) {
+ return res.status(400).json({ error: "Invalid proxy service type" });
+ }
+ logger.debug("Getting data from JDRss API");
+ const d = await printer_stats(widget)
+ return res.send(d);
+
+}
\ No newline at end of file
diff --git a/src/widgets/octoprint/widget.js b/src/widgets/octoprint/widget.js
index 591c1dae..e5aaf631 100644
--- a/src/widgets/octoprint/widget.js
+++ b/src/widgets/octoprint/widget.js
@@ -1,8 +1,8 @@
-import genericProxyHandler from "utils/proxy/handlers/generic";
+import octoprintProxyHandler from "./proxy";
const widget = {
api: "{url}/api/{endpoint}?apikey={key}",
- proxyHandler: genericProxyHandler,
+ proxyHandler: octoprintProxyHandler,
mappings: {
printer_stats: {