2022-07-24 19:11:41 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <QString>
|
|
|
|
|
|
|
|
#include "modplatform/ModIndex.h"
|
|
|
|
#include "tasks/Task.h"
|
|
|
|
|
|
|
|
namespace Hashing {
|
|
|
|
|
|
|
|
class Hasher : public Task {
|
|
|
|
public:
|
|
|
|
using Ptr = shared_qobject_ptr<Hasher>;
|
|
|
|
|
|
|
|
Hasher(QString file_path) : m_path(std::move(file_path)) {}
|
|
|
|
|
|
|
|
/* We can't really abort this task, but we can say we aborted and finish our thing quickly :) */
|
|
|
|
bool abort() override { return true; }
|
|
|
|
|
|
|
|
void executeTask() override = 0;
|
|
|
|
|
|
|
|
QString getResult() const { return m_hash; };
|
|
|
|
QString getPath() const { return m_path; };
|
|
|
|
|
|
|
|
protected:
|
|
|
|
QString m_hash;
|
|
|
|
QString m_path;
|
|
|
|
};
|
|
|
|
|
|
|
|
class FlameHasher : public Hasher {
|
|
|
|
public:
|
|
|
|
FlameHasher(QString file_path) : Hasher(file_path) { setObjectName(QString("FlameHasher: %1").arg(file_path)); }
|
|
|
|
|
|
|
|
void executeTask() override;
|
|
|
|
};
|
|
|
|
|
|
|
|
class ModrinthHasher : public Hasher {
|
|
|
|
public:
|
|
|
|
ModrinthHasher(QString file_path) : Hasher(file_path) { setObjectName(QString("ModrinthHasher: %1").arg(file_path)); }
|
|
|
|
|
|
|
|
void executeTask() override;
|
|
|
|
};
|
|
|
|
|
2022-10-25 09:19:19 +01:00
|
|
|
class BlockedModHasher : public Hasher {
|
|
|
|
public:
|
2022-11-25 12:23:46 +00:00
|
|
|
BlockedModHasher(QString file_path, ModPlatform::ResourceProvider provider);
|
2022-10-25 09:19:19 +01:00
|
|
|
|
|
|
|
void executeTask() override;
|
|
|
|
|
|
|
|
QStringList getHashTypes();
|
|
|
|
bool useHashType(QString type);
|
|
|
|
private:
|
2022-11-25 12:23:46 +00:00
|
|
|
ModPlatform::ResourceProvider provider;
|
2022-10-25 09:19:19 +01:00
|
|
|
QString hash_type;
|
|
|
|
};
|
|
|
|
|
2022-11-25 12:23:46 +00:00
|
|
|
Hasher::Ptr createHasher(QString file_path, ModPlatform::ResourceProvider provider);
|
2022-07-24 19:11:41 +01:00
|
|
|
Hasher::Ptr createFlameHasher(QString file_path);
|
|
|
|
Hasher::Ptr createModrinthHasher(QString file_path);
|
2022-11-25 12:23:46 +00:00
|
|
|
Hasher::Ptr createBlockedModHasher(QString file_path, ModPlatform::ResourceProvider provider);
|
|
|
|
Hasher::Ptr createBlockedModHasher(QString file_path, ModPlatform::ResourceProvider provider, QString type);
|
2022-07-24 19:11:41 +01:00
|
|
|
|
|
|
|
} // namespace Hashing
|