/* */ #include "HttpHeader.h" #include "Util.h" void HttpHeader::put(const string& name, const string& value) { multimap::value_type vt(Util::toLower(name), value); table.insert(vt); } bool HttpHeader::defined(const string& name) const { return table.count(Util::toLower(name)) >= 1; } string HttpHeader::getFirst(const string& name) const { multimap::const_iterator itr = table.find(Util::toLower(name)); if(itr == table.end()) { return ""; } else { return (*itr).second; } } Strings HttpHeader::get(const string& name) const { Strings v; for(multimap::const_iterator itr = table.find(Util::toLower(name)); itr != table.end(); itr++) { v.push_back((*itr).second); } return v; } int HttpHeader::getFirstAsInt(const string& name) const { return (int)getFirstAsLLInt(name); } long long int HttpHeader::getFirstAsLLInt(const string& name) const { string value = getFirst(name); if(value == "") { return 0; } else { return strtoll(value.c_str(), NULL, 10); } } RangeHandle HttpHeader::getRange() const { string rangeStr = getFirst("Range"); if(rangeStr == "") { return 0; } pair rangePair; Util::split(rangePair, rangeStr, '/'); pair startEndBytePair; Util::split(startEndBytePair, rangePair.first, '-'); int64_t startByte = STRTOLL(startEndBytePair.first.c_str()); int64_t endByte = STRTOLL(startEndBytePair.second.c_str()); int64_t contentLength = STRTOLL(rangePair.second.c_str()); RangeHandle range = new Range(startByte, endByte, contentLength); return range; }