topical media & game development
actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSBase.ax
actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSBase.ax
[swf]
flex
package
{
//import com.example.programmingas3.utils.DateUtil;
import flash.events.EventDispatcher;
This class contains properties that are common to both an RSSChannel and an RSSItem.
public dynamic class @ax-actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSBase extends EventDispatcher
{
// Required RSS 2.0 elements
public var title:String;
public var link:String;
public var description:String;
private var _pubDate:String;
private var _category:Object;
public var imageUrl:String;
private var _image:Object;
// derived values
public var categoryArray:Array = new Array();
public var publishDate:Date;
public function set pubDate(dateStr:String):void
{
this._pubDate = dateStr;
if (dateStr != null)
{
this.publishDate = actionscript_book_PodcastPlayer_com_example_programmingas3_utils_DateUtil.parseRFC822(dateStr);
}
}
public function get pubDate():String
{
return _pubDate;
}
public function get category():Object
{
return _category;
}
public function set category(catObj:Object):void
{
if (catObj != null)
{
var catXml:XML = catObj as XML;
if (catXml != null && catXml.attributes().length() > 0)
{
var domain:String = getAttribute(catXml, "domain");
var cat:String = getAttribute(catXml, "text");
var kittens:XMLList = catXml.children();
for (var i:int = 0; i < kittens.length(); i++)
{
cat += " > " + getAttribute(kittens[0], "text");
}
while (kittens.length() > 0)
{
cat += " > " + getAttribute(kittens[0], "text");
kittens = kittens[0].children();
}
this._category = cat;
if (this.categoryArray.length > 0)
{
this.categoryArray.push(cat);
}
else
{
this.categoryArray = [ cat ];
}
}
else
{
this._category = catObj.toString();
if (this.categoryArray.length > 0)
{
this.categoryArray.push( this._category );
}
else
{
this.categoryArray = [ this._category ];
}
}
}
}
public function buildCategory(catStr:String, catObj:XML):String
{
var subCat:String = getAttribute(catObj, "text");
if (subCat != null)
{
catStr += " > " + subCat;
}
var kittens:XMLList = catObj.children();
if (kittens.length() > 0)
{
return buildCategory(catStr, kittens[0]);;
}
return catStr;
}
public function get image():Object
{
return this._image;
}
public function set image(elementObj:Object):void
{
var element:XML = elementObj as XML;
var imageObj:Object = new Object();
if (element.url.length() > 0)
{
imageObj.url = getElementText(element, "url");
imageObj.title = getElementText(element, "title");
imageObj.link = getElementText(element, "link");
imageObj.width = getElementText(element, "width");
imageObj.height = getElementText(element, "height");
imageObj.description = getElementText(element, "description");
this.imageUrl = imageObj.url;
this._image = imageObj;
}
else if (element.@href.length() > 0)
{
this.imageUrl = getAttribute(element, "href")
imageObj.url = this.imageUrl;
}
this._image = imageObj;
}
public function set itunes_image(elementObj:Object):void
{
this.image = elementObj;
}
public static function getAttribute(element:XML, attName:String):String
{
var attValue:String = "";
var attribs:XMLList = element.attribute(attName);
if (attribs.length() > 0)
{
attValue = attribs[0].toString();
}
return attValue;
}
public static function getElementText(parent:XML, elemName:String):String
{
var elemText:String = "";
var kids:XMLList = parent.child(elemName);
if (kids.length() > 0)
{
elemText = kids[0].toString();
}
return elemText;
}
}
}
(C) Æliens
27/08/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.