diff --git a/src/octoprint/static/js/app/viewmodels/settings.js b/src/octoprint/static/js/app/viewmodels/settings.js
index 51fcc79a..fdf930ac 100644
--- a/src/octoprint/static/js/app/viewmodels/settings.js
+++ b/src/octoprint/static/js/app/viewmodels/settings.js
@@ -185,6 +185,74 @@ $(function() {
self.terminalFilters.remove(filter);
};
+ self.testWebcamStreamUrl = function() {
+ if (!self.webcam_streamUrl()) {
+ return;
+ }
+
+ var text = gettext("If you see your webcam stream below, the entered stream URL is ok.");
+ showMessageDialog({
+ title: gettext("Stream test"),
+ message: '
' + text + '
 + ')
'
+ });
+ };
+
+ self.testWebcamSnapshotUrl = function(viewModel, event) {
+ if (!self.webcam_snapshotUrl()) {
+ return;
+ }
+
+ var target = $(event.target);
+ target.prepend(' ');
+
+ var errorText = gettext("Could not retrieve snapshot URL, please double check the URL");
+ var errorTitle = gettext("Snapshot test failed");
+ $.ajax({
+ url: API_BASEURL + "util/test",
+ type: "POST",
+ dataType: "json",
+ data: JSON.stringify({
+ command: "url",
+ url: self.webcam_snapshotUrl(),
+ method: "GET",
+ response: true
+ }),
+ contentType: "application/json; charset=UTF-8",
+ success: function(response) {
+ $("i.icon-spinner", target).remove();
+
+ if (!response.result) {
+ showMessageDialog({
+ title: errorTitle,
+ message: errorText
+ });
+ return;
+ }
+
+ var content = response.response.content;
+ var mimeType = "image/jpeg";
+
+ var headers = response.response.headers;
+ if (headers && headers["mime-type"]) {
+ mimeType = headers["mime-type"];
+ }
+
+ var text = gettext("If you see your webcam snapshot picture below, the entered snapshot URL is ok.");
+ showMessageDialog({
+ title: gettext("Snapshot test"),
+ message: $('' + text + '

')
+ });
+ },
+ error: function() {
+ $("i.icon-spinner", target).remove();
+ showMessageDialog({
+ title: errorTitle,
+ message: errorText
+ });
+ }
+ });
+ };
+
self.onSettingsShown = function() {
self.requestData();
};
diff --git a/src/octoprint/templates/dialogs/_snippets/configurewebcamurls.jinja2 b/src/octoprint/templates/dialogs/_snippets/configurewebcamurls.jinja2
new file mode 100644
index 00000000..ab963a11
--- /dev/null
+++ b/src/octoprint/templates/dialogs/_snippets/configurewebcamurls.jinja2
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/octoprint/templates/dialogs/settings/webcam.jinja2 b/src/octoprint/templates/dialogs/settings/webcam.jinja2
index 3631a00d..d39b69f0 100644
--- a/src/octoprint/templates/dialogs/settings/webcam.jinja2
+++ b/src/octoprint/templates/dialogs/settings/webcam.jinja2
@@ -1,16 +1,5 @@