From 42095fb5cb7228f9dfb94965988029fd7f47b793 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 25 Feb 2016 13:36:37 +0000 Subject: Quotes: major code cleaning git-svn-id: http://svn.miranda-ng.org/main/trunk@16335 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Quotes/src/HTTPSession.cpp | 292 ++++++++++++------------------------- 1 file changed, 95 insertions(+), 197 deletions(-) (limited to 'plugins/Quotes/src/HTTPSession.cpp') diff --git a/plugins/Quotes/src/HTTPSession.cpp b/plugins/Quotes/src/HTTPSession.cpp index 7390b2817f..ebe919e9f9 100644 --- a/plugins/Quotes/src/HTTPSession.cpp +++ b/plugins/Quotes/src/HTTPSession.cpp @@ -10,224 +10,122 @@ public: virtual bool ReadResponce(tstring& rsResponce)const = 0; }; -namespace +int find_header(const NETLIBHTTPREQUEST* pRequest, const char* hdr) { - // class CImplMS : public CHTTPSession::CImpl - // { - // public: - // CImplMS() - // : m_hSession(::InternetOpen(_T("Dioksin"),PRE_CONFIG_INTERNET_ACCESS,NULL,INTERNET_INVALID_PORT_NUMBER,0)), - // m_hRequest(NULL) - // { - // - // } - // - // ~CImplMS() - // { - // if(m_hRequest) - // { - // ::InternetCloseHandle(m_hRequest); - // } - // - // if(m_hSession) - // { - // ::InternetCloseHandle(m_hSession); - // } - // } - // - // virtual bool OpenURL(const tstring& rsURL) - // { - // if(NULL == m_hSession) - // { - // return false; - // } - // - // if(NULL != m_hRequest) - // { - // ::InternetCloseHandle(m_hRequest); - // m_hRequest = NULL; - // } - // - // m_hRequest = ::InternetOpenUrl(m_hSession,rsURL.c_str(),NULL,0,INTERNET_FLAG_RELOAD,0); - // return NULL != m_hRequest; - // } - // - // virtual bool ReadResponce(tstring& rsResponce)const - // { - // if(NULL == m_hRequest) - // { - // return false; - // } - // - // std::string sBuffer; - // bool bResult = true; - // DWORD cbRead = 0; - // char szBuffer[1024]; - // do{ - // if(FALSE == ::InternetReadFile(m_hRequest,szBuffer,1024,&cbRead)) - // { - // bResult = false; - // break; - // } - // if (0 == cbRead) - // { - // break; // Stop. - // } - // else - // { - // sBuffer.insert(sBuffer.size(),szBuffer,cbRead); - // } - // }while(true); - // - // if(true == bResult) - // { - // USES_CONVERSION; - // rsResponce = A2CT(sBuffer.c_str()); - // } - // - // return bResult; - // } - // private: - // HINTERNET m_hSession; - // HINTERNET m_hRequest; - // }; - // - int find_header(const NETLIBHTTPREQUEST* pRequest, const char* hdr) + for (int i = 0; i < pRequest->headersCount; ++i) { - for (int i = 0; i < pRequest->headersCount; ++i) + if (0 == _stricmp(pRequest->headers[i].szName, hdr)) { - if (0 == _stricmp(pRequest->headers[i].szName, hdr)) - { - return i; - } + return i; } - - return -1; } + return -1; +} + +class CImplMI : public CHTTPSession::CImpl +{ +public: + CImplMI() {} - class CImplMI : public CHTTPSession::CImpl + static bool Init() { - public: - CImplMI() {} - - static bool Init() - { - assert(NULL == g_hNetLib); - - NETLIBUSER nlu = { 0 }; - nlu.cbSize = sizeof(nlu); - nlu.flags = NUF_OUTGOING | NUF_HTTPCONNS | NUF_NOHTTPSOPTION | NUF_TCHAR; - nlu.szSettingsModule = QUOTES_PROTOCOL_NAME; - nlu.ptszDescriptiveName = TranslateT("Quotes HTTP connections"); - g_hNetLib = reinterpret_cast(CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu)); - return (NULL != g_hNetLib); - } + assert(NULL == g_hNetLib); + + NETLIBUSER nlu = { 0 }; + nlu.cbSize = sizeof(nlu); + nlu.flags = NUF_OUTGOING | NUF_HTTPCONNS | NUF_NOHTTPSOPTION | NUF_TCHAR; + nlu.szSettingsModule = QUOTES_PROTOCOL_NAME; + nlu.ptszDescriptiveName = TranslateT("Quotes HTTP connections"); + g_hNetLib = reinterpret_cast(CallService(MS_NETLIB_REGISTERUSER, 0, (LPARAM)&nlu)); + return (NULL != g_hNetLib); + } - static bool IsValid(){ return NULL != g_hNetLib; } + static bool IsValid() { return NULL != g_hNetLib; } - virtual bool OpenURL(const tstring& rsURL) - { - m_aURL.swap(TBuffer()); + virtual bool OpenURL(const tstring& rsURL) + { + m_aURL.clear(); - std::string s = quotes_t2a(rsURL.c_str()); - const char* psz = s.c_str(); - m_aURL.insert(m_aURL.begin(), psz, psz + mir_strlen(psz) + 1); - return true; - } + std::string s = quotes_t2a(rsURL.c_str()); + const char* psz = s.c_str(); + m_aURL.insert(m_aURL.begin(), psz, psz + mir_strlen(psz) + 1); + return true; + } - virtual bool ReadResponce(tstring& rsResponce)const + virtual bool ReadResponce(tstring& rsResponce)const + { + if (true == m_aURL.empty()) + return false; + + NETLIBHTTPREQUEST nlhr = { 0 }; + nlhr.cbSize = sizeof(nlhr); + nlhr.requestType = REQUEST_GET; + nlhr.flags = NLHRF_DUMPASTEXT | NLHRF_HTTP11 | NLHRF_REDIRECT; + char* pURL = &*(m_aURL.begin()); + nlhr.szUrl = pURL; + + nlhr.headersCount = 4; + nlhr.headers = (NETLIBHTTPHEADER*)mir_alloc(sizeof(NETLIBHTTPHEADER)*nlhr.headersCount); + nlhr.headers[0].szName = "User-Agent"; + nlhr.headers[0].szValue = NETLIB_USER_AGENT; + nlhr.headers[1].szName = "Connection"; + nlhr.headers[1].szValue = "close"; + nlhr.headers[2].szName = "Cache-Control"; + nlhr.headers[2].szValue = "no-cache"; + nlhr.headers[3].szName = "Pragma"; + nlhr.headers[3].szValue = "no-cache"; + // nlhr.headers[4].szName = "Accept-Encoding"; + // nlhr.headers[4].szValue = "deflate, gzip"; + // nlhr.headers[5].szName = "Cookie"; + // nlhr.headers[5].szValue = cookie; + + bool bResult = false; + NETLIBHTTPREQUEST* pReply = NULL; { - if (true == m_aURL.empty()) - return false; - - NETLIBHTTPREQUEST nlhr = { 0 }; - nlhr.cbSize = sizeof(nlhr); - nlhr.requestType = REQUEST_GET; - nlhr.flags = NLHRF_DUMPASTEXT | NLHRF_HTTP11 | NLHRF_REDIRECT; - char* pURL = &*(m_aURL.begin()); - nlhr.szUrl = pURL; - - nlhr.headersCount = 4; - nlhr.headers = (NETLIBHTTPHEADER*)mir_alloc(sizeof(NETLIBHTTPHEADER)*nlhr.headersCount); - nlhr.headers[0].szName = "User-Agent"; - nlhr.headers[0].szValue = NETLIB_USER_AGENT; - nlhr.headers[1].szName = "Connection"; - nlhr.headers[1].szValue = "close"; - nlhr.headers[2].szName = "Cache-Control"; - nlhr.headers[2].szValue = "no-cache"; - nlhr.headers[3].szName = "Pragma"; - nlhr.headers[3].szValue = "no-cache"; - // nlhr.headers[4].szName = "Accept-Encoding"; - // nlhr.headers[4].szValue = "deflate, gzip"; - // nlhr.headers[5].szName = "Cookie"; - // nlhr.headers[5].szValue = cookie; - - bool bResult = false; - NETLIBHTTPREQUEST* pReply = NULL; - - { - mir_cslock lck(m_mx); - pReply = reinterpret_cast(CallService(MS_NETLIB_HTTPTRANSACTION, - reinterpret_cast(g_hNetLib), reinterpret_cast(&nlhr))); - } + mir_cslock lck(m_mx); + pReply = reinterpret_cast(CallService(MS_NETLIB_HTTPTRANSACTION, + reinterpret_cast(g_hNetLib), reinterpret_cast(&nlhr))); + } - if (pReply) - { - if ((200 == pReply->resultCode) && (pReply->dataLength > 0)) - { - TBuffer apBuffer; - apBuffer.insert(apBuffer.begin(), pReply->pData, pReply->pData + pReply->dataLength); - apBuffer.push_back('\0'); - - char* pResult = &*(apBuffer.begin()); - int nIndex = find_header(pReply, "Content-Type"); - if ((-1 != nIndex) && (NULL != strstr(_strlwr(pReply->headers[nIndex].szValue), "utf-8"))) - { - TCHAR* p = mir_utf8decodeT(pResult); - rsResponce = p; - mir_free(p); - } - else - { - // USES_CONVERSION; - // LPCTSTR p = A2CT(pResult); - rsResponce = quotes_a2t(pResult);//p; - } - - bResult = true; + if (pReply) { + if ((200 == pReply->resultCode) && (pReply->dataLength > 0)) { + TBuffer apBuffer; + apBuffer.insert(apBuffer.begin(), pReply->pData, pReply->pData + pReply->dataLength); + apBuffer.push_back('\0'); + + char* pResult = &*(apBuffer.begin()); + int nIndex = find_header(pReply, "Content-Type"); + if ((-1 != nIndex) && (NULL != strstr(_strlwr(pReply->headers[nIndex].szValue), "utf-8"))) { + TCHAR* p = mir_utf8decodeT(pResult); + rsResponce = p; + mir_free(p); + } + else { + // USES_CONVERSION; + // LPCTSTR p = A2CT(pResult); + rsResponce = quotes_a2t(pResult);//p; } - CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, reinterpret_cast(pReply)); + bResult = true; } - mir_free(nlhr.headers); - - return bResult; + CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, reinterpret_cast(pReply)); } - private: - static HANDLE g_hNetLib; - typedef std::vector TBuffer; - mutable TBuffer m_aURL; - mutable mir_cs m_mx; - }; - - HANDLE CImplMI::g_hNetLib = NULL; - - // CHTTPSession::CImpl* create_impl() - // { - // if(true == CImplMI::IsValid()) - // { - // return new CImplMI; - // } - // else - // { - // return new CImplMS; - // } - // } -} + mir_free(nlhr.headers); + + return bResult; + } + +private: + static HANDLE g_hNetLib; + typedef std::vector TBuffer; + mutable TBuffer m_aURL; + mutable mir_cs m_mx; +}; +HANDLE CImplMI::g_hNetLib = NULL; CHTTPSession::CHTTPSession() : m_pImpl(new CImplMI) -- cgit v1.2.3