MCPcopy Create free account
hub / github.com/PolyMC/PolyMC / parseAndAddPacks

Method parseAndAddPacks

launcher/modplatform/legacy_ftb/PackFetchTask.cpp:140–208  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

138}
139
140bool PackFetchTask::parseAndAddPacks(QByteArray &data, PackType packType, ModpackList &list)
141{
142 QDomDocument doc;
143
144 QString errorMsg = "Unknown error.";
145 int errorLine = -1;
146 int errorCol = -1;
147
148 if(!doc.setContent(data, false, &errorMsg, &errorLine, &errorCol))
149 {
150 auto fullErrMsg = QString("Failed to fetch modpack data: %1 %2:%3!").arg(errorMsg).arg(errorLine).arg(errorCol);
151 qWarning() << fullErrMsg;
152 data.clear();
153 return false;
154 }
155
156 QDomNodeList nodes = doc.elementsByTagName("modpack");
157 for(int i = 0; i < nodes.length(); i++)
158 {
159 QDomElement element = nodes.at(i).toElement();
160
161 Modpack modpack;
162 modpack.name = element.attribute("name");
163 modpack.currentVersion = element.attribute("version");
164 modpack.mcVersion = element.attribute("mcVersion");
165 modpack.description = element.attribute("description");
166 modpack.mods = element.attribute("mods");
167 modpack.logo = element.attribute("logo");
168 modpack.oldVersions = element.attribute("oldVersions").split(";");
169 modpack.broken = false;
170 modpack.bugged = false;
171
172 //remove empty if the xml is bugged
173 for(QString curr : modpack.oldVersions)
174 {
175 if(curr.isNull() || curr.isEmpty())
176 {
177 modpack.oldVersions.removeAll(curr);
178 modpack.bugged = true;
179 qWarning() << "Removed some empty versions from" << modpack.name;
180 }
181 }
182
183 if(modpack.oldVersions.size() < 1)
184 {
185 if(!modpack.currentVersion.isNull() && !modpack.currentVersion.isEmpty())
186 {
187 modpack.oldVersions.append(modpack.currentVersion);
188 qWarning() << "Added current version to oldVersions because oldVersions was empty! (" + modpack.name + ")";
189 }
190 else
191 {
192 modpack.broken = true;
193 qWarning() << "Broken pack:" << modpack.name << " => No valid version!";
194 }
195 }
196
197 modpack.author = element.attribute("author");

Callers

nothing calls this directly

Calls 7

QStringClass · 0.85
lengthMethod · 0.80
isEmptyMethod · 0.80
appendMethod · 0.80
clearMethod · 0.45
atMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected