Public feed
#602038
<?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="<- Clear" click="consoleMsg.text = "";" 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>