@@ -53,10 +53,10 @@ void CurrentVersionFetcher::fetchCurrentVersion()
5353 }
5454}
5555
56- void ComponentVersionFetcher (QJsonObject components, QString name, QString system, QString *version, QString *url )
56+ void ComponentVersionFetcher (QJsonObject components, QString name, QString system, QString *version, std::vector< QString> *urls )
5757{
58- QString mirror;
5958 QString path;
59+ QJsonArray mirrors;
6060
6161 QJsonObject component = components[name].toObject ();
6262
@@ -70,11 +70,9 @@ void ComponentVersionFetcher(QJsonObject components, QString name, QString syste
7070 *version = versionValue.toString ();
7171 }
7272
73- QJsonArray mirrors = component[" mirrors" ].toArray ();
73+ mirrors = component[" mirrors" ].toArray ();
7474 if (!mirrors.count ()) {
7575 qDebug () << " ComponentVersionFetcher: undefined “mirrors” key for " << name;
76- } else {
77- mirror = mirrors.first ().toString ();
7876 }
7977
8078 QJsonObject parcels = component[" parcels" ].toObject ();
@@ -95,33 +93,38 @@ void ComponentVersionFetcher(QJsonObject components, QString name, QString syste
9593 }
9694 }
9795
98- *url = mirror + path;
99-
10096 qDebug () << " ComponentVersionFetcher: fetched component =" << name;
10197 qDebug () << " ComponentVersionFetcher: fetched system =" << system;
10298 qDebug () << " ComponentVersionFetcher: fetched version =" << *version;
103- qDebug () << " ComponentVersionFetcher: fetched mirror =" << mirror;
10499 qDebug () << " ComponentVersionFetcher: fetched path =" << path;
105- qDebug () << " ComponentVersionFetcher: fetched url =" << *url;
100+
101+ for (auto m : mirrors)
102+ {
103+ QString mirror = m.toString ();
104+ qDebug () << " ComponentVersionFetcher: fetched mirror =" << mirror;
105+ QString url = mirror + path;
106+ qDebug () << " ComponentVersionFetcher: fetched url =" << url;
107+ urls->push_back (url);
108+ }
106109}
107110
108111void CurrentVersionFetcher::reply (QNetworkReply* reply)
109112{
110113 QString formatVersion;
111114 QString updaterVersion;
112- QString updaterUrl ;
115+ std::vector< QString> updaterUrls ;
113116 QString gameVersion;
114- QString gameUrl ;
117+ std::vector< QString> gameUrls ;
115118 QString newsVersion;
116- QString newsUrl ;
119+ std::vector< QString> newsUrls ;
117120
118121 if (reply->error () != QNetworkReply::NoError) {
119122 qDebug () << " CurrentVersionFetcher: network error" ;
120123
121124 if (versionMirror) {
122125 fetchCurrentVersion ();
123126 } else {
124- emit onCurrentVersions (updaterVersion, updaterUrl , gameVersion, gameUrl, newsUrl );
127+ emit onCurrentVersions (updaterVersion, updaterUrls , gameVersion, gameUrls, " " );
125128 }
126129 return ;
127130 }
@@ -130,7 +133,7 @@ void CurrentVersionFetcher::reply(QNetworkReply* reply)
130133 QJsonDocument json = QJsonDocument::fromJson (reply->readAll (), &error);
131134 if (error.error != QJsonParseError::NoError) {
132135 qDebug () << " CurrentVersionFetcher: JSON parsing error" ;
133- emit onCurrentVersions (updaterVersion, updaterUrl , gameVersion, gameUrl, newsUrl );
136+ emit onCurrentVersions (updaterVersion, updaterUrls , gameVersion, gameUrls, " " );
134137 return ;
135138 }
136139
@@ -140,6 +143,8 @@ void CurrentVersionFetcher::reply(QNetworkReply* reply)
140143
141144 if (formatVersionValue == QJsonValue::Undefined) {
142145 qDebug () << " ComponentVersionFetcher: missing “version” value in current.json" ;
146+ emit onCurrentVersions (updaterVersion, updaterUrls, gameVersion, gameUrls, " " );
147+ return ;
143148 } else {
144149 formatVersion = formatVersionValue.toString ();
145150 }
@@ -148,18 +153,20 @@ void CurrentVersionFetcher::reply(QNetworkReply* reply)
148153
149154 if (componentsValue == QJsonValue::Undefined) {
150155 qDebug () << " ComponentVersionFetcher: missing “components” array in current.json" ;
156+ emit onCurrentVersions (updaterVersion, updaterUrls, gameVersion, gameUrls, " " );
157+ return ;
151158 } else {
152159 qDebug () << " ComponentVersionFetcher: fetched format = " << formatVersion;
153160
154161 QJsonObject components = componentsValue.toObject ();
155162
156- ComponentVersionFetcher (components, " updater" , Sys::updaterSystem (), &updaterVersion, &updaterUrl );
163+ ComponentVersionFetcher (components, " updater" , Sys::updaterSystem (), &updaterVersion, &updaterUrls );
157164
158- ComponentVersionFetcher (components, " game" , " all-all" , &gameVersion, &gameUrl );
165+ ComponentVersionFetcher (components, " game" , " all-all" , &gameVersion, &gameUrls );
159166
160- ComponentVersionFetcher (components, " news" , " all-all" , &newsVersion, &newsUrl );
167+ ComponentVersionFetcher (components, " news" , " all-all" , &newsVersion, &newsUrls );
161168 }
162169
163- emit onCurrentVersions (updaterVersion, updaterUrl , gameVersion, gameUrl, newsUrl );
170+ emit onCurrentVersions (updaterVersion, updaterUrls , gameVersion, gameUrls, newsUrls. at ( 0 ) );
164171}
165172
0 commit comments