Sayonara Player
SoundcloudJsonParser.h
1/* SoundcloudJsonParser.h */
2
3/* Copyright (C) 2011-2020 Michael Lugmair (Lucio Carreras)
4 *
5 * This file is part of sayonara player
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#ifndef SOUNDCLOUDJSONPARSER_H
22#define SOUNDCLOUDJSONPARSER_H
23
24#include <QJsonObject>
25#include <QJsonArray>
26#include <QObject>
27
28#include "Utils/Pimpl.h"
29
30class MetaData;
31class MetaDataList;
32class Artist;
33class Album;
34class ArtistList;
35class AlbumList;
36
37class QByteArray;
38namespace SC
39{
40 class JsonParser : public QObject
41 {
42 Q_OBJECT
43 PIMPL(JsonParser)
44
45 private:
46 enum class SCJsonItemType : uint8_t
47 {
48 Track=0,
49 Artist,
50 Playlist
51 };
52
53 public:
54 explicit JsonParser(const QByteArray& content);
56
57 bool parseArtistList(ArtistList& artists, QJsonArray arr);
58 bool parseTrackList(ArtistList& artists, MetaDataList& v_md, QJsonArray arr);
59 bool parsePlaylistList(ArtistList& artists, AlbumList& albums, MetaDataList& v_md, QJsonArray arr);
60
61 bool parseArtist(Artist& artist, QJsonObject object);
62 bool parsePlaylist(ArtistList& artists, Album& album, MetaDataList& v_md, QJsonObject object);
63 bool parseTrack(Artist& artist, MetaData& md, QJsonObject object);
64
65 QString createLink(const QString& name, const QString& target);
66
67 bool getString(const QString& key, const QJsonObject& object, QString& str);
68 bool getInt(const QString& key, const QJsonObject& object, int& i);
69 bool getArray(const QString& key, const QJsonObject& object, QJsonArray& arr);
70 bool getObject(const QString& key, const QJsonObject& object, QJsonObject& o);
71
72 bool parseArtists(ArtistList& artists);
73 bool parseTracks(ArtistList& artists, MetaDataList& v_md);
74 bool parsePlaylists(ArtistList& artists, AlbumList& albums, MetaDataList& v_md);
75 };
76}
77
78#endif // SOUNDCLOUDJSONPARSER_H
The AlbumList class.
Definition: Album.h:100
The Album class.
Definition: Album.h:41
ArtistList.
Definition: Artist.h:77
The Artist class.
Definition: Artist.h:38
The MetaDataList class.
Definition: MetaDataList.h:37
The MetaData class.
Definition: MetaData.h:47
Definition: SoundcloudJsonParser.h:41