Files
rainmelt/html/API.js
2012-08-06 19:32:11 +09:00

62 lines
1.8 KiB
JavaScript

var API = function(terminal) {
this.terminal = terminal;
};
API.prototype.sendPacket = function(callback, args, command, packetArgs) {
var id = this.terminal.nextID();
this.terminal.callbacks[id.toString()] = callback;
this.terminal.args[id.toString()] = args;
this.terminal.ws.webSocket.send(JSON.stringify(
{ id: id, opcode: 'API', command: command, args: packetArgs }
));
};
API.prototype.commandList = function(callback, args) {
this.sendPacket(callback, args, 'commandList', []);
};
API.prototype.who = function(callback, args) {
this.sendPacket(callback, args, 'who', []);
};
API.prototype.login = function(callback, args, account, password) {
this.sendPacket(callback, args, 'login', [ account, password ]);
};
var FileAPI = function(terminal) {
this.terminal = terminal;
};
FileAPI.prototype.sendPacket = function(callback, args, command, packetArgs) {
var id = this.terminal.nextID();
this.terminal.callbacks[id.toString()] = callback;
this.terminal.args[id.toString()] = args;
this.terminal.ws.webSocket.send(JSON.stringify(
{ id: id, opcode: 'FileAPI', command: command, args: packetArgs }
));
};
FileAPI.prototype.list = function(callback, args, directory) {
this.sendPacket(callback, args, 'list', [ directory ]);
};
FileAPI.prototype.load = function(callback, args, filename) {
this.sendPacket(callback, args, 'load', [ filename ]);
};
FileAPI.prototype.delete = function(callback, args, filename) {
this.sendPacket(callback, args, 'delete', [ filename ]);
};
FileAPI.prototype.createDirectory = function(callback, args, directory) {
this.sendPacket(callback, args, 'createDirectory', [ directory ]);
};
FileAPI.prototype.save = function(callback, args, path, content) {
this.sendPacket(callback, args, 'save', [ path, Base64.encode(content) ]);
};