
15.05.2011, 14:16
|
|
Регистрация: May 2011
Сообщений: 5
|
Цитата:
Сообщение от qazwsx
 Код AS1/AS2:
import utils.Timer;
class MXMLSocket extends LoadVars
{
public var onError:Function;
public var onRecive:Function;
private var query:String = '';
private var server:String;
private var timeOutTimer:Timer;
private var key:String = '';
public function MXMLSocket(_server:String, timeOut:Number )
{
this.server = _server;
timeOutTimer = undefined;
if ( timeOut > 0 )
initTimeOutTimer( timeOut );
}
private function onData(data:String):Void
{
this.stopTimeOutTimer();
if (data == undefined)
{
onErrorHandler("mxml server dont response on " + this.server );
return;
}
onRecive(data, key);
}
public function send(str:String):Void
{
var query:LoadVars = new LoadVars();
query.query = str;
this.postData(query);
}
public function sendObj(obj:Object):Void
{
var sendObject:LoadVars = new LoadVars();
for (var vr:String in obj)
{
sendObject[vr] = obj[vr];
}
postData( sendObject );
}
private function postData( sendObject:LoadVars ):Void
{
sendObject.sendAndLoad(server, this, 'POST');
if ( this.isTimeOutEnable() )
{
this.startTimeOutChecker();
}
}
private function onErrorHandler(reason:String):Void
{
this.stopTimeOutTimer();
this.onError( reason );
}
/// --- timeout
private function initTimeOutTimer( timeOut:Number ):Void
{
timeOutTimer = new Timer( timeOut , false );
timeOutTimer.addEventListener( Timer.TICK_EVENT , Delegate.create(this, onTimeOutHandler) );
}
private function onTimeOutHandler(event:Object):Void
{
//this.stopTimeOutTimer();
this.onErrorHandler( "mxml server "+ this.server +" dont response, time out " + this.timeOutTimer.durationSeconds );
}
private function isTimeOutEnable():Boolean
{
return this.timeOutTimer != undefined;
}
private function startTimeOutChecker():Void
{
this.timeOutTimer.turnOn();
}
private function resetTimeOutTimer():Void
{
this.timeOutTimer.reset();
}
private function stopTimeOutTimer():Void
{
this.timeOutTimer.turnOff();
}
/// timeout ---
}
 Код AS1/AS2:
import MD5;
import MXMLSocket;
class BLAHClass
{
private var server:String = 'http://api.vkontakte.ru/api.php?';
private var api_id:String = '';
private var viewer_id:String = '';
private var secret:String = '';
private var uid:String = '';
private var sock:MXMLSocket;
static var GET:String = 'getVariable';
static var SET:String = 'putVariable';
public var onData:Function;
public function BLAHClass(_api_id:String, _viewer_id:String, _secret:String, userID:String)
{
uid = userID;
api_id = _api_id;
viewer_id = _viewer_id;
secret = _secret;
sock = new MXMLSocket();
sock.onRecive = recive;
sock.onError = error;
}
private function recive(data:String):Void
{
//////////////////
}
private function error(reason:String):Void
{
//////////////
}
public function setID(str:String, key:String)
{
send(key,SET, str);
}
public function getID(key:String):Void
{
send(key, GET);
}
private function send(key:String, met:String, value:String):Void
{
var obj:Object = {api_id:String, method:String, key:key};
var method:String = met;
if (value != undefined)
{
obj.value = value;
}
obj.user_id = _root.user_id;
obj.api_id = api_id;
obj.method = method;
//obj.test_mode = '1';
var sig:String = generateSig(obj);
obj.sig = sig;
sock.sendObj(obj);
}
private function generateSig(obj:Object):String
{
var sig:String = '';
var params:Array = [];
for (var vr:String in obj)
{
params.push(vr+'='+obj[vr]);
}
params = params.sort();
for (var i:Number = 0; i < params.length; i++)
{
sig+=params[i];
}
sig = viewer_id + sig + secret;
//trace(sig);
sig = MD5.encrypt(sig);
return sig;
}
}
|
А как пользоваться этими скриптами?
|