drupal amfphp helper class

  1. package {
  2.        
  3.         import flash.net.Responder;
  4.        
  5.         /*
  6.          * Drupal class for AMFPHP connections to Drupal services
  7.          */
  8.         public class Drupal {
  9.                
  10.                 public var gatewayUrl:String = "";
  11.                 public var apiKey:String = "";
  12.                 public var sessionId:String = "";
  13.  
  14.                 private var rs:RemotingService;
  15.  
  16.                 private var callback:Function;
  17.                
  18.                 /*
  19.                  * Drupal.connect()
  20.                  */
  21.                 public function connect(onSuccess:Function):void {
  22.                         callback = onSuccess;
  23.                         this.service(onConnect, onFault, "system.connect");
  24.                 }
  25.                
  26.                 /*
  27.                  * Drupal.service(onSuccess, onFault, command, ... args)
  28.                  */
  29.                 public function service(onSuccess, onFault, command, ... args):Boolean {
  30.                         if (gatewayUrl.length > 0) {
  31.                                 rs = new RemotingService(gatewayUrl);
  32.                         }
  33.                         else {
  34.                                 return false;
  35.                         }
  36.  
  37.                         var responder:Responder = new Responder(onSuccess, onFault);
  38.                        
  39.                         if (sessionId.length > 0) {
  40.                                 args.unshift(sessionId);
  41.                         }
  42.                         if (apiKey.length > 0) {
  43.                                 args.unshift(apiKey);
  44.                         }
  45.                        
  46.                         if (args.length==1) {
  47.                                 rs.call(command, responder, args[0]);
  48.                         }
  49.                         else if (args.length==2) {
  50.                                 rs.call(command, responder, args[0], args[1]);
  51.                         }
  52.                         else if (args.length==3) {
  53.                                 rs.call(command, responder, args[0], args[1], args[2]);
  54.                         }
  55.                         else if (args.length==4) {
  56.                                 rs.call(command, responder, args[0], args[1], args[2], args[3]);
  57.                         }
  58.                         else if (args.length==5) {
  59.                                 rs.call(command, responder, args[0], args[1], args[2], args[3], args[4]);
  60.                         }
  61.                         else if (args.length==8) {
  62.                                 rs.call(command, responder, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
  63.                         }
  64.                        
  65.                         return true;
  66.                 }
  67.                
  68.                 /*
  69.                  * private functions
  70.                  */
  71.                 private function onConnect(result:Object):void {
  72.                         sessionId = result.sessid;
  73.                         if (callback is Function) {
  74.                                 callback();
  75.                         }
  76.                 }
  77.  
  78.                  private function onFault(error:Object):void {
  79.                         trace('ERROR:drupal.Drupal:netconnection:');
  80.                         for each (var item in error) {
  81.                                 trace(item);
  82.                         }
  83.                 }
  84.  
  85.         }
  86.  
  87. }
  88.  
  89.         /*
  90.          * RemotingService for AMFPHP connection in AS3
  91.          */
  92.         import flash.net.NetConnection;
  93.     import flash.net.ObjectEncoding;
  94.          
  95.          class RemotingService extends NetConnection {
  96.        
  97.                 function RemotingService(url:String) {
  98.                         // Set AMF version for AMFPHP
  99.                         objectEncoding = ObjectEncoding.AMF3;
  100.                         // Connect to gateway
  101.                         connect(url);
  102.                 }
  103.  
  104.         }