« Macでのas3開発環境 | メイン | Stageのプリロード »
2007年07月20日
as2でのBASIC認証クラス
del.icio.usのAPIを叩く場合、BASIC認証を求められる。asでは、標準ではBASIC認証を備えていないので、いろいろと調べてみて、as2の自作クラスをつくってみたので公開。ライセンスは、適当ですが、GPL v2 で。
as2でのBASIC認証に関しては、以下を参考にした。
以下がソース。なお、実行には、
- com.bigspaceship.utils.Out
- Base64.as
import mx.events.EventDispatcher;
import com.bigspaceship.utils.Out;
import mx.utils.Delegate;
class net.kalium.net.auth.BasicAuth {
private var _classname:String = "BasicAuth";
var addEventListener:Function;
var removeEventListener:Function;
private var dispatchEvent:Function;
private var _loadVar:LoadVars; //REST用
private var _id:String; //BASIC認証のID
private var _password:String; //BASIC認証用のPASSWORD
private var _resultXML:XML; //REST結果
public function set id( id:String ):Void{
_id = id;
}
public function get id():String{
return _id;
}
public function set password( password:String):Void{
_password = password;
}
public function get password():String{
return _password;
}
public function get result():XML{
return _resultXML;
}
/**
*
*
* @param id BASIC認証のID
* @param password BASIC認証用のパスワード
*/
public function BasicAuth( id:String, password:String ) {
EventDispatcher.initialize(this);
Out.debug(this, "consturactor" );
_id = id;
_password = password;
_resultXML = new XML();
}
/**
* REST取得
*
* @param url RESTのURL
*/
public function get( url:String ):Void{
var basic:String = _id + ":" + _password;
var auth:String = Base64.Encode(basic); //Base64にエンコード
_resultXML = new XML();
_resultXML.onLoad = Delegate.create( this, onResultLoad );
_loadVar = new LoadVars();
_loadVar.addRequestHeader("Authorization", "Basic " + auth); //BASIC認証ヘッダを付加
_loadVar.sendAndLoad( url,_resultXML, "post" ); //POST
}
/**
* 結果取得時の処理
*
* @param success 成功フラッグ
*/
private function onResultLoad(success:Boolean):Void{
if(success){
dispatchOnData();
}else{
dispatchOnError();
}
}
/**
* 取得成功のイベント
*/
private function dispatchOnData():Void{
Out.debug(this, "onData" );
dispatchEvent( {type:"onData", result:_resultXML, dispatchTime:new Date()} );
}
/**
* 取得失敗のイベント
*/
private function dispatchOnError():Void{
Out.debug(this, "onError" );
dispatchEvent( {type:"onError", result:_resultXML, dispatchTime:new Date()} );
}
}
投稿者 araken : 2007年07月20日 12:05
トラックバック
このエントリーのトラックバックURL:
http://www.kalium.net/cgi-bin/mt/mt-tb.cgi/1675