Показать сообщение отдельно
Старый 15.05.2011, 14:16
Кошколов вне форума Посмотреть профиль Отправить личное сообщение для Кошколов Найти все сообщения от Кошколов
  № 22  
Ответить с цитированием
Кошколов

Регистрация: 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;
	}
}
А как пользоваться этими скриптами?