Add a convenience function to do the parsing, handling XML and JSON
cases
This commit is contained in:
		
					parent
					
						
							
								ed7b5b06d3
							
						
					
				
			
			
				commit
				
					
						f442c2f605
					
				
			
		
					 2 changed files with 75 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -21,6 +21,9 @@
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
#include "utils.h"
 | 
			
		||||
#include <qjson/parser.h>
 | 
			
		||||
#include <QtXml/QXmlStreamReader>
 | 
			
		||||
#include <QDebug>
 | 
			
		||||
 | 
			
		||||
namespace Danbooru {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -101,5 +104,68 @@ namespace Danbooru {
 | 
			
		|||
        return danbooruUrl;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    QList< QVariant > parseDanbooruResult(QByteArray data, QString elementName,
 | 
			
		||||
                                          bool* result)
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        QXmlStreamReader reader;
 | 
			
		||||
        reader.addData(data);
 | 
			
		||||
 | 
			
		||||
        QList<QVariant> postData;
 | 
			
		||||
 | 
			
		||||
        while(!reader.atEnd() && !reader.hasError()) {
 | 
			
		||||
 | 
			
		||||
            QXmlStreamReader::TokenType token = reader.readNext();
 | 
			
		||||
 | 
			
		||||
            if (token == QXmlStreamReader::StartDocument) {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if(token == QXmlStreamReader::StartElement &&
 | 
			
		||||
               reader.name() == elementName)  {
 | 
			
		||||
 | 
			
		||||
                QVariantMap values;
 | 
			
		||||
 | 
			
		||||
                QXmlStreamAttributes attributes = reader.attributes();
 | 
			
		||||
 | 
			
		||||
//                 qDebug() << attributes;
 | 
			
		||||
 | 
			
		||||
                Q_FOREACH(const QXmlStreamAttribute& attribute, attributes) {
 | 
			
		||||
                    values.insert(attribute.name().toString(),
 | 
			
		||||
                                  attribute.value().toString());
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (values.isEmpty()) {
 | 
			
		||||
                    *result = false;
 | 
			
		||||
                    return QList<QVariant>();
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                QVariant converted = QVariant(values);
 | 
			
		||||
 | 
			
		||||
                postData.append(converted);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        *result = true;
 | 
			
		||||
        return postData;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    QList< QVariant > parseDanbooruResult(QByteArray data, bool* result)
 | 
			
		||||
    {
 | 
			
		||||
        QJson::Parser parser;
 | 
			
		||||
 | 
			
		||||
        bool ok;
 | 
			
		||||
 | 
			
		||||
        QVariant postData = parser.parse(data, &ok);
 | 
			
		||||
 | 
			
		||||
        if (!ok) {
 | 
			
		||||
            *result = ok;
 | 
			
		||||
            return QList<QVariant>();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        *result = true;
 | 
			
		||||
 | 
			
		||||
        return postData.toList();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
} // namespace Danbooru
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,8 +23,12 @@
 | 
			
		|||
#ifndef UTILS_H
 | 
			
		||||
#define UTILS_H
 | 
			
		||||
 | 
			
		||||
// Qt
 | 
			
		||||
 | 
			
		||||
#include <QtCore/QStringList>
 | 
			
		||||
 | 
			
		||||
// KDE
 | 
			
		||||
 | 
			
		||||
#include <kurl.h>
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			@ -100,5 +104,10 @@ namespace Danbooru {
 | 
			
		|||
                    const QString& password);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    QList<QVariant> parseDanbooruResult(QByteArray data, QString xlmElement,
 | 
			
		||||
                                        bool* result);
 | 
			
		||||
    QList<QVariant> parseDanbooruResult(QByteArray data, bool* result);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
#endif // UTILS_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue