1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | package com.rblab.framework.net { import flash.events.Event; import flash.events.EventDispatcher; import flash.events.IOErrorEvent; import flash.net.URLLoader; import flash.net.URLRequest; /** * Dispatched when the instance has successfully shortened an url. * @eventType flash.events.COMPLETE */ [Event(name="complete", type="flash.events.Event")] /** * Dispatched when the instance has encountered an error while trying to encode your url. * @eventType flash.events.IOErrorEvent.IO_ERROR */ [Event(name="ioError", type="flash.events.IOErrorEvent")] /** * URL Shortener Class using <a href="http://is.gd/" target="_blank">http://is.gd/</a> public service * @author Sandro Ducceschi [swfjunkie.com, Switzerland] */ public class URLShortener extends EventDispatcher { //-------------------------------------------------------------------------- // // Class variables // //-------------------------------------------------------------------------- private static const IS_GD_URL:String = "http://is.gd/api.php?longurl="; //-------------------------------------------------------------------------- // // Initialization // //-------------------------------------------------------------------------- /** * Creates a new URLShortener Instance */ public function URLShortener() { init(); } /** * @private * Initializes the instance. */ private function init():void { urlLoader = new URLLoader(); urlRequest = new URLRequest(); urlLoader.addEventListener(Event.COMPLETE,handleComplete); urlLoader.addEventListener(IOErrorEvent.IO_ERROR,handleError); } //-------------------------------------------------------------------------- // // Variables // //-------------------------------------------------------------------------- private var urlLoader:URLLoader; private var urlRequest:URLRequest; //-------------------------------------------------------------------------- // // Properties // //-------------------------------------------------------------------------- /** @private */ private var _url:String; /** * The Shortened URL */ public function get url():String { return _url; } //-------------------------------------------------------------------------- // // API // //-------------------------------------------------------------------------- /** * Shortens the given URL * @param url Long URL that should be shortened */ public function shorten(url:String):void { _url = null; urlRequest.url = IS_GD_URL + url; urlLoader.load(urlRequest); } /** * Completely destroys the instance and frees all objects for the garbage * collector by setting their references to null. */ public function destroy():void { _url = null; urlLoader = null; urlRequest = null; urlLoader.removeEventListener(Event.COMPLETE,handleComplete); urlLoader.removeEventListener(IOErrorEvent.IO_ERROR,handleError); } //-------------------------------------------------------------------------- // // Eventhandling // //-------------------------------------------------------------------------- /** @private */ private function handleComplete(event:Event):void { _url = urlLoader.data; dispatchEvent(new Event(Event.COMPLETE)); } /** @private */ private function handleError(event:IOErrorEvent):void { dispatchEvent(new IOErrorEvent(IOErrorEvent.IO_ERROR,false,false,"Shortening failed")); } } } |