« Macでのas3開発環境 | メイン | Stageのプリロード »

2007年07月20日

as2でのBASIC認証クラス

del.icio.usのAPIを叩く場合、BASIC認証を求められる。asでは、標準ではBASIC認証を備えていないので、いろいろと調べてみて、as2の自作クラスをつくってみたので公開。ライセンスは、適当ですが、GPL v2 で。

as2でのBASIC認証に関しては、以下を参考にした。

以下がソース。なお、実行には、

が必要です。

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