CStringA CHttpAgentListenerImpl::GetHeaderSummary(IHttpAgent* pHttpAgent, CONNID dwConnID, LPCSTR lpszSep, int iSepCount, BOOL bWithContentLength) { CStringA strSEP1; for(int i = 0; i < iSepCount; i++) strSEP1 += lpszSep; CStringA strSEP2(strSEP1); strSEP2 += lpszSep; LPCSTR SEP1 = (LPCSTR)strSEP1; LPCSTR SEP2 = (LPCSTR)strSEP2; CStringA strResult; strResult.AppendFormat("%s[Status Fields]%s", SEP1, CRLF); strResult.AppendFormat("%s%13s: %u%s", SEP2, "Status Code", pHttpAgent->GetStatusCode(dwConnID), CRLF); DWORD dwHeaderCount = 0; pHttpAgent->GetAllHeaders(dwConnID, nullptr, dwHeaderCount); strResult.AppendFormat("%s[Response Headers]%s", SEP1, CRLF); if(dwHeaderCount == 0) strResult.AppendFormat("%s(no header)%s", SEP2, CRLF); else { unique_ptr<THeader[]> headers(new THeader[dwHeaderCount]); VERIFY(pHttpAgent->GetAllHeaders(dwConnID, headers.get(), dwHeaderCount)); for(DWORD i = 0; i < dwHeaderCount; i++) strResult.AppendFormat("%s%s: %s%s", SEP2, headers[i].name, headers[i].value, CRLF); } DWORD dwCookieCount = 0; pHttpAgent->GetAllCookies(dwConnID, nullptr, dwCookieCount); strResult.AppendFormat("%s[Cookies]%s", SEP1, CRLF); if(dwCookieCount == 0) strResult.AppendFormat("%s(no cookie)%s", SEP2, CRLF); else { unique_ptr<TCookie[]> cookies(new TCookie[dwCookieCount]); VERIFY(pHttpAgent->GetAllCookies(dwConnID, cookies.get(), dwCookieCount)); for(DWORD i = 0; i < dwCookieCount; i++) strResult.AppendFormat("%s%s: %s%s", SEP2, cookies[i].name, cookies[i].value, CRLF); } CStringA strVersion; ::HttpVersionToString((EnHttpVersion)pHttpAgent->GetVersion(dwConnID), strVersion); EnHttpUpgradeType enUpgType = pHttpAgent->GetUpgradeType(dwConnID); LPCSTR lpszUpgrade = enUpgType != HUT_NONE ? "true" : "false"; LPCSTR lpszKeepAlive = pHttpAgent->IsKeepAlive(dwConnID) ? "true" : "false"; strResult.AppendFormat("%s[Basic Info]%s", SEP1, CRLF); strResult.AppendFormat("%s%13s: %s%s", SEP2, "Version", (LPCSTR)strVersion, CRLF); strResult.AppendFormat("%s%13s: %u%s", SEP2, "Status Code", pHttpAgent->GetStatusCode(dwConnID), CRLF); strResult.AppendFormat("%s%13s: %s%s", SEP2, "IsUpgrade", lpszUpgrade, CRLF); if(enUpgType != HUT_NONE) strResult.AppendFormat("%s%13s: %d%s", SEP2, "UpgradeType", enUpgType, CRLF); strResult.AppendFormat("%s%13s: %s%s", SEP2, "IsKeepAlive", lpszKeepAlive, CRLF); if(bWithContentLength) strResult.AppendFormat("%s%13s: %lld%s", SEP2, "ContentLength", pHttpAgent->GetContentLength(dwConnID), CRLF); strResult.AppendFormat("%s%13s: %s%s", SEP2, "ContentType", pHttpAgent->GetContentType(dwConnID), CRLF); return strResult; }
CStringA CHttpServerListenerImpl::GetHeaderSummary(IHttpServer* pSender, CONNID dwConnID, LPCSTR lpszSep, int iSepCount, BOOL bWithContentLength) { CStringA strSEP1; for(int i = 0; i < iSepCount; i++) strSEP1 += lpszSep; CStringA strSEP2(strSEP1); strSEP2 += lpszSep; LPCSTR SEP1 = (LPCSTR)strSEP1; LPCSTR SEP2 = (LPCSTR)strSEP2; CStringA strResult; //USHORT usUrlFieldSet = pSender->GetUrlFieldSet(dwConnID); strResult.AppendFormat("%s[URL Fields]%s", SEP1, CRLF); strResult.AppendFormat("%s%8s: %s%s", SEP2, "SCHEMA", pSender->GetUrlField(dwConnID, HUF_SCHEMA), CRLF); strResult.AppendFormat("%s%8s: %s%s", SEP2, "HOST", pSender->GetUrlField(dwConnID, HUF_HOST), CRLF); strResult.AppendFormat("%s%8s: %s%s", SEP2, "PORT", pSender->GetUrlField(dwConnID, HUF_PORT), CRLF); strResult.AppendFormat("%s%8s: %s%s", SEP2, "PATH", pSender->GetUrlField(dwConnID, HUF_PATH), CRLF); strResult.AppendFormat("%s%8s: %s%s", SEP2, "QUERY", pSender->GetUrlField(dwConnID, HUF_QUERY), CRLF); strResult.AppendFormat("%s%8s: %s%s", SEP2, "FRAGMENT", pSender->GetUrlField(dwConnID, HUF_FRAGMENT), CRLF); strResult.AppendFormat("%s%8s: %s%s", SEP2, "USERINFO", pSender->GetUrlField(dwConnID, HUF_USERINFO), CRLF); DWORD dwHeaderCount = 0; pSender->GetAllHeaders(dwConnID, nullptr, dwHeaderCount); strResult.AppendFormat("%s[Request Headers]%s", SEP1, CRLF); if(dwHeaderCount == 0) strResult.AppendFormat("%s(no header)%s", SEP2, CRLF); else { unique_ptr<THeader[]> headers(new THeader[dwHeaderCount]); VERIFY(pSender->GetAllHeaders(dwConnID, headers.get(), dwHeaderCount)); for(DWORD i = 0; i < dwHeaderCount; i++) strResult.AppendFormat("%s%s: %s%s", SEP2, headers[i].name, headers[i].value, CRLF); } DWORD dwCookieCount = 0; pSender->GetAllCookies(dwConnID, nullptr, dwCookieCount); strResult.AppendFormat("%s[Cookies]%s", SEP1, CRLF); if(dwCookieCount == 0) strResult.AppendFormat("%s(no cookie)%s", SEP2, CRLF); else { unique_ptr<TCookie[]> cookies(new TCookie[dwCookieCount]); VERIFY(pSender->GetAllCookies(dwConnID, cookies.get(), dwCookieCount)); for(DWORD i = 0; i < dwCookieCount; i++) strResult.AppendFormat("%s%s: %s%s", SEP2, cookies[i].name, cookies[i].value, CRLF); } CStringA strVersion; ::HttpVersionToString((EnHttpVersion)pSender->GetVersion(dwConnID), strVersion); EnHttpUpgradeType enUpgType = pSender->GetUpgradeType(dwConnID); LPCSTR lpszUpgrade = enUpgType != HUT_NONE ? "true" : "false"; LPCSTR lpszKeepAlive = pSender->IsKeepAlive(dwConnID) ? "true" : "false"; strResult.AppendFormat("%s[Basic Info]%s", SEP1, CRLF); strResult.AppendFormat("%s%13s: %s%s", SEP2, "Version", (LPCSTR)strVersion, CRLF); strResult.AppendFormat("%s%13s: %s%s", SEP2, "Method", pSender->GetMethod(dwConnID), CRLF); strResult.AppendFormat("%s%13s: %s%s", SEP2, "IsUpgrade", lpszUpgrade, CRLF); if(enUpgType != HUT_NONE) strResult.AppendFormat("%s%13s: %d%s", SEP2, "UpgradeType", enUpgType, CRLF); strResult.AppendFormat("%s%13s: %s%s", SEP2, "IsKeepAlive", lpszKeepAlive, CRLF); if(bWithContentLength) strResult.AppendFormat("%s%13s: %lld%s", SEP2, "ContentLength", pSender->GetContentLength(dwConnID), CRLF); strResult.AppendFormat("%s%13s: %s%s", SEP2, "ContentType", pSender->GetContentType(dwConnID), CRLF); return strResult; }