1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
| Ext.define('FV.lib.FeedValidator', {
| singleton: true,
|
| /**
| * @cfg {String} url The url to validate feeds on
| */
| url: 'feed-proxy.php',
|
| /**
| * Validates a given feed's formating by fetching it and ensuring it is well formed
| * @param {FV.model.Feed} feed The feed to validate
| */
| validate: function(feed, options) {
| options = options || {};
|
| Ext.applyIf(options, {
| scope: this,
| success: Ext.emptyFn,
| failure: Ext.emptyFn
| });
|
| Ext.Ajax.request({
| url: this.url,
| params: {
| feed: feed.get('url')
| },
| scope: this,
| success: function(response) {
| if (this.checkResponse(response, feed)) {
| options.success.call(options.scope, feed);
| }
| },
| failure: function() {
| options.failure.call(options.scope);
| }
| });
| },
|
| /**
| * @private
| * Validates that a response contains a well-formed feed
| * @param {Object} response The response object
| */
| checkResponse: function(response, feed) {
| var dq = Ext.DomQuery,
| url = feed.get('url'),
| xml, channel, title;
|
| try {
| xml = response.responseXML;
| channel = xml.getElementsByTagName('channel')[0];
|
| if (channel) {
| title = dq.selectValue('title', channel, url);
| return true;
| }
| } catch(e) {
| }
| return false;
| }
| });
|
|