зеркало из https://github.com/mozilla/snowl.git
add some error handling: catch message retrieval failure and return empty set; handle (rather poor) throw in external feed date parser for malformed dates.
--HG-- extra : rebase_source : 4c7e71892acad4f5bca54ab64ffabc968595f0c7
This commit is contained in:
Родитель
98dd30368e
Коммит
c744e765e0
|
@ -158,6 +158,10 @@ SnowlCollection.prototype = {
|
|||
this._messageIndex[message.id] = message;
|
||||
}
|
||||
}
|
||||
catch(ex) {
|
||||
this._log.error("Error retrieving messages - " + ex);
|
||||
return this._messages = [];
|
||||
}
|
||||
finally {
|
||||
statement.reset();
|
||||
}
|
||||
|
@ -258,13 +262,16 @@ SnowlCollection.prototype = {
|
|||
if (condition.type != "ARRAY")
|
||||
for (let [name, value] in Iterator(condition.parameters)) {
|
||||
statement.params[name] = value;
|
||||
this._log.info("_generateStatement: name:value - "+name+" : "+value.toString());
|
||||
this._log.info("_generateStatement: params - "+statement.params[name]);
|
||||
//this._log.info("_generateStatement: name:value - "+name+" : "+value.toString());
|
||||
//this._log.info("_generateStatement: params - "+statement.params[name]);
|
||||
}
|
||||
|
||||
for each (let condition in this.filters)
|
||||
for (let [name, value] in Iterator(condition.parameters))
|
||||
for (let [name, value] in Iterator(condition.parameters)) {
|
||||
statement.params[name] = value;
|
||||
//this._log.info("_generateStatement: name:value - "+name+" : "+value.toString());
|
||||
//this._log.info("_generateStatement: params - "+statement.params[name]);
|
||||
}
|
||||
|
||||
return statement;
|
||||
},
|
||||
|
|
|
@ -431,10 +431,14 @@ SnowlFeed.prototype = {
|
|||
message.source = this;
|
||||
message.externalID = aExternalID;
|
||||
message.subject = aEntry.title.text;
|
||||
message.timestamp = aEntry.updated ? new Date(SnowlDateUtils.RFC822Date(aEntry.updated))
|
||||
: aEntry.published ? new Date(SnowlDateUtils.RFC822Date(aEntry.published))
|
||||
: aEntry.fields.get("dc:date") ? ISO8601DateUtils.parse(aEntry.fields.get("dc:date"))
|
||||
message.timestamp = aEntry.updated ? new Date(SnowlDateUtils.RFC822Date(aEntry.updated))
|
||||
: aEntry.published ? new Date(SnowlDateUtils.RFC822Date(aEntry.published))
|
||||
: null;
|
||||
if (!message.timestamp && aEntry.fields.get("dc:date")) {
|
||||
// This date routine throws for really invalid dates.
|
||||
try { message.timestamp = ISO8601DateUtils.parse(aEntry.fields.get("dc:date")) }
|
||||
catch(ex) { message.timestamp = null; }
|
||||
}
|
||||
message.received = aReceived;
|
||||
message.link = aEntry.link;
|
||||
|
||||
|
@ -628,6 +632,10 @@ SnowlFeed.prototype = {
|
|||
let fieldName = field.name.replace(/^null/, "");
|
||||
message.headers[fieldName] = field.value.substring(0, 500) +
|
||||
(field.value.length > 500 ? " [...]" : "");
|
||||
|
||||
// One last try to get a valid date..
|
||||
if (!message.timestamp && fieldName == "publicationDate")
|
||||
message.timestamp = new Date(SnowlDateUtils.RFC822Date(field.value));
|
||||
}
|
||||
|
||||
if (field.name.match(/lang/g)) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче