Mercurial > thymian
view server/url_breaker.cpp @ 0:a4671277546c tip
created the repository for the thymian project
| author | ferencd |
|---|---|
| date | Tue, 17 Aug 2021 11:19:54 +0200 |
| parents | |
| children |
line wrap: on
line source
#include "url_breaker.h" #include "log.h" #include <boost/tokenizer.hpp> #include <vector> url_breaker::url_breaker(const std::string &components, const std::string &url) { std::vector<std::string> tempcomps; boost::char_separator<char> sep("/"); // gather the mapping { boost::tokenizer<boost::char_separator<char>> tok(components, sep); for(boost::tokenizer<boost::char_separator<char>>::iterator beg=tok.begin(); ; ) { tempcomps.push_back(*beg); ++ beg; if(beg == tok.end()) { break; } } } // gather the varios url components { boost::tokenizer<boost::char_separator<char>> tok(url, sep); auto vecit = tempcomps.begin(); for(boost::tokenizer<boost::char_separator<char>>::iterator beg=tok.begin();; ) { comps[*vecit] = *beg; ++vecit; ++beg; if(vecit == tempcomps.end() && beg == tok.end()) { break; } if(vecit == tempcomps.end()) { log_err() << "components map" << components << "contains less keys than" << url; break; } if(beg == tok.end()) { log_err() << "components map" << components << "contains more keys than" << url; break; } } } // debug part // for(auto iterator = comps.begin(); iterator != comps.end(); ++ iterator) // { // debug() << "COMP[" << iterator->first << "] = " << iterator->second; // } } std::string url_breaker::operator [](const std::string &k) { if(comps.count(k)) { return comps[k]; } log_err() << "components map contains no value for " << k; return ""; }
