topical media & game development
actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSChannel.ax
actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSChannel.ax
[swf]
flex
package
{
//import com.example.programmingas3.utils.DateUtil;
import flash.geom.Point;
public dynamic class @ax-actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSChannel extends actionscript_book_PodcastPlayer_com_example_programmingas3_podcastplayer_RSSBase
{
// * title
// * description or itunes:summary
// * itunes:subtitle
// * copyright
// * language
// * link
// * pubDate
// * itunes:category (recursive)
// * itunes:keywords
// * image->url,title,link or itunes:image
// * itunes:explicit
// The following RSS 2.0 elements are defined in the RSSBase superclass
// Required RSS 2.0 elements
// public var title:String;
// public var link:String;
// public var description:String;
// public var pubDate:String;
// public var category:String;
// derived values
// public var categoryArray:Array;
// public var publishDate:Date;
// ITunes RSS 2.0 elements
public var subtitle:String;
public var summary:String;
// Optional RSS 2.0 elements
public var author:String;
public var content:Object; // contains fileSize, rating, type, uid, url
public var contentType:String;
public var copyright:String;
public var language:String;
public var webMaster:String;
public var managingEditor:String;
public var guid:String;
public var _keywords:String;
public var origLink:String;
public var _lastBuildDate:String;
public var lastPublishDate:Date;
public var uid:String;
public var keywordsArray:Array;
public var items:Array;
public function get keywords():String
{
return this._keywords;
}
public function set keywords(keywordStr:String):void
{
this._keywords = keywordStr;
var delim:String = " ";
if (keywordStr.indexOf(", ") > 0)
{
delim = ", ";
}
else if (keywordStr.indexOf(", ") > 0)
{
delim = ",";
}
this.keywordArray = keywordStr.split(delim);
}
public function get lastBuildDate():String
{
return this._lastBuildDate;
}
public function set lastBuildDate(dateStr:String):void
{
if (dateStr != null)
{
this._lastBuildDate = dateStr;
this.lastPublishDate = actionscript_book_PodcastPlayer_com_example_programmingas3_utils_DateUtil.parseRFC822(dateStr);
}
}
public static function parseFeed(channelXml:XML):@ax-actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSChannel
{
var feed:@ax-actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSChannel = new @ax-actionscript-book-PodcastPlayer-com-example-programmingas3-podcastplayer-RSSChannel();
var kids:XMLList = channelXml.children();
var elementName:String;
var propName:String;
for each (var element:XML in kids)
{
elementName = element.localName();
if (elementName != "item")
{
// handle itunes names
var iTunesIndex:int = element.name().toString().indexOf("itunes");
if (iTunesIndex >= 0)
{
propName = "itunes_" + elementName;
}
else
{
propName = elementName;
}
if (element.hasSimpleContent() && element.attributes().length() == 0)
{
feed[propName] = element.toString();
}
else
{
feed[propName] = element;
}
}
}
var itemArray:Array = new Array();
var itemObj:Object;
var itemList:XMLList = channelXml.item;
for each (var itemXml:XML in itemList)
{
itemObj = actionscript_book_PodcastPlayer_com_example_programmingas3_podcastplayer_RSSItem.parseItem(itemXml);
itemArray.push(itemObj);
}
feed.items = itemArray;
return feed;
}
public function getFullHTML():String
{
var html:String = "";
if (this.imageUrl != null)
{
html += "<img src='" + this.imageUrl + "' />";
}
if (this.subtitle != null)
{
html += "<p><b>" + this.subtitle + "</b></p>";
}
if (this.description != null)
{
html += "<p>" + this.description + "</p>";
}
else if (this.summary != null)
{
html += "<p>" + this.summary + "</p>";
}
if (this.link != null)
{
// html += "<p><font color=blue>" + "<" + "a href='" + this.link + "' target='_blank'>[link]</a></font></p>";
html += "<p><font color=blue>" + "<" + "a href='" + this.link + "'>[link]</a></font></p>";
}
return html;
}
public function getDescriptionHTML():String
{
var html:String = "";
if (this.subtitle != null)
{
html += "<p><b>" + this.subtitle + "</b></p>";
}
if (this.description != null)
{
html += "<p>" + this.description + "</p>";
}
else if (this.summary != null)
{
html += "<p>" + this.summary + "</p>";
}
if (this.link != null)
{
html += "<p><font color=blue>" + "<" + "a href='" + this.link + "' target='_blank'>[link]</a></font></p>";
}
return html;
}
public function getImageSize():Point
{
var p:Point = new Point(88, 31);
if (this.image != null)
{
var h:int = int(this.image.height);
var w:int = int(this.image.width);
if (this.image.height > 31 || this.image.width > 88)
{
p = new Point(w, h);
}
}
return p;
}
}
}
(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.