/* * package drupal.* * ActionScript3 classes for AMFPHP connection with Drupal services * * by joe turgeon (http://arithmetric.com) * with third ave design (http://thirdavedesign.com) * licensed under GPL version 3 * revision 17/december/2007 */ package drupal { import flash.net.Responder; /* * Class for AMFPHP connections to Drupal services */ public class Drupal { public var gatewayUrl:String = ""; public var apiKey:String = ""; public var sessionId:String = ""; private var rs:RemotingService; private var callback:Function; /* * Drupal.connect() */ public function connect(onSuccess:Function):void { callback = onSuccess; this.service(onConnect, onFault, "system.connect"); } /* * Drupal.service(onSuccess, onFault, command, ... args) */ public function service(onSuccess, onFault, command, ... args):Boolean { if (gatewayUrl.length > 0) { rs = new RemotingService(gatewayUrl); } else { return false; } var responder:Responder = new Responder(onSuccess, onFault); if (sessionId.length > 0) { args.unshift(sessionId); } if (apiKey.length > 0) { args.unshift(apiKey); } if (args.length==1) { rs.call(command, responder, args[0]); } else if (args.length==2) { rs.call(command, responder, args[0], args[1]); } else if (args.length==3) { rs.call(command, responder, args[0], args[1], args[2]); } else if (args.length==4) { rs.call(command, responder, args[0], args[1], args[2], args[3]); } else if (args.length==5) { rs.call(command, responder, args[0], args[1], args[2], args[3], args[4]); } else if (args.length==6) { rs.call(command, responder, args[0], args[1], args[2], args[3], args[4], args[5]); } else if (args.length==7) { rs.call(command, responder, args[0], args[1], args[2], args[3], args[4], args[5], args[6]); } else if (args.length==8) { rs.call(command, responder, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]); } return true; } /* * private functions */ private function onConnect(result:Object):void { sessionId = result.sessid; if (callback is Function) { callback(); } } private function onFault(error:Object):void { trace('ERROR:drupal.Drupal:netconnection:'); for each (var item in error) { trace(item); } } } } /* * Class for AMFPHP connection in AS3 */ import flash.net.NetConnection; import flash.net.ObjectEncoding; class RemotingService extends NetConnection { function RemotingService(url:String) { // Set AMF: AMFPHP version 1.9 beta supports AMF3 objectEncoding = ObjectEncoding.AMF3; // Connect to gateway connect(url); } }