📄 httpcommon-inl.h
字号:
#ifndef UTILS_BASE_HTTPCOMMON_INL_H_#define UTILS_BASE_HTTPCOMMON_INL_H_#include "common.h"#include "httpcommon.h"namespace utils_base {///////////////////////////////////////////////////////////////////////////////// Url///////////////////////////////////////////////////////////////////////////////template<class CTYPE>Url<CTYPE>::Url(const string& url) { const CTYPE* raw_url = url.c_str(); if (ascnicmp(raw_url, "http://", 7) == 0) { raw_url += 7; m_secure = false; } else if (ascnicmp(raw_url, "https://", 8) == 0) { raw_url += 8; m_secure = true; } else { return; } m_port = UrlDefaultPort(m_secure); const CTYPE* colon = ::strchr(raw_url, static_cast<CTYPE>(':')); const CTYPE* slash = ::strchr(raw_url, static_cast<CTYPE>('/')); if (!colon && !slash) { m_server = url; // TODO: rethink this slash m_path.append(1, static_cast<CTYPE>('/')); } else { const CTYPE* ptr; if (colon == 0) { ptr = slash; } else if (slash == 0) { ptr = colon; } else { ptr = _min(colon, slash); } m_server.assign(raw_url, ptr - raw_url); if (ptr == colon) { CTYPE* tmp = 0; m_port = static_cast<uint16>(::strtoul(ptr + 1, &tmp, 10)); ptr = tmp; } const CTYPE* query = ::strchr(ptr, static_cast<CTYPE>('?')); if (!query) { m_path.assign(ptr); } else { m_path.assign(ptr, query - ptr); m_query.assign(query); } } ASSERT(m_path.empty() || (m_path[0] == static_cast<CTYPE>('/'))); ASSERT(m_query.empty() || (m_query[0] == static_cast<CTYPE>('?')));}template<class CTYPE>typename Traits<CTYPE>::string Url<CTYPE>::full_path() { string full_path(m_path); full_path.append(m_query); return full_path;}template<class CTYPE>typename Traits<CTYPE>::string Url<CTYPE>::url() { CTYPE protocol[9]; asccpyn(protocol, ARRAY_SIZE(protocol), m_secure ? "https://" : "http://"); string url(protocol); url.append(m_server); if (m_port != UrlDefaultPort(m_secure)) { CTYPE format[5], port[32]; asccpyn(format, ARRAY_SIZE(format), ":%hu"); sprintfn(port, ARRAY_SIZE(port), format, m_port); url.append(port); } url.append(m_path); url.append(m_query); return url;}///////////////////////////////////////////////////////////////////////////////} // namespace utils_base#endif // UTILS_BASE_HTTPCOMMON_INL_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -