Skip to content

Commit

Permalink
Code generator refactoring (#379)
Browse files Browse the repository at this point in the history
Improve code generator
  • Loading branch information
zenden2k authored Jun 24, 2024
1 parent 1030010 commit bf0ae8d
Show file tree
Hide file tree
Showing 38 changed files with 1,065 additions and 905 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ ipch/
Lang/*.new
Dist/debian/imgupload
Dist/serverchecker
Dist/versioninfo.h
/Build*/
.vs/
.vscode/
Expand Down
Binary file modified Data/template.txt
Binary file not shown.
48 changes: 21 additions & 27 deletions Source/CLI/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
#include "Core/Upload/UploadSession.h"
#include "Core/Upload/ConsoleUploadErrorHandler.h"
#include "Core/Upload/UploadEngineManager.h"
#include "Core/OutputCodeGenerator.h"
#include "Core/OutputGenerator/OutputGeneratorFactory.h"
#include "Core/Upload/ScriptUploadEngine.h"
#include "Core/ServiceLocator.h"
#include "Core/Utils/StringUtils.h"
Expand Down Expand Up @@ -92,8 +92,9 @@ bool useSystemProxy = false;

std::unique_ptr<CUploadEngineList> list;

OutputCodeGenerator::CodeType codeType = OutputCodeGenerator::ctClickableThumbnails;
OutputCodeGenerator::CodeLang codeLang = OutputCodeGenerator::clPlain;
namespace OutputGenerator = ImageUploader::Core::OutputGenerator;
OutputGenerator::CodeType codeType = OutputGenerator::ctClickableThumbnails;
OutputGenerator::CodeLang codeLang = OutputGenerator::clPlain;
bool autoUpdate = false;
std::shared_ptr<UploadSession> session;

Expand Down Expand Up @@ -229,13 +230,13 @@ bool parseCommandLine(int argc, char *argv[])
return false;
char * codelang = argv[++i];
if(!IuStringUtils::stricmp(codelang, "plain"))
codeLang = OutputCodeGenerator::clPlain;
codeLang = OutputGenerator::clPlain;
else if(!IuStringUtils::stricmp(codelang, "html"))
codeLang = OutputCodeGenerator::clHTML;
codeLang = OutputGenerator::clHTML;
else if(!IuStringUtils::stricmp(codelang, "bbcode"))
codeLang = OutputCodeGenerator::clBBCode;
codeLang = OutputGenerator::clBBCode;
else if (!IuStringUtils::stricmp(codelang, "json"))
codeLang = OutputCodeGenerator::clJSON;
codeLang = OutputGenerator::clJSON;
i++;
continue;
}
Expand All @@ -245,13 +246,13 @@ bool parseCommandLine(int argc, char *argv[])
return false;
char * codetype = argv[++i];
if(!IuStringUtils::stricmp(codetype, "TableOfThumbnails"))
codeType = OutputCodeGenerator::ctTableOfThumbnails;
codeType = OutputGenerator::ctTableOfThumbnails;
else if(!IuStringUtils::stricmp(codetype, "ClickableThumbnails"))
codeType = OutputCodeGenerator::ctClickableThumbnails;
codeType = OutputGenerator::ctClickableThumbnails;
else if(!IuStringUtils::stricmp(codetype, "Images"))
codeType = OutputCodeGenerator::ctImages;
codeType = OutputGenerator::ctImages;
else if(!IuStringUtils::stricmp(codetype, "Links"))
codeType = OutputCodeGenerator::ctLinks;
codeType = OutputGenerator::ctLinks;
i++;
continue;
}
Expand Down Expand Up @@ -385,34 +386,27 @@ CUploadEngineData* getServerByName(const std::string& name) {
}

void OnUploadSessionFinished(UploadSession* session) {
using namespace OutputGenerator;
int taskCount = session->taskCount();
std::vector<UploadObject> uploadedList;
std::vector<OutputGenerator::UploadObject> uploadedList;
for (int i = 0; i < taskCount; i++) {
auto task = session->getTask(i);
UploadResult* res = task->uploadResult();
auto* fileTask = dynamic_cast<FileUploadTask*>(task.get());
if ( task->uploadSuccess() ) {
UploadObject uo;
uo.directUrl = res->directUrl;
uo.thumbUrl = res->thumbUrl;
uo.viewUrl = res->downloadUrl;
uo.deleteUrl = res->deleteUrl;
uo.serverName = task->serverName();
if ( fileTask ) {
uo.localFilePath = fileTask->getFileName();
uo.displayFileName = fileTask->getDisplayName();
}
uo.uploadFileSize = task->getDataLength();
OutputGenerator::UploadObject uo;
uo.fillFromUploadResult(res, task.get());
uploadedList.push_back(uo);
}
}
OutputCodeGenerator generator;
generator.setLang(codeLang);
generator.setType(codeType);
OutputGenerator::OutputGeneratorFactory factory;
OutputGenerator::GeneratorID gid = static_cast<OutputGenerator::GeneratorID>(codeLang);
auto generator = factory.createOutputGenerator(gid, codeType);
generator->setPreferDirectLinks(true);
//ConsoleUtils::instance()->SetCursorPos(0, taskCount + 2);
if ( !uploadedList.empty() ) {
std::cerr<<std::endl<<"Result:"<<std::endl;
std::cout<< generator.generate(uploadedList);
std::cout<< generator->generate(uploadedList);
std::cerr<<std::endl;
}
{
Expand Down
22 changes: 20 additions & 2 deletions Source/Core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,16 @@ set(SRC_LIST Network/NetworkClient.cpp
3rdpart/tinyxml.cpp
3rdpart/tinyxmlerror.cpp
3rdpart/tinyxmlparser.cpp
OutputCodeGenerator.cpp
OutputGenerator/OutputGeneratorFactory.cpp
OutputGenerator/AbstractOutputGenerator.cpp
OutputGenerator/AbstractCodeGenerator.cpp
OutputGenerator/BBCodeGenerator.cpp
OutputGenerator/HTMLGenerator.cpp
OutputGenerator/MarkdownGenerator.cpp
OutputGenerator/PlainTextGenerator.cpp
OutputGenerator/JSONGenerator.cpp
OutputGenerator/XmlTemplateList.cpp
OutputGenerator/XmlTemplateGenerator.cpp
UploadEngineList.cpp
SettingsManager.cpp
AppParams.cpp
Expand Down Expand Up @@ -101,7 +110,16 @@ set(HEADER_LIST Network/NetworkClient.h
3rdpart/tinyxml.h
3rdpart/utf8.h
3rdpart/UriParser.h
OutputCodeGenerator.h
OutputGenerator/OutputGeneratorFactory.h
OutputGenerator/AbstractOutputGenerator.h
OutputGenerator/AbstractCodeGenerator.h
OutputGenerator/BBCodeGenerator.h
OutputGenerator/HTMLGenerator.h
OutputGenerator/MarkdownGenerator.h
OutputGenerator/PlainTextGenerator.h
OutputGenerator/JSONGenerator.h
OutputGenerator/XmlTemplateList.h
OutputGenerator/XmlTemplateGenerator.h
UploadEngineList.h
SettingsManager.h
AppParams.h
Expand Down
113 changes: 0 additions & 113 deletions Source/Core/OutputCodeGenerator.cpp

This file was deleted.

40 changes: 0 additions & 40 deletions Source/Core/OutputCodeGenerator.h

This file was deleted.

Loading

0 comments on commit bf0ae8d

Please sign in to comment.