home *** CD-ROM | disk | FTP | other *** search
- package air.net
- {
- import flash.errors.IOError;
- import flash.events.Event;
- import flash.events.HTTPStatusEvent;
- import flash.events.IOErrorEvent;
- import flash.events.SecurityErrorEvent;
- import flash.net.URLRequest;
- import flash.net.URLStream;
-
- public class URLMonitor extends ServiceMonitor
- {
- private static const kNullPointerError:uint = 2007;
-
- private static const _initStatusCodes:Array = [200,202,204,205,206];
-
- private var _acceptableStatusCodesOriginal:Array;
-
- private var _urlRequestOriginal:URLRequest;
-
- private var _urlStream:URLStream;
-
- private var _acceptableStatusCodes:Array;
-
- private var _urlRequest:URLRequest;
-
- public function URLMonitor(param1:URLRequest, param2:Array = null)
- {
- var cool:Function = null;
- var uncool:Function = null;
- var urlRequest:URLRequest = param1;
- var acceptableStatusCodes:Array = param2;
- _acceptableStatusCodesOriginal = _initStatusCodes.concat();
- _acceptableStatusCodes = _acceptableStatusCodesOriginal.concat();
- _urlStream = new URLStream();
- cool = function(param1:HTTPStatusEvent):void
- {
- var event:HTTPStatusEvent = param1;
- available = _acceptableStatusCodes.indexOf(Number(event.status)) >= 0;
- try
- {
- _urlStream.close();
- }
- catch(e:IOError)
- {
- }
- };
- uncool = function(param1:Event):void
- {
- var event:Event = param1;
- available = false;
- try
- {
- _urlStream.close();
- }
- catch(e:IOError)
- {
- }
- };
- super();
- if(!urlRequest)
- {
- Error.throwError(ArgumentError,kNullPointerError);
- }
- _urlRequestOriginal = urlRequest;
- _urlRequest = new URLRequest(urlRequest.url);
- _urlRequest.method = urlRequest.method;
- _urlRequest.contentType = urlRequest.contentType;
- _urlRequest.data = urlRequest.data;
- _urlRequest.followRedirects = urlRequest.followRedirects;
- _urlRequest.authenticate = urlRequest.authenticate;
- _urlRequest.cacheResponse = urlRequest.cacheResponse;
- _urlRequest.manageCookies = urlRequest.manageCookies;
- _urlRequest.requestHeaders = urlRequest.requestHeaders.concat();
- _urlRequest.userAgent = urlRequest.userAgent;
- _urlRequest.useCache = false;
- if(acceptableStatusCodes)
- {
- this.acceptableStatusCodes = acceptableStatusCodes;
- }
- _urlStream.addEventListener(HTTPStatusEvent.HTTP_RESPONSE_STATUS,cool);
- _urlStream.addEventListener(SecurityErrorEvent.SECURITY_ERROR,uncool);
- _urlStream.addEventListener(IOErrorEvent.IO_ERROR,uncool);
- }
-
- public function get urlRequest() : URLRequest
- {
- return _urlRequestOriginal;
- }
-
- override protected function checkStatus() : void
- {
- _urlStream.load(_urlRequest);
- }
-
- public function set acceptableStatusCodes(param1:Array) : void
- {
- if(param1 == null)
- {
- Error.throwError(ArgumentError,kNullPointerError);
- }
- _acceptableStatusCodesOriginal = param1;
- _acceptableStatusCodes = param1.concat();
- }
-
- override public function toString() : String
- {
- if(!_urlRequest)
- {
- return "[URLMonitor available=\"" + available + "\"]";
- }
- return "[URLMonitor method=\"" + _urlRequest.method + "\" url=\"" + _urlRequest.url + "\" available=\"" + available + "\"]";
- }
-
- public function get acceptableStatusCodes() : Array
- {
- return _acceptableStatusCodesOriginal;
- }
- }
- }
-
-