aboutsummaryrefslogtreecommitdiff
path: root/vendors/uploadify/com/adobe/protocols/dict
diff options
context:
space:
mode:
Diffstat (limited to 'vendors/uploadify/com/adobe/protocols/dict')
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/Database.as34
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/Definition.as39
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/Dict.as328
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/DictionaryServer.as28
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/MatchStrategy.as34
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/Response.as39
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/events/ConnectedEvent.as14
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/events/DatabaseEvent.as26
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/events/DefinitionEvent.as27
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/events/DefinitionHeaderEvent.as26
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/events/DictionaryServerEvent.as26
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/events/DisconnectedEvent.as14
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/events/ErrorEvent.as37
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/events/MatchEvent.as26
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/events/MatchStrategiesEvent.as26
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/events/NoMatchEvent.as14
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/util/CompleteResponseEvent.as25
-rw-r--r--vendors/uploadify/com/adobe/protocols/dict/util/SocketHelper.as49
18 files changed, 812 insertions, 0 deletions
diff --git a/vendors/uploadify/com/adobe/protocols/dict/Database.as b/vendors/uploadify/com/adobe/protocols/dict/Database.as
new file mode 100644
index 000000000..0ddeef53c
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/Database.as
@@ -0,0 +1,34 @@
+package com.adobe.protocols.dict
+{
+ public class Database
+ {
+ private var _name:String;
+ private var _description:String;
+
+ public function Database(name:String, description:String)
+ {
+ this._name = name;
+ this._description = description;
+ }
+
+ public function set name(name:String):void
+ {
+ this._name = name;
+ }
+
+ public function get name():String
+ {
+ return this._name;
+ }
+
+ public function set description(description:String):void
+ {
+ this._description = description;
+ }
+
+ public function get description():String
+ {
+ return this._description;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/Definition.as b/vendors/uploadify/com/adobe/protocols/dict/Definition.as
new file mode 100644
index 000000000..934a330e8
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/Definition.as
@@ -0,0 +1,39 @@
+package com.adobe.protocols.dict
+{
+ public class Definition
+ {
+ private var _definition:String;
+ private var _database:String;
+ private var _term:String;
+
+ public function set definition(definition:String):void
+ {
+ this._definition = definition;
+ }
+
+ public function get definition():String
+ {
+ return this._definition;
+ }
+
+ public function set database(database:String):void
+ {
+ this._database = database;
+ }
+
+ public function get database():String
+ {
+ return this._database;
+ }
+
+ public function set term(term:String):void
+ {
+ this._term = term;
+ }
+
+ public function get term():String
+ {
+ return this._term;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/Dict.as b/vendors/uploadify/com/adobe/protocols/dict/Dict.as
new file mode 100644
index 000000000..07d2530cf
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/Dict.as
@@ -0,0 +1,328 @@
+package com.adobe.protocols.dict
+{
+ import com.adobe.protocols.dict.events.*;
+ import com.adobe.protocols.dict.util.*;
+
+ import flash.events.Event;
+ import flash.events.EventDispatcher;
+ import flash.events.IOErrorEvent;
+ import flash.events.ProgressEvent;
+ import flash.events.SecurityErrorEvent;
+ import flash.net.Socket;
+ import mx.rpc.http.HTTPService;
+ import mx.rpc.events.ResultEvent;
+ import mx.rpc.events.FaultEvent;
+ import flash.xml.XMLNode;
+ import mx.utils.StringUtil;
+
+ public class Dict
+ extends EventDispatcher
+ {
+ // Event type names.
+ public static var CONNECTED:String = "connected";
+ public static var DISCONNECTED:String = "disconnected";
+ public static var IO_ERROR:String = IOErrorEvent.IO_ERROR;
+ public static var ERROR:String = "error";
+ public static var SERVERS:String = "servers";
+ public static var DATABASES:String = "databases";
+ public static var MATCH_STRATEGIES:String = "matchStrategies";
+ public static var DEFINITION:String = "definition";
+ public static var DEFINITION_HEADER:String = "definitionHeader";
+ public static var MATCH:String = "match";
+ public static var NO_MATCH:String = "noMatch";
+
+ public static var FIRST_MATCH:uint = 0;
+ public static var ALL_DATABASES:uint = 1;
+
+ private var socket:SocketHelper;
+
+ private var dbShortList:Boolean;
+
+ public function Dict()
+ {
+ this.socket = new SocketHelper();
+ this.socket.addEventListener(Event.CONNECT, connected);
+ this.socket.addEventListener(Event.CLOSE, disconnected);
+ this.socket.addEventListener(SocketHelper.COMPLETE_RESPONSE, incomingData);
+ this.socket.addEventListener(IOErrorEvent.IO_ERROR, ioError);
+ this.socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityError);
+ }
+
+ public function connect(server:String, port:uint = 2628):void
+ {
+ if (this.socket.connected)
+ {
+ this.socket.close();
+ }
+ this.socket.connect(server, port);
+ }
+
+ public function connectThroughProxy(proxyServer:String,
+ proxyPort:int,
+ server:String,
+ port:uint = 2628):void
+ {
+ if (this.socket.connected)
+ {
+ this.socket.close();
+ }
+ this.socket.setProxyInfo(proxyServer, proxyPort);
+ this.socket.connect(server, port);
+ }
+
+ public function disconnect():void
+ {
+ this.socket.close();
+ this.disconnected(null);
+ }
+
+ public function getServers():void
+ {
+ var http:HTTPService = new HTTPService();
+ http.url = "http://luetzschena-stahmeln.de/dictd/xmllist.php";
+ http.addEventListener(ResultEvent.RESULT, incomingServerXML);
+ http.addEventListener(FaultEvent.FAULT, httpError);
+ http.resultFormat = HTTPService.RESULT_FORMAT_E4X;
+ http.send();
+ }
+
+ public function getDatabases(shortList:Boolean=true):void
+ {
+ this.dbShortList = shortList;
+ this.socket.writeUTFBytes("show db\r\n");
+ this.socket.flush();
+ }
+
+ public function getMatchStrategies():void
+ {
+ this.socket.writeUTFBytes("show strat\r\n");
+ this.socket.flush();
+ }
+
+ public function match(database:String, term:String, scope:String="prefix"):void
+ {
+ this.socket.writeUTFBytes("match " + database + " " + scope + " \"" + term + "\"\r\n");
+ this.socket.flush();
+ }
+
+ public function define(database:String, term:String):void
+ {
+ this.socket.writeUTFBytes("define " + database + " \"" + term + "\"\r\n");
+ this.socket.flush();
+ }
+
+ public function lookup(term:String, scope:uint):void
+ {
+ var flag:String;
+ if (scope == Dict.ALL_DATABASES)
+ {
+ flag = "*";
+ }
+ else if (scope == Dict.FIRST_MATCH)
+ {
+ flag = "!";
+ }
+ this.socket.writeUTFBytes("define " + flag + " \"" + term + "\"\r\n");
+ this.socket.flush();
+ }
+
+ //// Private functions ////
+
+ private function connected(event:Event):void
+ {
+ // Wait to dispatch an event until we get the 220 response.
+ }
+
+ private function disconnected(event:Event):void
+ {
+ dispatchEvent(new DisconnectedEvent());
+ }
+
+ private function incomingServerXML(event:ResultEvent):void
+ {
+ var dictd:Namespace = new Namespace("http://www.luetzschena-stahmeln.de/dictd/");
+ var result:XML = event.result as XML;
+ var server:String, description:String;
+ var servers:Array = new Array();
+ for each (var serverNode:XML in result.dictd::server)
+ {
+ server = serverNode.dictd::dictdurl;
+ description = serverNode.dictd::description;
+ if (StringUtil.trim(server).length != 0 &&
+ StringUtil.trim(description).length != 0)
+ {
+ var dServer:DictionaryServer = new DictionaryServer();
+ dServer.server = server.replace("dict://", "");
+ dServer.description = description;
+ servers.push(dServer);
+ }
+ }
+ var dEvent:DictionaryServerEvent = new DictionaryServerEvent();
+ dEvent.servers = servers;
+ dispatchEvent(dEvent);
+ }
+
+ private function incomingData(event:CompleteResponseEvent):void
+ {
+ var rawResponse:String = event.response;
+ var response:Response = this.parseRawResponse(rawResponse);
+ var responseCode:uint = response.code;
+ if (responseCode == 552) // no matches
+ {
+ throwNoMatchEvent(response);
+ }
+ else if (responseCode >= 400 && responseCode <= 599) // error
+ {
+ throwErrorEvent(response);
+ }
+ else if (responseCode == 220) // successful connection
+ {
+ dispatchEvent(new ConnectedEvent());
+ }
+ else if (responseCode == 110) // databases are being returned
+ {
+ throwDatabasesEvent(response);
+ }
+ else if (responseCode == 111) // matches strategies
+ {
+ throwMatchStrategiesEvent(response);
+ }
+ else if (responseCode == 152) // matches
+ {
+ throwMatchEvent(response);
+ }
+ else if (responseCode == 150)
+ {
+ throwDefinitionHeaderEvent(response);
+ }
+ else if (responseCode == 151)
+ {
+ throwDefinitionEvent(response);
+ }
+ }
+
+ private function ioError(event:IOErrorEvent):void
+ {
+ dispatchEvent(event);
+ }
+
+ private function httpError(event:FaultEvent):void
+ {
+ trace("httpError!");
+ }
+
+ private function securityError(event:SecurityErrorEvent):void
+ {
+ trace("security error!");
+ trace(event.text);
+ }
+
+ // Dispatch new events.
+
+ private function throwDatabasesEvent(response:Response):void
+ {
+ var databases:Array = new Array();
+ var responseArray:Array = response.body.split("\r\n");
+ for each (var line:String in responseArray)
+ {
+ var name:String = line.substring(0, line.indexOf(" "));
+ if (name == "--exit--")
+ {
+ if (this.dbShortList)
+ {
+ break;
+ }
+ continue;
+ }
+ var description:String = line.substring(line.indexOf(" ")+1, line.length).replace(/\"/g,"");
+ databases.push(new Database(name, description));
+ }
+ var event:DatabaseEvent = new DatabaseEvent();
+ event.databases = databases;
+ dispatchEvent(event);
+ }
+
+ private function throwMatchStrategiesEvent(response:Response):void
+ {
+ var strategies:Array = new Array();
+ var responseArray:Array = response.body.split("\r\n");
+ for each (var line:String in responseArray)
+ {
+ var name:String = line.substring(0, line.indexOf(" "));
+ var description:String = line.substring(line.indexOf(" ")+1, line.length).replace(/\"/g,"");
+ strategies.push(new MatchStrategy(name, description));
+ }
+ var event:MatchStrategiesEvent = new MatchStrategiesEvent();
+ event.strategies = strategies;
+ dispatchEvent(event);
+ }
+
+ private function throwMatchEvent(response:Response):void
+ {
+ var matches:Array = new Array();
+ var responseArray:Array = response.body.split("\r\n");
+ for each (var line:String in responseArray)
+ {
+ var match:String = line.substring(line.indexOf(" ")+1, line.length).replace(/\"/g,"");
+ matches.push(match);
+ }
+ var event:MatchEvent = new MatchEvent();
+ event.matches = matches;
+ dispatchEvent(event);
+ }
+
+ private function throwErrorEvent(response:Response):void
+ {
+ var event:ErrorEvent = new ErrorEvent();
+ event.code = response.code;
+ event.message = response.headerText;
+ dispatchEvent(event);
+ }
+
+ private function throwNoMatchEvent(response:Response):void
+ {
+ dispatchEvent(new NoMatchEvent());
+ }
+
+ private function throwDefinitionHeaderEvent(response:Response):void
+ {
+ var event:DefinitionHeaderEvent = new DefinitionHeaderEvent();
+ event.definitionCount = uint(response.headerText.substring(0, response.headerText.indexOf(" ")));
+ dispatchEvent(event);
+ }
+
+ private function throwDefinitionEvent(response:Response):void
+ {
+ var event:DefinitionEvent = new DefinitionEvent();
+ var def:Definition = new Definition();
+ var headerText:String = response.headerText;
+ var tokens:Array = headerText.match(/"[^"]+"/g);
+ def.term = String(tokens[0]).replace(/"/g, "");
+ def.database = String(tokens[1]).replace(/"/g, "");
+ def.definition = response.body;
+ event.definition = def;
+ dispatchEvent(event);
+ }
+
+ private function parseRawResponse(rawResponse:String):Response
+ {
+ var response:Response = new Response();
+ var fullHeader:String;
+ if (rawResponse.indexOf("\r\n") != -1)
+ {
+ fullHeader = rawResponse.substring(0, rawResponse.indexOf("\r\n"));
+ }
+ else
+ {
+ fullHeader = rawResponse;
+ }
+ var responseCodeMatch:Array = fullHeader.match(/^\d{3}/);
+ response.code = uint(responseCodeMatch[0]);
+ response.headerText = fullHeader.substring(fullHeader.indexOf(" ")+1, fullHeader.length);
+ var body:String = rawResponse.substring(rawResponse.indexOf("\r\n")+2, rawResponse.length);
+ body = body.replace(/\r\n\.\./, "\r\n.");
+ response.body = body;
+ return response;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/DictionaryServer.as b/vendors/uploadify/com/adobe/protocols/dict/DictionaryServer.as
new file mode 100644
index 000000000..422b603e0
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/DictionaryServer.as
@@ -0,0 +1,28 @@
+package com.adobe.protocols.dict
+{
+ public class DictionaryServer
+ {
+ private var _server:String;
+ private var _description:String;
+
+ public function set server(server:String):void
+ {
+ this._server = server;
+ }
+
+ public function get server():String
+ {
+ return this._server;
+ }
+
+ public function set description(description:String):void
+ {
+ this._description = description;
+ }
+
+ public function get description():String
+ {
+ return this._description;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/MatchStrategy.as b/vendors/uploadify/com/adobe/protocols/dict/MatchStrategy.as
new file mode 100644
index 000000000..1e17da32e
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/MatchStrategy.as
@@ -0,0 +1,34 @@
+package com.adobe.protocols.dict
+{
+ public class MatchStrategy
+ {
+ private var _name:String;
+ private var _description:String;
+
+ public function MatchStrategy(name:String, description:String)
+ {
+ this._name = name;
+ this._description = description;
+ }
+
+ public function set name(name:String):void
+ {
+ this._name = name;
+ }
+
+ public function get name():String
+ {
+ return this._name;
+ }
+
+ public function set description(description:String):void
+ {
+ this._description = description;
+ }
+
+ public function get description():String
+ {
+ return this._description;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/Response.as b/vendors/uploadify/com/adobe/protocols/dict/Response.as
new file mode 100644
index 000000000..619a8e903
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/Response.as
@@ -0,0 +1,39 @@
+package com.adobe.protocols.dict
+{
+ public class Response
+ {
+ private var _code:uint;
+ private var _headerText:String;
+ private var _body:String;
+
+ public function set code(code:uint):void
+ {
+ this._code = code;
+ }
+
+ public function set headerText(headerText:String):void
+ {
+ this._headerText = headerText;
+ }
+
+ public function set body(body:String):void
+ {
+ this._body = body;
+ }
+
+ public function get code():uint
+ {
+ return this._code;
+ }
+
+ public function get headerText():String
+ {
+ return this._headerText;
+ }
+
+ public function get body():String
+ {
+ return this._body;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/events/ConnectedEvent.as b/vendors/uploadify/com/adobe/protocols/dict/events/ConnectedEvent.as
new file mode 100644
index 000000000..c4a414521
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/events/ConnectedEvent.as
@@ -0,0 +1,14 @@
+package com.adobe.protocols.dict.events
+{
+ import flash.events.Event;
+ import com.adobe.protocols.dict.Dict;
+
+ public class ConnectedEvent extends Event
+ {
+ public function ConnectedEvent()
+ {
+ super(Dict.CONNECTED);
+ }
+
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/events/DatabaseEvent.as b/vendors/uploadify/com/adobe/protocols/dict/events/DatabaseEvent.as
new file mode 100644
index 000000000..fdd2cc1eb
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/events/DatabaseEvent.as
@@ -0,0 +1,26 @@
+package com.adobe.protocols.dict.events
+{
+ import flash.events.Event;
+ import com.adobe.protocols.dict.Dict;
+
+ public class DatabaseEvent
+ extends Event
+ {
+ private var _databases:Array;
+
+ public function DatabaseEvent()
+ {
+ super(Dict.DATABASES);
+ }
+
+ public function set databases(databases:Array):void
+ {
+ this._databases = databases;
+ }
+
+ public function get databases():Array
+ {
+ return this._databases;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/events/DefinitionEvent.as b/vendors/uploadify/com/adobe/protocols/dict/events/DefinitionEvent.as
new file mode 100644
index 000000000..8107173e6
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/events/DefinitionEvent.as
@@ -0,0 +1,27 @@
+package com.adobe.protocols.dict.events
+{
+ import flash.events.Event;
+ import com.adobe.protocols.dict.Dict;
+ import com.adobe.protocols.dict.Definition;
+
+ public class DefinitionEvent
+ extends Event
+ {
+ private var _definition:Definition;
+
+ public function DefinitionEvent()
+ {
+ super(Dict.DEFINITION);
+ }
+
+ public function set definition(definition:Definition):void
+ {
+ this._definition = definition;
+ }
+
+ public function get definition():Definition
+ {
+ return this._definition;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/events/DefinitionHeaderEvent.as b/vendors/uploadify/com/adobe/protocols/dict/events/DefinitionHeaderEvent.as
new file mode 100644
index 000000000..e77c402ae
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/events/DefinitionHeaderEvent.as
@@ -0,0 +1,26 @@
+package com.adobe.protocols.dict.events
+{
+ import flash.events.Event;
+ import com.adobe.protocols.dict.Dict;
+
+ public class DefinitionHeaderEvent
+ extends Event
+ {
+ private var _definitionCount:uint;
+
+ public function DefinitionHeaderEvent()
+ {
+ super(Dict.DEFINITION_HEADER);
+ }
+
+ public function set definitionCount(definitionCount:uint):void
+ {
+ this._definitionCount = definitionCount;
+ }
+
+ public function get definitionCount():uint
+ {
+ return this._definitionCount;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/events/DictionaryServerEvent.as b/vendors/uploadify/com/adobe/protocols/dict/events/DictionaryServerEvent.as
new file mode 100644
index 000000000..9b406e95c
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/events/DictionaryServerEvent.as
@@ -0,0 +1,26 @@
+package com.adobe.protocols.dict.events
+{
+ import flash.events.Event;
+ import com.adobe.protocols.dict.Dict;
+
+ public class DictionaryServerEvent
+ extends Event
+ {
+ private var _servers:Array;
+
+ public function DictionaryServerEvent()
+ {
+ super(Dict.SERVERS);
+ }
+
+ public function set servers(servers:Array):void
+ {
+ this._servers = servers;
+ }
+
+ public function get servers():Array
+ {
+ return this._servers;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/events/DisconnectedEvent.as b/vendors/uploadify/com/adobe/protocols/dict/events/DisconnectedEvent.as
new file mode 100644
index 000000000..485b3edac
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/events/DisconnectedEvent.as
@@ -0,0 +1,14 @@
+package com.adobe.protocols.dict.events
+{
+ import flash.events.Event;
+ import com.adobe.protocols.dict.Dict;
+
+ public class DisconnectedEvent extends Event
+ {
+ public function DisconnectedEvent()
+ {
+ super(Dict.DISCONNECTED);
+ }
+
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/events/ErrorEvent.as b/vendors/uploadify/com/adobe/protocols/dict/events/ErrorEvent.as
new file mode 100644
index 000000000..9e5fc7ad2
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/events/ErrorEvent.as
@@ -0,0 +1,37 @@
+package com.adobe.protocols.dict.events
+{
+ import flash.events.Event;
+ import com.adobe.protocols.dict.Dict;
+
+ public class ErrorEvent
+ extends Event
+ {
+ private var _code:uint;
+ private var _message:String;
+
+ public function ErrorEvent()
+ {
+ super(Dict.ERROR);
+ }
+
+ public function set code(code:uint):void
+ {
+ this._code = code;
+ }
+
+ public function set message(message:String):void
+ {
+ this._message = message;
+ }
+
+ public function get code():uint
+ {
+ return this._code;
+ }
+
+ public function get message():String
+ {
+ return this._message;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/events/MatchEvent.as b/vendors/uploadify/com/adobe/protocols/dict/events/MatchEvent.as
new file mode 100644
index 000000000..65b868851
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/events/MatchEvent.as
@@ -0,0 +1,26 @@
+package com.adobe.protocols.dict.events
+{
+ import flash.events.Event;
+ import com.adobe.protocols.dict.Dict;
+
+ public class MatchEvent
+ extends Event
+ {
+ private var _matches:Array;
+
+ public function MatchEvent()
+ {
+ super(Dict.MATCH);
+ }
+
+ public function set matches(matches:Array):void
+ {
+ this._matches = matches;
+ }
+
+ public function get matches():Array
+ {
+ return this._matches;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/events/MatchStrategiesEvent.as b/vendors/uploadify/com/adobe/protocols/dict/events/MatchStrategiesEvent.as
new file mode 100644
index 000000000..75b76f889
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/events/MatchStrategiesEvent.as
@@ -0,0 +1,26 @@
+package com.adobe.protocols.dict.events
+{
+ import flash.events.Event;
+ import com.adobe.protocols.dict.Dict;
+
+ public class MatchStrategiesEvent
+ extends Event
+ {
+ private var _strategies:Array;
+
+ public function MatchStrategiesEvent()
+ {
+ super(Dict.MATCH_STRATEGIES);
+ }
+
+ public function set strategies(strategies:Array):void
+ {
+ this._strategies = strategies;
+ }
+
+ public function get strategies():Array
+ {
+ return this._strategies;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/events/NoMatchEvent.as b/vendors/uploadify/com/adobe/protocols/dict/events/NoMatchEvent.as
new file mode 100644
index 000000000..894d1ae2c
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/events/NoMatchEvent.as
@@ -0,0 +1,14 @@
+package com.adobe.protocols.dict.events
+{
+ import flash.events.Event;
+ import com.adobe.protocols.dict.Dict;
+
+ public class NoMatchEvent
+ extends Event
+ {
+ public function NoMatchEvent()
+ {
+ super(Dict.NO_MATCH);
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/util/CompleteResponseEvent.as b/vendors/uploadify/com/adobe/protocols/dict/util/CompleteResponseEvent.as
new file mode 100644
index 000000000..fc552f1b3
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/util/CompleteResponseEvent.as
@@ -0,0 +1,25 @@
+package com.adobe.protocols.dict.util
+{
+ import flash.events.Event;
+
+ public class CompleteResponseEvent
+ extends Event
+ {
+ private var _response:String;
+
+ public function CompleteResponseEvent()
+ {
+ super(SocketHelper.COMPLETE_RESPONSE);
+ }
+
+ public function set response(response:String):void
+ {
+ this._response = response;
+ }
+
+ public function get response():String
+ {
+ return this._response;
+ }
+ }
+} \ No newline at end of file
diff --git a/vendors/uploadify/com/adobe/protocols/dict/util/SocketHelper.as b/vendors/uploadify/com/adobe/protocols/dict/util/SocketHelper.as
new file mode 100644
index 000000000..feb494b31
--- /dev/null
+++ b/vendors/uploadify/com/adobe/protocols/dict/util/SocketHelper.as
@@ -0,0 +1,49 @@
+package com.adobe.protocols.dict.util
+{
+ import com.adobe.net.proxies.RFC2817Socket;
+ import flash.events.ProgressEvent;
+
+ public class SocketHelper
+ extends RFC2817Socket
+ {
+ private var terminator:String = "\r\n.\r\n";
+ private var buffer:String;
+ public static var COMPLETE_RESPONSE:String = "completeResponse";
+
+ public function SocketHelper()
+ {
+ super();
+ buffer = new String();
+ addEventListener(ProgressEvent.SOCKET_DATA, incomingData);
+ }
+
+ private function incomingData(event:ProgressEvent):void
+ {
+ buffer += readUTFBytes(bytesAvailable);
+ buffer = buffer.replace(/250[^\r\n]+\r\n/, ""); // Get rid of all 250s. Don't need them.
+ var codeStr:String = buffer.substring(0, 3);
+ if (!isNaN(parseInt(codeStr)))
+ {
+ var code:uint = uint(codeStr);
+ if (code == 150 || code >= 200)
+ {
+ buffer = buffer.replace("\r\n", this.terminator);
+ }
+ }
+
+ while (buffer.indexOf(this.terminator) != -1)
+ {
+ var chunk:String = buffer.substring(0, buffer.indexOf(this.terminator));
+ buffer = buffer.substring(chunk.length + this.terminator.length, buffer.length);
+ throwResponseEvent(chunk);
+ }
+ }
+
+ private function throwResponseEvent(response:String):void
+ {
+ var responseEvent:CompleteResponseEvent = new CompleteResponseEvent();
+ responseEvent.response = response;
+ dispatchEvent(responseEvent);
+ }
+ }
+} \ No newline at end of file