Public feed #602038

Something

public text v1 · immutable
Raw Edit
·published 2007-07-03 21:17 UTC
rendered paste body
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
	xmlns:mx="http://www.adobe.com/2006/mxml" 
	layout="absolute" 
	creationComplete="onCreationComplete()" 
	currentState="login"
	xmlns:ak33m="http://ak33m.com/mxml">
	<mx:states>
		<mx:State name="login">
			<mx:RemoveChild target="{msg}"/>
			<mx:RemoveChild target="{button1}"/>
			<mx:AddChild position="lastChild">
				<mx:Panel width="250" height="200" layout="absolute" horizontalCenter="0" verticalCenter="0" title="Login to FlexIM">
					<mx:Label x="10" y="10" text="Username:"/>
					<mx:TextInput x="10" y="36" id="username" text="test"/>
					<mx:Label x="10" y="66" text="Password:"/>
					<mx:TextInput x="10" y="92" id="password" displayAsPassword="true" text="test"/>
					<mx:Button x="10" y="122" label="Login" click="doLogin();"/>
				</mx:Panel>
			</mx:AddChild>
			<mx:RemoveChild target="{consoleMsg}"/>
			<mx:RemoveChild target="{chatCodes}"/>
			<mx:RemoveChild target="{cbPresence}"/>
			<mx:RemoveChild target="{label1}"/>
			<mx:RemoveChild target="{button2}"/>
			<mx:RemoveChild target="{buddyList}"/>
			<mx:RemoveChild target="{button3}"/>
			<mx:RemoveChild target="{button4}"/>
			<mx:RemoveChild target="{button5}"/>
		</mx:State>
		<mx:State name="registerAIM">
			<mx:RemoveChild target="{cbPresence}"/>
			<mx:RemoveChild target="{chatCodes}"/>
			<mx:RemoveChild target="{button2}"/>
			<mx:RemoveChild target="{label1}"/>
			<mx:RemoveChild target="{button5}"/>
			<mx:RemoveChild target="{button4}"/>
			<mx:RemoveChild target="{button3}"/>
			<mx:RemoveChild target="{buddyList}"/>
			<mx:RemoveChild target="{button6}"/>
			<mx:RemoveChild target="{msg}"/>
			<mx:RemoveChild target="{button1}"/>
			<mx:AddChild position="lastChild">
				<mx:Panel layout="absolute" right="10" left="10" top="10" bottom="10" title="Register for AIM" id="panel1">
					<mx:Button label="Get Fields" click="getFields();" right="10" top="10"/>
					<mx:TextInput x="234" y="37" id="aim_username"/>
					<mx:Label x="234" y="11" text="Username:"/>
					<mx:Label x="234" y="67" text="Password:"/>
					<mx:TextInput x="234" y="93" id="aim_password"/>
					<mx:Button x="234" y="123" label="Register" click="registerAIM();"/>
				</mx:Panel>
			</mx:AddChild>
			<mx:SetStyle target="{consoleMsg}" name="right"/>
			<mx:SetStyle target="{consoleMsg}" name="bottom" value="10"/>
			<mx:RemoveChild target="{consoleMsg}"/>
			<mx:AddChild relativeTo="{panel1}" position="lastChild" target="{consoleMsg}"/>
			<mx:SetProperty target="{consoleMsg}" name="width" value="216"/>
		</mx:State>
	</mx:states>
	<ak33m:XMLRPCObject id="gatewayObject" endpoint="http://ns1.vcstudios.net:9090/plugins/gateway/xml-rpc/" />
<mx:Script>
	<![CDATA[
		import mx.rpc.events.FaultEvent;
		import mx.rpc.events.ResultEvent;
		import mx.collections.ItemResponder;
		import mx.rpc.AsyncToken;
		import com.ak33m.rpc.xmlrpc.*;
		import mx.messaging.management.Attribute;
		import mx.controls.Text;
		import org.jivesoftware.xiff.data.Message;
		import org.jivesoftware.xiff.data.XMPPStanza;
		import mx.collections.ArrayCollection;
		import mx.rpc.xml.XMLDecoder;
		import mx.controls.Alert;
		import org.jivesoftware.xiff.im.Roster;
		import org.jivesoftware.xiff.conference.Room;
		import org.jivesoftware.xiff.events.*;
		import com.models.UserInformation;
		
		[Bindable]
		public var userInformation:UserInformation = new UserInformation;
		
		trace(Security.sandboxType );
		
		import org.jivesoftware.xiff.core.XMPPConnection;
		
		private var roster:Roster;
		private var room:Room;
		
		public var connection:XMPPConnection = new XMPPConnection();
		
		[Bindable]
		public var errorCodes:ArrayCollection = new ArrayCollection();
		
		[Bindable]
		public var presenceCodes:ArrayCollection = new ArrayCollection([{label:"Free To Chat"},{label:"Away"}]);
		
		[Bindable]
		public var buddyListdp:ArrayCollection = new ArrayCollection();
		
		public function onCreationComplete():void
		{			
			connection.useAnonymousLogin = false;
			//I'm running openFire on my localhost so that's what I've set my server to
			connection.server = "ns1.vcstudios.net";
			connection.addEventListener(ConnectionSuccessEvent.CONNECT_SUCCESS, handleConnectSuccess);
			connection.addEventListener(IncomingDataEvent.INCOMING_DATA, handleIncomingData);
			connection.addEventListener(XIFFErrorEvent.XIFF_ERROR, errorHandler);
			connection.addEventListener(OutgoingDataEvent.OUTGOING_DATA, handleOutgoingData);
			connection.addEventListener(LoginEvent.LOGIN, handleServerLogin);
			room = new Room(connection);
			//The room I've created is called test
			room.setRoomJID("test@conference.ns1.vcstudios.net");
			room.roomName = "test";
			room.conferenceServer = "conference.ns1.vcstudios.net";
			room.addEventListener(RoomEvent.ROOM_JOIN, handleRoomJoin);
			roster = new Roster(connection);
		}
		
		private function str_replace( replace_with:String, replace:String, original:String ):String
		{
			var array:Array = original.split(replace_with);
			return array.join(replace);
		}
		
		public function errorHandler(event:XIFFErrorEvent):void
		{
			var tmpObj:Object = {};
			tmpObj.errorType = event.errorType;
			tmpObj.errorCode = event.errorCode;
			tmpObj.errorCondition = str_replace("-"," ",event.errorCondition);
			tmpObj.errorMessage = event.errorMessage;
			errorCodes.addItem(tmpObj);
		}
		
		public function getFields():void
		{
			var xml:String = "<iq type='get' id='reg1'>" +
"  <query xmlns='aim:iq:register'/>" +
" </iq>";
				connection.sendXML(xml);
		}
		
		public function getUsers():void
		{
			var xml:String = "<iq type='get'" +
							    " from='test@ns1.vcstudios.net/xiff'" +
							    " to='search.ns1.vcstudios.net'" +
							   " id='info1'" +
							   " xml:lang='en'>" +
							  " <query xmlns='jabber:iq:gateway'/>" +
							" </iq>";
			connection.sendXML(xml);
		}
		
		public function getServices():void
		{
			var xml:String = "<iq type='get' from='test@ns1.vcstudios.net/xiff' to='ns1.vcstudios.net' id='info1'>" +
							  " <query xmlns='http://jabber.org/protocol/disco#items'/></iq>";
			connection.sendXML(xml);
		}
		
		public function registerAIM():void
		{
			var token:AsyncToken = gatewayObject.call("Manager.addRegistration","ORbOzn8&w",userInformation._JID,"aim",aim_username.text,aim_password.text);
			var tresponder:ItemResponder = new ItemResponder(this.showAIMResult,this.onFault);
			
			token.addResponder(tresponder);
		}
		
		public function showAIMResult(event:ResultEvent,token:AsyncToken = null):void
		{
			Alert.show("Successfully registered for AOL Instant Messanger!");
		}
		
		public function onFault(event:FaultEvent, token:AsyncToken = null):void
		{
			consoleMsg.text = consoleMsg.text + "\n\n\n\n" + event.fault.faultString + "\n\n" + event.fault.faultDetail;
			Alert.show(event.fault.faultString,event.fault.faultCode);
		}
		
		/**
		** Set User Presence
		**/
		
		public function setPresence():void
		{
			roster.setPresence(cbPresence.selectedItem.label,cbPresence.selectedItem.label,0);
			AIMPresence();
		}
		
		public function AIMPresence():void
		{
			var xml:String = '<presence to="msn.ns1.vcstudios.net" from="test@msn.ns1.vcstudios.net/xiff" ><show>away</show></presence>';
			connection.sendXML(xml);
		}
		
		private function doLogin():void
		{
			connection.username = username.text;
			connection.password = password.text;
			connection.connect("flash");
			userInformation._username = username.text;
			userInformation._password = password.text;
			userInformation._JID = username.text + "@flexim/xiff";
			currentState = '';
		}
		
		private function sendMessage():void
		{
			room.sendMessage(msg.text);
			msg.text == "";
		}
		
		private function handleConnectSuccess(event:ConnectionSuccessEvent):void
		{
			consoleMsg.text = consoleMsg.text + "Connected!";
			
		}
		
		private function handleRoomJoin(event:RoomEvent):void{
			room.sendMessage("test has joined the room");
		}
		
		private function handleServerLogin(event:LoginEvent):void{
			trace("Login event recieved");
			roster.setPresence(null, "Online", 5);
			room.join();
		}
		
		private function handleIncomingData(event:IncomingDataEvent):void
		{
			if(event.data.firstChild.nodeName == "iq")
			{
				if(!event.data.firstChild.firstChild.firstChild.attributes.name == "")
				{
					var tmpObj:Object = {};
					tmpObj.name = event.data.firstChild.firstChild.firstChild.attributes.name;
					tmpObj.group = event.data.firstChild.firstChild.firstChild.firstChild.nodeValue;
					tmpObj.jID = event.data.firstChild.firstChild.firstChild.attributes.jid;
					//Alert.show(tmpObj.jID);
					buddyListdp.addItem(tmpObj);					
				}			
			}
			if(event.data.firstChild.nodeName == "message")
			{
				var tmpXML:XMLList = new XMLList(event.data);
				if(tmpXML.body == null)
				{
					//do nothing
				}else{
				consoleMsg.text = consoleMsg.text + event.data.firstChild.attributes.from + ": " + tmpXML.body + "\n\n\n\n";
				}
			}else{
				consoleMsg.text = consoleMsg.text + event.data + "\n\n\n\n";
			}
		}
		
		private function handleOutgoingData(event:OutgoingDataEvent):void
		{
			consoleMsg.text = consoleMsg.text + ">>>Sent: " + event.data + "\n\n\n\n";
		}
		
	 
	]]>
</mx:Script>
	<mx:TextArea id="consoleMsg" right="483" left="10" top="10" bottom="40"/>
	<mx:TextInput right="109" bottom="10" left="10" id="msg"/>
	<mx:Button label="Say It" click="sendMessage()" right="10" bottom="10" width="91" id="button1"/>
	<mx:DataGrid id="chatCodes" right="10" top="10" dataProvider="{errorCodes}" width="465" height="140">
		<mx:columns>
			<mx:DataGridColumn headerText="Code" id="codeField" dataField="errorCode"/>
			<mx:DataGridColumn headerText="Condition" dataField="errorCondition"/>
			<mx:DataGridColumn headerText="Message" dataField="errorMessage"/>
			<mx:DataGridColumn headerText="Type" dataField="errorType" />
		</mx:columns>
	</mx:DataGrid>
	<mx:Label text="Presence:" id="label1" right="414" top="160"/>
	<mx:ComboBox id="cbPresence" top="158" right="246" width="160" dataProvider="{presenceCodes}" change="setPresence();"></mx:ComboBox>
	<mx:Button label="&lt;- Clear" click="consoleMsg.text = &quot;&quot;;" id="button2" right="403" top="186"/>
	<mx:Button label="Get Users" click="getUsers();" id="button5" right="394" top="216"/>
	<mx:Button label="Get Services" click="getServices();" id="button4" right="378" top="246"/>
	<mx:Button label="Get AIM" id="button3" right="402" top="276"/>
	<mx:DataGrid id="buddyList" dataProvider="{buddyListdp}" right="173" top="306">
		<mx:columns>
			<mx:DataGridColumn headerText="Name" dataField="jID">
				<mx:itemRenderer>
					<mx:Component>
						<mx:Image source="http://ns1.vcstudios.net:9090/plugins/presence/status?jid={data.jID}" />
					</mx:Component>
				</mx:itemRenderer>
			</mx:DataGridColumn>
			<mx:DataGridColumn headerText="Group" dataField="group"/>
			<mx:DataGridColumn headerText="Column 3" dataField="col3"/>
		</mx:columns>
	</mx:DataGrid>
	<mx:Button x="549" y="456" label="Register for AIM" click="currentState = 'registerAIM';" id="button6"/>
</mx:Application>