refactor
This commit is contained in:
parent
ef8783d82d
commit
8e40c71563
@ -94,12 +94,12 @@ std::wstring Translate(const std::wstring& text, std::wstring translateFrom, std
|
|||||||
{
|
{
|
||||||
wchar_t escapedChar[4] = {};
|
wchar_t escapedChar[4] = {};
|
||||||
swprintf_s<4>(escapedChar, L"%%%02X", (int)ch);
|
swprintf_s<4>(escapedChar, L"%%%02X", (int)ch);
|
||||||
escapedText = escapedChar;
|
escapedText += escapedChar;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::wstring location = translateFrom.empty()
|
std::wstring location = translateFrom.empty()
|
||||||
? L"/tdetect?text=" + text
|
? L"/tdetect?text=" + escapedText
|
||||||
: L"/ttranslate?from=" + translateFrom + L"&to=" + translateTo + L"&text=" + text;
|
: L"/ttranslate?from=" + translateFrom + L"&to=" + translateTo + L"&text=" + escapedText;
|
||||||
std::wstring translation;
|
std::wstring translation;
|
||||||
if (internet)
|
if (internet)
|
||||||
if (InternetHandle connection = WinHttpConnect(internet, L"www.bing.com", INTERNET_DEFAULT_HTTPS_PORT, 0))
|
if (InternetHandle connection = WinHttpConnect(internet, L"www.bing.com", INTERNET_DEFAULT_HTTPS_PORT, 0))
|
||||||
@ -107,6 +107,7 @@ std::wstring Translate(const std::wstring& text, std::wstring translateFrom, std
|
|||||||
if (WinHttpSendRequest(request, NULL, 0, NULL, 0, 0, NULL))
|
if (WinHttpSendRequest(request, NULL, 0, NULL, 0, 0, NULL))
|
||||||
if (auto response = ReceiveHttpRequest(request))
|
if (auto response = ReceiveHttpRequest(request))
|
||||||
if (translateFrom.empty()) translation = response.value();
|
if (translateFrom.empty()) translation = response.value();
|
||||||
|
// Response formatted as JSON: translation starts with :" and ends with "}
|
||||||
else if (std::wsmatch results; std::regex_search(response.value(), results, std::wregex(L":\"(.+)\"\\}"))) translation = results[1];
|
else if (std::wsmatch results; std::regex_search(response.value(), results, std::wregex(L":\"(.+)\"\\}"))) translation = results[1];
|
||||||
|
|
||||||
Escape(translation);
|
Escape(translation);
|
||||||
|
@ -151,14 +151,21 @@ bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo)
|
|||||||
if (InternetHandle request = WinHttpOpenRequest(connection, L"GET", GetTranslationUri(sentence, TKK).c_str(), NULL, NULL, NULL, WINHTTP_FLAG_ESCAPE_DISABLE | WINHTTP_FLAG_SECURE))
|
if (InternetHandle request = WinHttpOpenRequest(connection, L"GET", GetTranslationUri(sentence, TKK).c_str(), NULL, NULL, NULL, WINHTTP_FLAG_ESCAPE_DISABLE | WINHTTP_FLAG_SECURE))
|
||||||
if (WinHttpSendRequest(request, NULL, 0, NULL, 0, 0, NULL))
|
if (WinHttpSendRequest(request, NULL, 0, NULL, 0, 0, NULL))
|
||||||
if (auto response = ReceiveHttpRequest(request))
|
if (auto response = ReceiveHttpRequest(request))
|
||||||
|
// Response formatted as JSON: starts with [[["
|
||||||
if (response.value()[0] == L'[')
|
if (response.value()[0] == L'[')
|
||||||
|
{
|
||||||
for (std::wsmatch results; std::regex_search(response.value(), results, std::wregex(L"\\[\"(.*?)\",[n\"]")); response = results.suffix())
|
for (std::wsmatch results; std::regex_search(response.value(), results, std::wregex(L"\\[\"(.*?)\",[n\"]")); response = results.suffix())
|
||||||
translation += std::wstring(results[1]) + L" ";
|
translation += std::wstring(results[1]) + L" ";
|
||||||
else std::tie(translation, TKK) = std::tuple(TRANSLATION_ERROR + (L" (TKK=" + std::to_wstring(TKK) + L")"), 0);
|
Escape(translation);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
translation = TRANSLATION_ERROR + (L" (TKK=" + std::to_wstring(TKK) + L")");
|
||||||
|
TKK = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (translation.empty()) translation = TRANSLATION_ERROR;
|
if (translation.empty()) translation = TRANSLATION_ERROR;
|
||||||
Escape(translation);
|
|
||||||
sentence += L"\n" + translation;
|
sentence += L"\n" + translation;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user