From 960bb20ccd3c375bcfc8b642fcbe89feaf143b22 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Mon, 2 Jul 2012 08:36:04 +0000 Subject: only add PasteIt, not adapted git-svn-id: http://svn.miranda-ng.org/main/trunk@712 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/PasteIt/PasteToWeb1.cpp | 393 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 393 insertions(+) create mode 100644 plugins/PasteIt/PasteToWeb1.cpp (limited to 'plugins/PasteIt/PasteToWeb1.cpp') diff --git a/plugins/PasteIt/PasteToWeb1.cpp b/plugins/PasteIt/PasteToWeb1.cpp new file mode 100644 index 0000000000..bbdc2e1ba5 --- /dev/null +++ b/plugins/PasteIt/PasteToWeb1.cpp @@ -0,0 +1,393 @@ +/* +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 . +*/ + +#include "StdAfx.h" +#include "PasteToWeb1.h" +#include "Options.h" + +PasteFormat PasteToWeb1::formats[] = +{ + {L"4cs", L"4CS"}, + {L"6502acme", L"6502 ACME Cross Assembler"}, + {L"6502kickass", L"6502 Kick Assembler"}, + {L"6502tasm", L"6502 TASM/64TASS"}, + {L"abap", L"ABAP"}, + {L"actionscript", L"ActionScript"}, + {L"actionscript3", L"ActionScript 3"}, + {L"ada", L"Ada"}, + {L"algol68", L"ALGOL 68"}, + {L"apache", L"Apache Log"}, + {L"applescript", L"AppleScript"}, + {L"apt_sources", L"APT Sources"}, + {L"asm", L"ASM (NASM)"}, + {L"asp", L"ASP"}, + {L"autoconf", L"autoconf"}, + {L"autohotkey", L"Autohotkey"}, + {L"autoit", L"AutoIt"}, + {L"avisynth", L"Avisynth"}, + {L"awk", L"Awk"}, + {L"bascomavr", L"BASCOM AVR"}, + {L"bash", L"Bash"}, + {L"basic4gl", L"Basic4GL"}, + {L"bibtex", L"BibTeX"}, + {L"blitzbasic", L"Blitz Basic"}, + {L"bnf", L"BNF"}, + {L"boo", L"BOO"}, + {L"bf", L"BrainFuck"}, + {L"c", L"C"}, + {L"c_mac", L"C for Macs"}, + {L"cil", L"C Intermediate Language"}, + {L"csharp", L"C#"}, + {L"cpp", L"C++"}, + {L"cpp-qt", L"C++ (with QT extensions)"}, + {L"c_loadrunner", L"C: Loadrunner"}, + {L"caddcl", L"CAD DCL"}, + {L"cadlisp", L"CAD Lisp"}, + {L"cfdg", L"CFDG"}, + {L"chaiscript", L"ChaiScript"}, + {L"clojure", L"Clojure"}, + {L"klonec", L"Clone C"}, + {L"klonecpp", L"Clone C++"}, + {L"cmake", L"CMake"}, + {L"cobol", L"COBOL"}, + {L"coffeescript", L"CoffeeScript"}, + {L"cfm", L"ColdFusion"}, + {L"css", L"CSS"}, + {L"cuesheet", L"Cuesheet"}, + {L"d", L"D"}, + {L"dcs", L"DCS"}, + {L"delphi", L"Delphi"}, + {L"oxygene", L"Delphi Prism (Oxygene)"}, + {L"diff", L"Diff"}, + {L"div", L"DIV"}, + {L"dos", L"DOS"}, + {L"dot", L"DOT"}, + {L"e", L"E"}, + {L"ecmascript", L"ECMAScript"}, + {L"eiffel", L"Eiffel"}, + {L"email", L"Email"}, + {L"epc", L"EPC"}, + {L"erlang", L"Erlang"}, + {L"fsharp", L"F#"}, + {L"falcon", L"Falcon"}, + {L"fo", L"FO Language"}, + {L"f1", L"Formula One"}, + {L"fortran", L"Fortran"}, + {L"freebasic", L"FreeBasic"}, + {L"gambas", L"GAMBAS"}, + {L"gml", L"Game Maker"}, + {L"gdb", L"GDB"}, + {L"genero", L"Genero"}, + {L"genie", L"Genie"}, + {L"gettext", L"GetText"}, + {L"go", L"Go"}, + {L"groovy", L"Groovy"}, + {L"gwbasic", L"GwBasic"}, + {L"haskell", L"Haskell"}, + {L"hicest", L"HicEst"}, + {L"hq9plus", L"HQ9 Plus"}, + {L"html4strict", L"HTML"}, + {L"html5", L"HTML 5"}, + {L"icon", L"Icon"}, + {L"idl", L"IDL"}, + {L"ini", L"INI file"}, + {L"inno", L"Inno Script"}, + {L"intercal", L"INTERCAL"}, + {L"io", L"IO"}, + {L"j", L"J"}, + {L"java", L"Java"}, + {L"java5", L"Java 5"}, + {L"javascript", L"JavaScript"}, + {L"jquery", L"jQuery"}, + {L"kixtart", L"KiXtart"}, + {L"latex", L"Latex"}, + {L"lb", L"Liberty BASIC"}, + {L"lsl2", L"Linden Scripting"}, + {L"lisp", L"Lisp"}, + {L"llvm", L"LLVM"}, + {L"locobasic", L"Loco Basic"}, + {L"logtalk", L"Logtalk"}, + {L"lolcode", L"LOL Code"}, + {L"lotusformulas", L"Lotus Formulas"}, + {L"lotusscript", L"Lotus Script"}, + {L"lscript", L"LScript"}, + {L"lua", L"Lua"}, + {L"m68k", L"M68000 Assembler"}, + {L"magiksf", L"MagikSF"}, + {L"make", L"Make"}, + {L"mapbasic", L"MapBasic"}, + {L"matlab", L"MatLab"}, + {L"mirc", L"mIRC"}, + {L"mmix", L"MIX Assembler"}, + {L"modula2", L"Modula 2"}, + {L"modula3", L"Modula 3"}, + {L"68000devpac", L"Motorola 68000 HiSoft Dev"}, + {L"mpasm", L"MPASM"}, + {L"mxml", L"MXML"}, + {L"mysql", L"MySQL"}, + {L"newlisp", L"newLISP"}, + {L"text", L"None"}, + {L"nsis", L"NullSoft Installer"}, + {L"oberon2", L"Oberon 2"}, + {L"objeck", L"Objeck Programming Langua"}, + {L"objc", L"Objective C"}, + {L"ocaml-brief", L"OCalm Brief"}, + {L"ocaml", L"OCaml"}, + {L"pf", L"OpenBSD PACKET FILTER"}, + {L"glsl", L"OpenGL Shading"}, + {L"oobas", L"Openoffice BASIC"}, + {L"oracle11", L"Oracle 11"}, + {L"oracle8", L"Oracle 8"}, + {L"oz", L"Oz"}, + {L"pascal", L"Pascal"}, + {L"pawn", L"PAWN"}, + {L"pcre", L"PCRE"}, + {L"per", L"Per"}, + {L"perl", L"Perl"}, + {L"perl6", L"Perl 6"}, + {L"php", L"PHP"}, + {L"php-brief", L"PHP Brief"}, + {L"pic16", L"Pic 16"}, + {L"pike", L"Pike"}, + {L"pixelbender", L"Pixel Bender"}, + {L"plsql", L"PL/SQL"}, + {L"postgresql", L"PostgreSQL"}, + {L"povray", L"POV-Ray"}, + {L"powershell", L"Power Shell"}, + {L"powerbuilder", L"PowerBuilder"}, + {L"proftpd", L"ProFTPd"}, + {L"progress", L"Progress"}, + {L"prolog", L"Prolog"}, + {L"properties", L"Properties"}, + {L"providex", L"ProvideX"}, + {L"purebasic", L"PureBasic"}, + {L"pycon", L"PyCon"}, + {L"python", L"Python"}, + {L"q", L"q/kdb+"}, + {L"qbasic", L"QBasic"}, + {L"rsplus", L"R"}, + {L"rails", L"Rails"}, + {L"rebol", L"REBOL"}, + {L"reg", L"REG"}, + {L"robots", L"Robots"}, + {L"rpmspec", L"RPM Spec"}, + {L"ruby", L"Ruby"}, + {L"gnuplot", L"Ruby Gnuplot"}, + {L"sas", L"SAS"}, + {L"scala", L"Scala"}, + {L"scheme", L"Scheme"}, + {L"scilab", L"Scilab"}, + {L"sdlbasic", L"SdlBasic"}, + {L"smalltalk", L"Smalltalk"}, + {L"smarty", L"Smarty"}, + {L"sql", L"SQL"}, + {L"systemverilog", L"SystemVerilog"}, + {L"tsql", L"T-SQL"}, + {L"tcl", L"TCL"}, + {L"teraterm", L"Tera Term"}, + {L"thinbasic", L"thinBasic"}, + {L"typoscript", L"TypoScript"}, + {L"unicon", L"Unicon"}, + {L"uscript", L"UnrealScript"}, + {L"vala", L"Vala"}, + {L"vbnet", L"VB.NET"}, + {L"verilog", L"VeriLog"}, + {L"vhdl", L"VHDL"}, + {L"vim", L"VIM"}, + {L"visualprolog", L"Visual Pro Log"}, + {L"vb", L"VisualBasic"}, + {L"visualfoxpro", L"VisualFoxPro"}, + {L"whitespace", L"WhiteSpace"}, + {L"whois", L"WHOIS"}, + {L"winbatch", L"Win Batch"}, + {L"xbasic", L"XBasic"}, + {L"xml", L"XML"}, + {L"xorg_conf", L"Xorg Config"}, + {L"xpp", L"XPP"}, + {L"yaml", L"YAML"}, + {L"z80", L"Z80 Assembler"}, + {L"zxbasic", L"ZXBasic"}, +}; + +PasteFormat PasteToWeb1::defFormats[] = +{ + {L"text", L"None"}, + {L"xml", L"XML"}, + {L"html4strict", L"HTML"}, + {L"html5", L"HTML 5"}, + {L"javascript", L"JavaScript"}, + {L"php", L"PHP"}, + {L"c", L"C"}, + {L"csharp", L"C#"}, + {L"cpp", L"C++"}, + {L"java", L"Java"}, + {L"java5", L"Java 5"}, + {L"ini", L"INI file"}, + {L"css", L"CSS"}, + {L"sql", L"SQL"}, + {L"asm", L"ASM (NASM)"}, + {L"asp", L"ASP"}, + {L"caddcl", L"CAD DCL"}, + {L"cadlisp", L"CAD Lisp"}, + {L"delphi", L"Delphi"}, + {L"diff", L"Diff"}, + {L"jquery", L"jQuery"}, + {L"latex", L"Latex"}, + {L"pascal", L"Pascal"}, + {L"perl", L"Perl"}, + {L"perl6", L"Perl 6"}, + {L"python", L"Python"}, + {L"vbnet", L"VB.NET"}, + {L"vb", L"VisualBasic"}, +}; + +PasteToWeb1::PasteToWeb1() +{ +} + + +PasteToWeb1::~PasteToWeb1() +{ +} + +void PasteToWeb1::SendToServer(std::wstring str, std::wstring fileName, std::wstring format) +{ + std::map headers; + headers["Content-Type"] = "application/x-www-form-urlencoded"; + std::wstring content = _T("api_option=paste&api_paste_private="); + content += Options::instance->webOptions[pageIndex]->publicPaste ? _T("0") : _T("1"); + content += _T("&api_paste_expire_date="); + content += Options::instance->webOptions[pageIndex]->combo1.empty() ? _T("1M") : Options::instance->webOptions[pageIndex]->combo1; + content += _T("&api_dev_key=dcba056bf9cc71729fdad76dddcb0dcd&api_paste_format="); + content += format; + if(!Options::instance->webOptions[pageIndex]->pastebinUserKey.empty()) + { + content += _T("&api_user_key="); + content += Options::instance->webOptions[pageIndex]->pastebinUserKey; + } + content += _T("&api_paste_code="); + for(std::wstring::iterator it = str.begin(); it != str.end(); ++it) + { + if(*it == L'%') + { + content += L"%25"; + } + else if(*it ==L'&') + { + content += L"%26"; + } + else if(*it ==L'=') + { + content += L"%3D"; + } + else + { + content += *it; + } + } + + wchar_t* resCont = SendToWeb("http://pastebin.com/api/api_post.php", headers, content); + if(resCont != NULL) + { + if(memcmp(L"Bad API request, ", resCont, 17 * sizeof(wchar_t)) == 0) + { + _stprintf_s(bufErr, 1024, TranslateT("Error during sending text to web page: %s"), resCont + 17); + error = bufErr; + } + else + { + char* s = mir_u2a_cp(resCont, CP_ACP); + strcpy_s(szFileLink, 256, s); + mir_free(s); + } + mir_free(resCont); + } + else + { + error = TranslateT("Error during sending text to web page"); + } +} + +std::wstring PasteToWeb1::GetUserKey(std::wstring& user, std::wstring& password) +{ + std::map headers; + headers["Content-Type"] = "application/x-www-form-urlencoded"; + std::wstring content = _T("api_user_name="); + content += user; + content += _T("&api_user_password="); + content += password; + content += _T("&api_dev_key=dcba056bf9cc71729fdad76dddcb0dcd"); + wchar_t* resCont = SendToWeb("http://pastebin.com/api/api_login.php", headers, content); + std::wstring toRet; + if(resCont != NULL) + { + if(memcmp(L"Bad API request, ", resCont, 17 * sizeof(wchar_t)) == 0) + { + _stprintf_s(bufErr, 1024, TranslateT("Error during getting user key from web page: %s"), resCont + 17); + MessageBox(NULL, bufErr, TranslateT("Error"), MB_OK | MB_ICONERROR); + } + else + toRet = resCont; + mir_free(resCont); + } + + return toRet; +} + +std::list PasteToWeb1::GetFormats() +{ + int count = sizeof(formats) / sizeof(formats[0]); + std::list ret(formats, formats + count); + + return ret; +} + +std::list PasteToWeb1::GetDefFormats() +{ + int count = sizeof(defFormats) / sizeof(defFormats[0]); + std::list ret(defFormats, defFormats + count); + + return ret; +} + +void PasteToWeb1::ConfigureSettings() +{ + Options::instance->webOptions[pageIndex]->isSendFileName = false; + Options::instance->webOptions[pageIndex]->isPublicPaste = true; + Options::instance->webOptions[pageIndex]->isCombo1 = true; + Options::instance->webOptions[pageIndex]->combo1Desc = TranslateT("Paste expire date"); + PasteFormat pf; + pf.id = L"N"; + pf.name = TranslateT("Never"); + Options::instance->webOptions[pageIndex]->combo1Values.push_back(pf); + pf.id = L"10M"; + pf.name = TranslateT("10 minutes"); + Options::instance->webOptions[pageIndex]->combo1Values.push_back(pf); + pf.id = L"1H"; + pf.name = TranslateT("1 hour"); + Options::instance->webOptions[pageIndex]->combo1Values.push_back(pf); + pf.id = L"1D"; + pf.name = TranslateT("1 day"); + Options::instance->webOptions[pageIndex]->combo1Values.push_back(pf); + pf.id = L"1M"; + pf.name = TranslateT("1 month"); + Options::instance->webOptions[pageIndex]->combo1Values.push_back(pf); + Options::instance->webOptions[pageIndex]->combo1 = L"1M"; + Options::instance->webOptions[pageIndex]->isPastebin = true; +} + -- cgit v1.2.3