This commit is contained in:
Gina Häußge 2015-09-01 16:03:57 +02:00
parent f0ab517857
commit 8232126684
3 changed files with 165 additions and 0 deletions

View file

@ -0,0 +1,79 @@
var OctoPrint = (function($, _, SockJS) {
var self = {
options: {
socketReconnectTimeouts: [0, 1, 1, 2, 3, 5, 8, 13, 20, 40, 100],
socketDebug: false,
socketNormalClose: 1000
}
};
var _socket = undefined;
var _socketAddress = undefined;
var _socketReconnecting = false;
var _socketReconnectTrial = 0;
var _socketIgnoreReconnects = 1;
function callCallback(callback, arguments) {
if (!_.isFunction(self.options[callback])) {
throw Error("No such callback: " + callback);
}
self.options[callback].bind(arguments);
}
function connect(socketAddress) {
var address = socketAddress || _socketAddress;
if (address == undefined) {
return;
}
var socketOptions = {
debug: options.socketDebug || false
};
if (_socket != undefined) {
self._socket.close();
delete self._socket;
}
_socketAddress = address;
_socket = new SockJS(address, undefined, socketOptions);
_socket.onopen = onSocketOpen;
_socket.onclose = onSocketClose;
_socket.onmessage = onSocketMessage;
}
function onSocketOpen() {
_socketReconnecting = false;
_socketReconnectTrial = 0;
}
function onSocketClose(error) {
if (error.code == options.socketNormalClose) {
return;
}
if (_socketReconnectTrial >= _socketIgnoreReconnects) {
if (options.onAttemptingReconnect) {
options.onAttemptingReconnect(_socketReconnectTrial);
}
}
if (_socketReconnectTrial < options.socketReconnectTimeouts.length) {
var timeout = options.socketReconnectTimeouts[_socketReconnectTrial];
log.info("Reconnect trial #" + self._autoReconnectTrial + ", waiting " + timeout + "s");
setTimeout(connect, timeout * 1000);
_socketReconnectTrial++;
} else {
if (options.onReconnectFailed) {
options.onReconnectFailed();
}
}
}
function onSocketMessage(data) {
}
return self;
}(jQuery, _, SockJS));

View file

@ -0,0 +1,21 @@
OctoPrint.files = (function($, _) {
var self = {};
self.get = function(opts) {
var url = "api/files";
var origin = opts.origin || "";
if (origin && _.contains(["local", "sdcard"], origin)) {
url += origin + "/"
}
OctoPrint.get_json({
url: url,
success: opts.success,
error: opts.error,
complete: opts.complete
})
};
return self;
})($, _);

View file

@ -0,0 +1,65 @@
var OctoPrint = (function($) {
var self = {};
self.options = {
"baseurl": undefined,
"apikey": undefined
};
self.ajax = function(opts) {
var url = self.options.baseurl + opts.url;
var headers = $.extend({}, opts.headers || {});
headers["X-Api-Key"] = self.options.apikey;
var params = $.extend({}, opts);
params.url = url;
$.ajax(params);
};
self.get = function(opts) {
var params = $.extend({}, opts);
params.type = "GET";
self.ajax(params);
};
self.post = function(opts) {
var headers = $.extend({}, opts.headers || {});
headers["Cache-Control"] = "no-cache";
var params = $.extend({}, opts);
params.type = "POST";
params.data = JSON.stringify(data);
params.headers = headers;
self.ajax(params);
};
self.delete = function(opts) {
var params = $.extend({}, opts);
params.type = "DELETE";
self.ajax(params);
};
self.get_json = function(opts) {
var params = $.extend({}, opts);
params.dataType = "json";
self.get(params);
};
self.post_json = function(opts) {
var data = opts.data || {};
var params = $.extend({}, opts);
params.contentType = "application/json; charset=UTF-8";
params.dataType = "json";
params.data = JSON.stringify(data);
self.post(params);
};
return self;
})($);