MCPcopy Create free account
hub / github.com/QuiteRSS/quiterss / parseAtom

Method parseAtom

src/parseobject.cpp:271–447  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

269}
270
271void ParseObject::parseAtom(const QString &feedUrl, const QDomDocument &doc)
272{
273 QDomElement rootElem = doc.documentElement();
274 FeedItemStruct feedItem;
275
276 feedItem.linkBase = rootElem.attribute("xml:base");
277 feedItem.title = toPlainText(rootElem.namedItem("title").toElement().text());
278 feedItem.description = rootElem.namedItem("subtitle").toElement().text();
279 feedItem.updated = rootElem.namedItem("updated").toElement().text();
280 feedItem.updated = parseDate(feedItem.updated, feedUrl);
281 QDomElement authorElem = rootElem.namedItem("author").toElement();
282 if (!authorElem.isNull()) {
283 feedItem.author = toPlainText(authorElem.namedItem("name").toElement().text());
284 if (feedItem.author.isEmpty()) feedItem.author = toPlainText(authorElem.text());
285 feedItem.authorUri = authorElem.namedItem("uri").toElement().text();
286 feedItem.authorEmail = authorElem.namedItem("email").toElement().text();
287 }
288 feedItem.language = rootElem.namedItem("language").toElement().text();
289 QDomNodeList linksList = rootElem.elementsByTagName("link");
290 for (int j = 0; j < linksList.size(); j++) {
291 if (linksList.at(j).toElement().attribute("rel") == "alternate") {
292 feedItem.link = linksList.at(j).toElement().attribute("href");
293 break;
294 }
295 }
296 if (feedItem.link.isEmpty()) {
297 for (int j = 0; j < linksList.size(); j++) {
298 if (!(linksList.at(j).toElement().attribute("rel") == "self")) {
299 feedItem.link = linksList.at(j).toElement().attribute("href");
300 break;
301 }
302 }
303 }
304
305 if (QUrl(feedItem.link).host().isEmpty() || (QUrl(feedItem.link).host().indexOf('.')) == -1) {
306 if (!feedItem.linkBase.isEmpty() && !QUrl(feedItem.linkBase).host().isEmpty())
307 feedItem.link = QUrl(feedItem.linkBase).scheme() % "://" % QUrl(feedItem.linkBase).host();
308 else
309 feedItem.link = QUrl(feedUrl).scheme() % "://" % QUrl(feedUrl).host();
310 }
311 if (feedItem.linkBase.isEmpty() && !QUrl(feedItem.link).host().isEmpty())
312 feedItem.linkBase = QUrl(feedItem.link).scheme() % "://" % QUrl(feedItem.link).host();
313 if (QUrl(feedItem.link).host().isEmpty())
314 feedItem.link = feedItem.linkBase + feedItem.link;
315 feedItem.link = toPlainText(feedItem.link);
316 QUrl url = QUrl(feedItem.link);
317 if (url.scheme().isEmpty())
318 url.setScheme(QUrl(feedUrl).scheme());
319 feedItem.link = url.toString();
320
321 QSqlQuery q(db_);
322 q.setForwardOnly(true);
323 QString qStr ("UPDATE feeds "
324 "SET title=?, description=?, htmlUrl=?, "
325 "author_name=?, author_email=?, "
326 "author_uri=?, pubdate=?, language=? "
327 "WHERE id==?");
328 q.prepare(qStr);

Callers

nothing calls this directly

Calls 7

isNullMethod · 0.80
prepareMethod · 0.80
execMethod · 0.80
saveMethod · 0.80
QUrlClass · 0.50
sizeMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected