Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class com.clubpenguin.net.Connection extends XMLSocket implements com.clubpenguin.net.IConnection
- {
- var _responded, onConnect, onData, onXML, onClose, messageHandlers, arrayTags, disabledCommands, ipAddress, port, socketConnectionTimeoutThread, onConnection, close, activeRoomId, roomList, buddyList, myBuddyVars, myUserId, myUserName, playerId, amIModerator, onConnectionLost;
- function Connection () {
- super();
- initialize();
- _responded = new org.osflash.signals.Signal(String, Array);
- onConnect = connectionEstablished;
- onData = gotData;
- onXML = xmlReceived;
- onClose = connectionClosed;
- messageHandlers = new Object();
- setupMessageHandlers();
- arrayTags = {uLs:true, rmList:true, vars:true, bList:true, vs:true, mv:true};
- disabledCommands = [];
- }
- function getResponded() {
- return(_responded);
- }
- function login(zone, name, pass) {
- var _local3 = {t:"sys"};
- var _local2 = ((((("<login z='" + zone) + "'><nick><![CDATA[") + name) + "]]></nick><pword><![CDATA[") + pass) + "]]></pword></login>";
- send(_local3, "login", 0, _local2);
- }
- function connect(ipAdr, port) {
- if (!isConnected) {
- ipAddress = ipAdr;
- this.port = port;
- super.connect(ipAdr, port);
- socketConnectionTimeoutThread = setInterval(com.clubpenguin.util.Delegate.create(this, socketTimeoutHandler), socketConnectionTimeout);
- }
- }
- function xmlReceived(message) {
- var _local2 = new Object();
- message2Object(message.childNodes, _local2);
- if (debug) {
- }
- var _local3 = _local2.msg.attributes.t;
- messageHandlers[_local3].handleMessage(_local2.msg.body, this, "xml");
- }
- function socketTimeoutHandler() {
- if (socketConnectionTimeoutThread != null) {
- clearInterval(socketConnectionTimeoutThread);
- delete socketConnectionTimeoutThread;
- }
- preConnection = false;
- onConnection(false);
- close();
- }
- function getRandomKey() {
- send({t:"sys"}, "rndK", -1, "");
- }
- function disconnect() {
- close();
- isConnected = false;
- initialize();
- }
- function connected() {
- return(isConnected);
- }
- function message2Object(xmlNodes, parentObj) {
- var _local8 = 0;
- var _local3 = null;
- while (_local8 < xmlNodes.length) {
- var _local4 = xmlNodes[_local8];
- var _local5 = _local4.nodeName;
- var _local6 = _local4.nodeValue;
- if (parentObj instanceof Array) {
- _local3 = {};
- parentObj.push(_local3);
- _local3 = parentObj[parentObj.length - 1];
- } else {
- parentObj[_local5] = new Object();
- _local3 = parentObj[_local5];
- }
- for (var _local11 in _local4.attributes) {
- if (typeof(_local3.attributes) == "undefined") {
- _local3.attributes = {};
- }
- var _local2 = _local4.attributes[_local11];
- if (!isNaN(Number(_local2))) {
- _local2 = Number(_local2);
- }
- if (_local2.toLowerCase() == "true") {
- _local2 = true;
- } else if (_local2.toLowerCase() == "false") {
- _local2 = false;
- }
- _local3.attributes[_local11] = _local2;
- }
- if (arrayTags[_local5]) {
- _local3[_local5] = [];
- _local3 = _local3[_local5];
- }
- if (_local4.hasChildNodes() && (_local4.firstChild.nodeValue == undefined)) {
- var _local9 = _local4.childNodes;
- message2Object(_local9, _local3);
- } else {
- _local6 = _local4.firstChild.nodeValue;
- if (((!isNaN(_local6)) && (_local4.nodeName != "txt")) && (_local4.nodeName != "var")) {
- _local6 = Number(_local6);
- }
- _local3.value = _local6;
- }
- _local8++;
- }
- }
- function makeHeader(headerObj) {
- var _local2 = "<msg";
- for (var _local3 in headerObj) {
- _local2 = _local2 + ((((" " + _local3) + "='") + headerObj[_local3]) + "'");
- }
- _local2 = _local2 + ">";
- return(_local2);
- }
- function closeHeader() {
- return("</msg>");
- }
- function send(header, action, fromRoom, message) {
- var _local3 = makeHeader(header);
- _local3 = _local3 + ((((((("<body action='" + action) + "' r='") + fromRoom) + "'>") + message) + "</body>") + closeHeader());
- if (debug) {
- }
- super.send(_local3);
- }
- function sendXtMessage(xtName, cmdName, paramObj, type, roomId) {
- var _local3 = cmdName.split("#")[1];
- var _local2 = 0;
- while (_local2 < disabledCommands.length) {
- if (disabledCommands[_local2] == _local3) {
- return(undefined);
- }
- _local2++;
- }
- if (roomId == undefined) {
- roomId = activeRoomId;
- }
- if (type == undefined) {
- type = "str";
- }
- if (type == "str") {
- var _local5;
- _local5 = (((((((rawProtocolSeparator + "xt") + rawProtocolSeparator) + xtName) + rawProtocolSeparator) + cmdName) + rawProtocolSeparator) + roomId) + rawProtocolSeparator;
- _local2 = 0;
- while (_local2 < paramObj.length) {
- _local5 = _local5 + (paramObj[_local2].toString() + rawProtocolSeparator);
- _local2++;
- }
- sendString(_local5);
- }
- }
- function initialize(isLogout) {
- if (isLogout == undefined) {
- isLogout = false;
- }
- roomList = {};
- buddyList = [];
- myBuddyVars = [];
- activeRoomId = null;
- myUserId = null;
- myUserName = "";
- playerId = null;
- changingRoom = false;
- amIModerator = false;
- if (!isLogout) {
- isConnected = false;
- }
- }
- function sendString(message) {
- if (debug) {
- }
- super.send(message);
- }
- function connectionEstablished(ok) {
- if (ok) {
- if (socketConnectionTimeoutThread != null) {
- clearInterval(socketConnectionTimeoutThread);
- delete socketConnectionTimeoutThread;
- }
- preConnection = false;
- var _local3 = {t:"sys"};
- var _local2 = ((("<ver v='" + majVersion.toString()) + minVersion.toString()) + subVersion.toString()) + "' />";
- send(_local3, "verChk", 0, _local2);
- }
- }
- function connectionClosed() {
- isConnected = false;
- if (preConnection) {
- connectionEstablished(false);
- } else {
- initialize();
- onConnectionLost();
- }
- }
- function gotData(message) {
- if (message.charAt(0) == rawProtocolSeparator) {
- strReceived(message);
- } else if (message.charAt(0) == "<") {
- onXML(new XML(message));
- }
- }
- function strReceived(message) {
- var _local4 = message.substr(1, message.length - 2).split(rawProtocolSeparator);
- var _local3 = _local4[1];
- var _local7 = _local4.slice(2);
- var _local2 = 0;
- while (_local2 < disabledCommands.length) {
- if (_local3 == disabledCommands[_local2]) {
- return(undefined);
- }
- _local2++;
- }
- if (debug) {
- }
- var _local6 = _local4[0];
- _responded.dispatch(_local3, _local7);
- messageHandlers[_local6].handleMessage(_local4.splice(1, _local4.length - 1), this, "str");
- }
- function setupMessageHandlers() {
- addMessageHandler("sys", handleSysMessages);
- addMessageHandler("xt", com.clubpenguin.util.Delegate.create(this, handleExtensionMessages));
- }
- function addMessageHandler(handlerId, handlerMethod) {
- if (messageHandlers[handlerId] == undefined) {
- messageHandlers[handlerId] = new Object();
- messageHandlers[handlerId].handleMessage = handlerMethod;
- }
- }
- function handleExtensionMessages(dataObj, scope, type) {
- if (type == undefined) {
- type = "xml";
- }
- if (type == "xml") {
- var _local6 = dataObj.attributes.action;
- var _local7 = dataObj.attributes.r;
- if (_local6 == "xtRes") {
- var _local4 = dataObj.value;
- var _local5 = scope.os.deserialize(_local4);
- scope.onExtensionResponse(_local5, type);
- }
- } else if (type == "str") {
- scope.onExtensionResponse(dataObj, type);
- } else if (type == "json") {
- scope.onExtensionResponse(dataObj.o, type);
- }
- }
- function handleSysMessages(xmlObj, scope) {
- var _local1 = xmlObj.attributes.action;
- var _local5 = xmlObj.attributes.r;
- if (_local1 == "apiOK") {
- scope.isConnected = true;
- scope.onConnection(true);
- } else if (_local1 == "rndK") {
- var _local2 = xmlObj.k.value;
- scope.onRandomKey(_local2);
- }
- }
- function disableCommands(disabledCommands) {
- this.disabledCommands = disabledCommands;
- }
- function enableCommands() {
- disabledCommands = [];
- }
- var isConnected = false;
- var changingRoom = false;
- var preConnection = true;
- var majVersion = 1;
- var minVersion = 5;
- var subVersion = 3;
- var rawProtocolSeparator = "%";
- var socketConnectionTimeout = 30000;
- var debug = true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement