/* */ #include "ContentTypeRequestGroupCriteria.h" #include #include "RequestGroup.h" #include "Util.h" #include "FileEntry.h" #include "DownloadContext.h" namespace aria2 { template bool tailMatch (InputIterator first, InputIterator last, const std::string& target) { for(; first != last; ++first) { if(Util::endsWith(target, *first)) { return true; } } return false; } bool ContentTypeRequestGroupCriteria::match (const RequestGroup* requestGroup) const { if(requestGroup->getDownloadContext()->getFileEntries().size() != 1) { return false; } if(tailMatch(_extensions.begin(), _extensions.end(), requestGroup->getFirstFilePath())) { return true; } else { return std::find(_contentTypes.begin(), _contentTypes.end(), requestGroup->getDownloadContext()->getFirstFileEntry()-> getContentType()) != _contentTypes.end(); } } } // namespace aria2