summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/data/GoogleFeedStore.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo/dojox/data/GoogleFeedStore.js')
-rw-r--r--js/dojo/dojox/data/GoogleFeedStore.js81
1 files changed, 81 insertions, 0 deletions
diff --git a/js/dojo/dojox/data/GoogleFeedStore.js b/js/dojo/dojox/data/GoogleFeedStore.js
new file mode 100644
index 0000000..2b5c320
--- /dev/null
+++ b/js/dojo/dojox/data/GoogleFeedStore.js
@@ -0,0 +1,81 @@
+//>>built
+define("dojox/data/GoogleFeedStore", ["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/declare", "dojox/data/GoogleSearchStore"],
+ function(dojo, lang, declare, GoogleSearchStore) {
+
+dojo.experimental("dojox.data.GoogleFeedStore");
+
+/*===== var Search = dojox.data.GoogleSearchStore =====*/
+var Search = GoogleSearchStore.Search;
+
+return declare("dojox.data.GoogleFeedStore", Search,{
+ // summary:
+ // A data store for retrieving RSS and Atom feeds from Google. The
+ // feeds can come from any source, which is specified in the "url"
+ // parameter of the query passed to the "fetch" function.
+ // The following attributes are supported on each item:
+ // <ul>
+ // <li>title - The feed entry title.</li>
+ // <li>link - The URL for the HTML version of the feed entry.</li>
+ // <li>content - The full content of the blog post, in HTML format</li>
+ // <li>summary - A snippet of information about the feed entry, in plain text</li>
+ // <li>published - The string date on which the entry was published.
+ // You can parse the date with new Date(store.getValue(item, "published")</li>
+ // <li>categories - An array of string tags for the entry</li>
+ // </ul>
+ // The query accepts one parameter: url - The URL of the feed to retrieve
+ _type: "",
+ _googleUrl: "http://ajax.googleapis.com/ajax/services/feed/load",
+ _attributes: ["title", "link", "author", "published",
+ "content", "summary", "categories"],
+ _queryAttrs: {
+ "url":"q"
+ },
+
+ getFeedValue: function(attribute, defaultValue){
+ // summary:
+ // Non-API method for retrieving values regarding the Atom feed,
+ // rather than the Atom entries.
+ var values = this.getFeedValues(attribute, defaultValue);
+ if(lang.isArray(values)){
+ return values[0];
+ }
+ return values;
+ },
+
+ getFeedValues: function(attribute, defaultValue){
+ // summary:
+ // Non-API method for retrieving values regarding the Atom feed,
+ // rather than the Atom entries.
+ if(!this._feedMetaData){
+ return defaultValue;
+ }
+ return this._feedMetaData[attribute] || defaultValue;
+ },
+
+ _processItem: function(item, request) {
+ this.inherited(arguments);
+ item["summary"] = item["contentSnippet"];
+ item["published"] = item["publishedDate"];
+ },
+
+ _getItems: function(data){
+ if(data['feed']){
+ this._feedMetaData = {
+ title: data.feed.title,
+ desc: data.feed.description,
+ url: data.feed.link,
+ author: data.feed.author
+ };
+ return data.feed.entries;
+ }
+ return null;
+ },
+
+ _createContent: function(query, callback, request){
+ var cb = this.inherited(arguments);
+ cb.num = (request.count || 10) + (request.start || 0);
+ return cb;
+ }
+});
+
+});