/* */ #include "MetalinkHelper.h" #include "Option.h" #include "MetalinkEntry.h" #include "MetalinkProcessorFactory.h" #include "MetalinkParserStateMachine.h" #include "Metalinker.h" #include "MetalinkProcessor.h" #include "MetalinkProcessorFactory.h" #include "prefs.h" #include "DlAbortEx.h" #include "BinaryStream.h" namespace aria2 { MetalinkHelper::MetalinkHelper() {} MetalinkHelper::~MetalinkHelper() {} std::deque > MetalinkHelper::parseAndQuery(const std::string& filename, const Option* option) { SharedHandle proc = MetalinkProcessorFactory::newInstance(); SharedHandle metalinker = proc->parseFile(filename); return query(metalinker, option); } std::deque > MetalinkHelper::parseAndQuery(const SharedHandle& binaryStream, const Option* option) { SharedHandle proc = MetalinkProcessorFactory::newInstance(); SharedHandle metalinker = proc->parseFromBinaryStream(binaryStream); return query(metalinker, option); } std::deque > MetalinkHelper::query(const SharedHandle& metalinker, const Option* option) { if(metalinker->entries.empty()) { throw new DlAbortEx("No file entry found. Probably, the metalink file is not configured properly or broken."); } std::deque > entries = metalinker->queryEntry(option->get(PREF_METALINK_VERSION), option->get(PREF_METALINK_LANGUAGE), option->get(PREF_METALINK_OS)); return entries; } } // namespace aria2