MCPcopy Create free account
hub / github.com/FreesmTeam/FreesmLauncher / Load

Method Load

launcher/net/HttpMetaCache.cpp:215–277  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

213}
214
215void HttpMetaCache::Load()
216{
217 if (m_index_file.isNull())
218 return;
219
220 QFile index(m_index_file);
221 if (!index.open(QIODevice::ReadOnly))
222 return;
223
224 QJsonParseError parseError;
225 QJsonDocument json = QJsonDocument::fromJson(index.readAll(), &parseError);
226
227 // Fail if the JSON is invalid.
228 if (parseError.error != QJsonParseError::NoError) {
229 qCritical() << QString("Failed to parse HttpMetaCache file: %1 at offset %2")
230 .arg(parseError.errorString(), QString::number(parseError.offset))
231 .toUtf8();
232 return;
233 }
234
235 // Make sure the root is an object.
236 if (!json.isObject()) {
237 qCritical() << "HttpMetaCache root should be an object.";
238 return;
239 }
240
241 auto root = json.object();
242
243 // check file version first
244 auto version_val = Json::ensureString(root, "version");
245 if (version_val != "1")
246 return;
247
248 // read the entry array
249 auto array = Json::ensureArray(root, "entries");
250 for (auto element : array) {
251 auto element_obj = Json::ensureObject(element);
252 auto base = Json::ensureString(element_obj, "base");
253 if (!m_entries.contains(base))
254 continue;
255
256 auto& entrymap = m_entries[base];
257
258 auto foo = new MetaEntry();
259 foo->m_baseId = base;
260 foo->m_relativePath = Json::ensureString(element_obj, "path");
261 foo->m_md5sum = Json::ensureString(element_obj, "md5sum");
262 foo->m_etag = Json::ensureString(element_obj, "etag");
263 foo->m_local_changed_timestamp = Json::ensureDouble(element_obj, "last_changed_timestamp");
264 foo->m_remote_changed_timestamp = Json::ensureString(element_obj, "remote_changed_timestamp");
265
266 foo->makeEternal(Json::ensureBoolean(element_obj, (const QString)QStringLiteral("eternal"), false));
267 if (!foo->isEternal()) {
268 foo->m_current_age = Json::ensureDouble(element_obj, "current_age");
269 foo->m_max_age = Json::ensureDouble(element_obj, "max_age");
270 }
271
272 // presumed innocent until closer examination

Callers 1

ApplicationMethod · 0.80

Calls 7

QStringClass · 0.85
openMethod · 0.80
errorStringMethod · 0.80
objectMethod · 0.80
makeEternalMethod · 0.80
isEternalMethod · 0.80
containsMethod · 0.45

Tested by

no test coverage detected