MCPcopy Create free account
hub / github.com/ElyPrismLauncher/Launcher / ResourceDownloadTask

Method ResourceDownloadTask

launcher/ResourceDownloadTask.cpp:32–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

30#include "net/ChecksumValidator.h"
31
32ResourceDownloadTask::ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack,
33 ModPlatform::IndexedVersion version,
34 ResourceFolderModel* packs,
35 bool is_indexed)
36 : m_pack(std::move(pack)), m_pack_version(std::move(version)), m_pack_model(packs)
37{
38 if (is_indexed) {
39 m_update_task.reset(new LocalResourceUpdateTask(m_pack_model->indexDir(), *m_pack, m_pack_version));
40 connect(m_update_task.get(), &LocalResourceUpdateTask::hasOldResource, this, &ResourceDownloadTask::hasOldResource);
41
42 addTask(m_update_task);
43 }
44
45 m_filesNetJob.reset(new NetJob(tr("Resource download"), APPLICATION->network()));
46 m_filesNetJob->setStatus(tr("Downloading resource:\n%1").arg(m_pack_version.downloadUrl));
47
48 auto action = Net::ApiDownload::makeFile(m_pack_version.downloadUrl, m_pack_model->dir().absoluteFilePath(getFilename()));
49 if (!m_pack_version.hash_type.isEmpty() && !m_pack_version.hash.isEmpty()) {
50 switch (Hashing::algorithmFromString(m_pack_version.hash_type)) {
51 case Hashing::Algorithm::Md4:
52 action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Md4, m_pack_version.hash));
53 break;
54 case Hashing::Algorithm::Md5:
55 action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Md5, m_pack_version.hash));
56 break;
57 case Hashing::Algorithm::Sha1:
58 action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Sha1, m_pack_version.hash));
59 break;
60 case Hashing::Algorithm::Sha256:
61 action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Sha256, m_pack_version.hash));
62 break;
63 case Hashing::Algorithm::Sha512:
64 action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Sha512, m_pack_version.hash));
65 break;
66 default:
67 break;
68 }
69 }
70 m_filesNetJob->addNetAction(action);
71 connect(m_filesNetJob.get(), &NetJob::succeeded, this, &ResourceDownloadTask::downloadSucceeded);
72 connect(m_filesNetJob.get(), &NetJob::progress, this, &ResourceDownloadTask::downloadProgressChanged);
73 connect(m_filesNetJob.get(), &NetJob::stepProgress, this, &ResourceDownloadTask::propagateStepProgress);
74 connect(m_filesNetJob.get(), &NetJob::failed, this, &ResourceDownloadTask::downloadFailed);
75
76 addTask(m_filesNetJob);
77}
78
79void ResourceDownloadTask::downloadSucceeded()
80{

Callers

nothing calls this directly

Calls 11

moveFunction · 0.85
algorithmFromStringFunction · 0.85
networkMethod · 0.80
dirMethod · 0.80
addNetActionMethod · 0.80
resetMethod · 0.45
indexDirMethod · 0.45
getMethod · 0.45
setStatusMethod · 0.45
isEmptyMethod · 0.45
addValidatorMethod · 0.45

Tested by

no test coverage detected