summaryrefslogtreecommitdiff
path: root/plugins/PasteIt/src/PasteToWeb2.cpp
diff options
context:
space:
mode:
authorVadim Dashevskiy <watcherhd@gmail.com>2012-07-23 12:21:37 +0000
committerVadim Dashevskiy <watcherhd@gmail.com>2012-07-23 12:21:37 +0000
commit7a8e3055b162b2572152ed951ebcefd60182edbc (patch)
tree415d5bc98ce406df04f8e9b19de99a10e1c275a1 /plugins/PasteIt/src/PasteToWeb2.cpp
parent177c84716db384c8be095219c58d0a68f87101fe (diff)
PasteIt, PopUp, ProfileManager: changed folder structure
git-svn-id: http://svn.miranda-ng.org/main/trunk@1117 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/PasteIt/src/PasteToWeb2.cpp')
-rw-r--r--plugins/PasteIt/src/PasteToWeb2.cpp247
1 files changed, 247 insertions, 0 deletions
diff --git a/plugins/PasteIt/src/PasteToWeb2.cpp b/plugins/PasteIt/src/PasteToWeb2.cpp
new file mode 100644
index 0000000000..c2edbddeef
--- /dev/null
+++ b/plugins/PasteIt/src/PasteToWeb2.cpp
@@ -0,0 +1,247 @@
+/*
+Paste It plugin
+Copyright (C) 2011 Krzysztof Kral
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation version 2
+of the License.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "StdAfx.h"
+#include "PasteToWeb2.h"
+
+PasteFormat PasteToWeb2::defFormats[] =
+{
+ {L"text", L"Text"},
+ {L"xml", L"XML"},
+ {L"html", L"HTML"},
+ {L"js", L"JavaScript"},
+ {L"php", L"PHP"},
+ {L"c", L"C"},
+ {L"csharp", L"C#"},
+ {L"cpp", L"C++"},
+ {L"java", L"Java"},
+ {L"ini", L"INI"},
+ {L"css", L"CSS"},
+ {L"sql", L"SQL"},
+ {L"nasm", L"NASM"},
+ {L"delphi", L"Delphi"},
+ {L"diff", L"Diff"},
+ {L"tex", L"TeX"},
+ {L"perl", L"Perl"},
+ {L"python", L"Python"},
+ {L"vb.net", L"VB.net"}
+};
+
+PasteToWeb2::PasteToWeb2()
+{
+}
+
+
+PasteToWeb2::~PasteToWeb2()
+{
+}
+
+void PasteToWeb2::SendToServer(std::wstring str, std::wstring fileName, std::wstring format)
+{
+ std::map<std::string, std::string> headers;
+ headers["Content-Type"] = "text/xml";
+ std::wstring content = _T("<?xml version=\"1.0\"?>\r\n<methodCall><methodName>create_paste</methodName><params><param><value>");
+ if(fileName == L"")
+ {
+ content += format;
+ content += _T("</value></param><param><value>");
+ }
+ else
+ {
+ content += _T("</value></param><param><value>");
+ }
+ for(std::wstring::iterator it = str.begin(); it != str.end(); ++it)
+ {
+ if(*it == L'&')
+ {
+ content += L"&amp;";
+ }
+ else if(*it ==L'<')
+ {
+ content += L"&lt;";
+ }
+ else
+ {
+ content += *it;
+ }
+ }
+
+ content += _T("</value></param><param><value></value></param><param><value>");
+ if(fileName != L"")
+ {
+ for(std::wstring::iterator it = fileName.begin(); it != fileName.end(); ++it)
+ {
+ if(*it == L'&')
+ {
+ content += L"&amp;";
+ }
+ else if(*it ==L'<')
+ {
+ content += L"&lt;";
+ }
+ else
+ {
+ content += *it;
+ }
+ }
+ }
+ content += _T("</value></param><param><value></value></param><param><value><double>1.5</double></value></param></params></methodCall>");
+
+ wchar_t* resCont = SendToWeb("http://wklej.to/api/", headers, content);
+ error = TranslateT("Error during sending text to web page");
+ if(resCont != NULL)
+ {
+ HXML hXml = xi.parseString(resCont, NULL, _T("methodResponse"));
+ if(hXml != NULL)
+ {
+ HXML node = xi.getChildByPath(hXml, _T("params/param/value/array/data/value/int"), 0);
+ if(node != NULL && !_tcscmp(xi.getText(node), _T("1")))
+ {
+ node = xi.getChildByPath(hXml, _T("params/param/value/array/data"), 0);
+ if(node != NULL)
+ {
+ node = xi.getNthChild(node, _T("value"), 1);
+ if(node != NULL)
+ {
+ node = xi.getChildByPath(node, _T("string"), 0);
+ if(node != NULL)
+ {
+ char* s = mir_t2a_cp(xi.getText(node), CP_ACP);
+ strcpy_s(szFileLink, 256, s);
+ mir_free(s);
+ error = NULL;
+ }
+ }
+ }
+ }
+ xi.destroyNode(hXml);
+ }
+ mir_free(resCont);
+ }
+}
+
+std::list<PasteFormat> PasteToWeb2::GetFormats()
+{
+ std::list<PasteFormat> ret;
+
+ std::map<std::string, std::string> headers;
+ headers["Content-Type"] = "text/xml";
+ std::wstring content = _T("<?xml version=\"1.0\"?>\r\n<methodCall><methodName>types</methodName></methodCall>");
+
+ wchar_t* resCont = SendToWeb("http://wklej.to/api/", headers, content);
+ if(resCont != NULL)
+ {
+ HXML hXml = xi.parseString(resCont, NULL, _T("methodResponse"));
+ if(hXml != NULL)
+ {
+ HXML node = xi.getChildByPath(hXml, _T("params/param/value/array/data/value/int"), 0);
+ if(node != NULL && !_tcscmp(xi.getText(node), _T("1")))
+ {
+ node = xi.getChildByPath(hXml, _T("params/param/value/array/data"), 0);
+ if(node != NULL)
+ {
+ node = xi.getNthChild(node, _T("value"), 1);
+ if(node != NULL)
+ {
+ node = xi.getChildByPath(node, _T("string"), 0);
+ if(node != NULL)
+ {
+ std::wstring str = xi.getText(node);
+ std::wstring::size_type pos = str.find(L'\n');
+ if(pos < str.length())
+ {
+ str = str.substr(pos + 1);
+ }
+ pos = str.find(L'\n');
+ if(pos < str.length())
+ {
+ str = str.substr(pos + 1);
+ }
+ pos = str.find(L'\n');
+ while(pos < str.length())
+ {
+ std::wstring line = str.substr(0, pos);
+ std::wstring::size_type sep = line.find(L':');
+ if(sep < line.length())
+ {
+ PasteFormat pf;
+ pf.name = line.substr(0, sep);
+ std::wstring::size_type sep2 = line.find(L',');
+ if(sep2 < line.length())
+ {
+ pf.id = line.substr(sep + 2, sep2 - sep - 2);
+ }
+ else
+ {
+ pf.id = line.substr(sep + 2);
+ }
+ ret.push_back(pf);
+ }
+
+ if(pos < str.length() - 1)
+ {
+ str = str.substr(pos + 1);
+ }
+ else
+ {
+ str = L"";
+ }
+ pos = str.find(L'\n');
+ }
+ {
+ std::wstring line = str;
+ std::wstring::size_type sep = line.find(L':');
+ if(sep < line.length())
+ {
+ PasteFormat pf;
+ pf.name = line.substr(0, sep);
+ std::wstring::size_type sep2 = line.find(L',');
+ if(sep2 < line.length())
+ {
+ pf.id = line.substr(sep + 2, sep2 - sep - 2);
+ }
+ else
+ {
+ pf.id = line.substr(sep + 2);
+ }
+ ret.push_back(pf);
+ }
+ }
+ }
+ }
+ }
+ }
+ xi.destroyNode(hXml);
+ }
+ mir_free(resCont);
+ }
+
+ return ret;
+}
+
+std::list<PasteFormat> PasteToWeb2::GetDefFormats()
+{
+ int count = sizeof(defFormats) / sizeof(defFormats[0]);
+ std::list<PasteFormat> ret(defFormats, defFormats + count);
+
+ return ret;
+}
+
+void PasteToWeb2::ConfigureSettings()
+{
+}