/* */ #include "ContentTypeRequestGroupCriteria.h" #include #include "RequestGroup.h" #include "util.h" #include "FileEntry.h" #include "DownloadContext.h" namespace aria2 { namespace { template bool tailMatch (InputIterator first, InputIterator last, const std::string& target) { for(; first != last; ++first) { if(util::endsWith(target, *first)) { return true; } } return false; } } // namespace 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