/* jFeed : jQuery feed parser plugin
|
|
* Copyright (C) 2007 Jean-François Hovinne - http://www.hovinne.com/
|
|
* Dual licensed under the MIT (MIT-license.txt)
|
|
* and GPL (GPL-license.txt) licenses.
|
|
*/
|
|
|
|
jQuery.getFeed = function(options) {
|
|
|
|
options = jQuery.extend({
|
|
|
|
url: null,
|
|
data: null,
|
|
cache: true,
|
|
success: null,
|
|
failure: null,
|
|
error: null,
|
|
global: true
|
|
|
|
}, options);
|
|
|
|
if (options.url) {
|
|
|
|
if (jQuery.isFunction(options.failure) && jQuery.type(options.error)==='null') {
|
|
// Handle legacy failure option
|
|
options.error = function(xhr, msg, e){
|
|
options.failure(msg, e);
|
|
}
|
|
} else if (jQuery.type(options.failure) === jQuery.type(options.error) === 'null') {
|
|
// Default error behavior if failure & error both unspecified
|
|
options.error = function(xhr, msg, e){
|
|
window.console&&console.log('getFeed failed to load feed', xhr, msg, e);
|
|
}
|
|
}
|
|
|
|
return $.ajax({
|
|
type: 'GET',
|
|
url: options.url,
|
|
data: options.data,
|
|
cache: options.cache,
|
|
dataType: (jQuery.browser.msie) ? "text" : "xml",
|
|
success: function(xml) {
|
|
var feed = new JFeed(xml);
|
|
if (jQuery.isFunction(options.success)) options.success(feed);
|
|
},
|
|
error: options.error,
|
|
global: options.global
|
|
});
|
|
}
|
|
};
|
|
|
|
function JFeed(xml) {
|
|
if (xml) this.parse(xml);
|
|
}
|
|
;
|
|
|
|
JFeed.prototype = {
|
|
|
|
type: '',
|
|
version: '',
|
|
title: '',
|
|
link: '',
|
|
description: '',
|
|
parse: function(xml) {
|
|
|
|
if (jQuery.browser.msie) {
|
|
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
|
|
xmlDoc.loadXML(xml);
|
|
xml = xmlDoc;
|
|
}
|
|
|
|
if (jQuery('channel', xml).length == 1) {
|
|
|
|
this.type = 'rss';
|
|
var feedClass = new JRss(xml);
|
|
|
|
} else if (jQuery('feed', xml).length == 1) {
|
|
|
|
this.type = 'atom';
|
|
var feedClass = new JAtom(xml);
|
|
}
|
|
|
|
if (feedClass) jQuery.extend(this, feedClass);
|
|
}
|
|
};
|
|
|