package com.adobe.xml.syndication.generic
{
import com.adobe.xml.syndication.atom.Author;
import com.adobe.xml.syndication.atom.Entry10;
import com.adobe.xml.syndication.atom.Link;
import com.adobe.xml.syndication.atom.Category;
/**
* Class that abstracts out the specific characteristics of an Atom entry
* into a generic Item. You create an instance using an Entry object,
* then you can access it in a generic way.
*
* @langversion ActionScript 3.0
* @playerversion Flash 8.5
* @tiptext
*/
public class Atom10Item
implements IItem
{
private var entry:Entry10;
/**
* Create a new Atom10Item instance.
*
* @param entry An Entry object that you want abstracted.
*
* @langversion ActionScript 3.0
* @playerversion Flash 8.5
* @tiptext
*/
public function Atom10Item(entry:Entry10)
{
this.entry = entry;
}
/**
* This item's title.
*
* @langversion ActionScript 3.0
* @playerversion Flash 8.5
* @tiptext
*/
public function get title():String
{
return this.entry.title;
}
/**
* This item's link.
*
* @langversion ActionScript 3.0
* @playerversion Flash 8.5
* @tiptext
*/
public function get link():String
{
for each (var link:Link in this.entry.links)
{
if (link.rel == null || link.rel == "alternate")
{
return link.href;
}
}
return null;
}
/**
* This item's unique ID.
*
* @langversion ActionScript 3.0
* @playerversion Flash 8.5
* @tiptext
*/
public function get id():String
{
return this.entry.id;
}
/**
* The date this item was published.
*
* @langversion ActionScript 3.0
* @playerversion Flash 8.5
* @tiptext
*/
public function get date():Date
{
return this.entry.published;
}
/**
* One or more authors of this item.
*
* @langversion ActionScript 3.0
* @playerversion Flash 8.5
* @tiptext
*/
public function get authors():Array
{
if (this.entry.authors == null || this.entry.authors.length == 0)
{
return null;
}
var authors:Array = new Array();
var author:com.adobe.xml.syndication.atom.Author;
for each (author in this.entry.authors)
{
var newAuthor:com.adobe.xml.syndication.generic.Author = new com.adobe.xml.syndication.generic.Author();
newAuthor.name = author.name;
newAuthor.url = author.uri;
newAuthor.email = author.email;
authors.push(newAuthor);
}
return authors;
}
/**
* One or more categories.
*
* @langversion ActionScript 3.0
* @playerversion Flash 8.5
* @tiptext
*/
public function get topics():Array
{
if (this.entry.categories == null || this.entry.categories.length == 0)
{
return null;
}
var topics:Array = new Array();
for each (var category:Category in this.entry.categories)
{
topics.push(category.label);
}
return topics;
}
/**
* An excerpt or description of this item.
*
* @langversion ActionScript 3.0
* @playerversion Flash 8.5
* @tiptext
*/
public function get excerpt():Excerpt
{
var excerpt:Excerpt = new Excerpt;
excerpt.src = this.entry.content.src;
excerpt.type = this.entry.content.type;
excerpt.value = this.entry.content.value;
return excerpt;
}
/**
* Any media associated with this item.
*
* @langversion ActionScript 3.0
* @playerversion Flash 8.5
* @tiptext
*/
public function get media():Media
{
for each (var link:Link in this.entry.links)
{
if (link.rel == "enclosure")
{
var media:Media = new Media();
media.type = link.type;
media.length = link.length;
media.url = link.href;
return media;
}
}
return null;
}
}
}