SHARE
TWEET

C++/CLI Library for BTC-E.com Trade API

a guest Aug 5th, 2012 16,291 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ------------------------------------------------
  2. //
  3. // C++/CLI Library for BTC-E.com Trade API
  4. // https://btc-e.com/api/documentation
  5. //
  6. // Version : 1.0
  7. // Compiler: VS2012 RC
  8. // Author  : PoorGirl
  9. //
  10. // Donation BTC: 1PuH16ozFyTxs5zHCfJciL24BU2ihYZ1s5
  11. // Donation LTC: LRhVLjKBmyyK88XRbrq1jv3Y5Wc5fghT3K
  12. //
  13. // Credits: DmT
  14. //
  15. // ------------------------------------------------
  16.  
  17.  
  18. using namespace System;
  19. using namespace System::Text;
  20. using namespace System::Net;
  21. using namespace System::Security::Cryptography;
  22. using namespace System::IO;
  23.  
  24. namespace BTCEBOT
  25. {
  26.         static ref class btc_e_api
  27.         {
  28.                 private: static String^ key;
  29.                 private: static String^ secret;
  30.                
  31.                 public: static void Init(String^ api_key, String^ api_secret)
  32.                 {
  33.                         key    = api_key;
  34.                         secret = api_secret;
  35.                 }
  36.                
  37.                 private: static String^ GetInfo()
  38.                 {      
  39.                         return "method=getInfo";
  40.                 }
  41.  
  42.                 private: static String^ GetNonce()
  43.                 {      
  44.                         TimeSpan t1 = (DateTime::UtcNow - DateTime(1970, 1, 1, 0, 0, 0));
  45.                         Int64^ UnixTimeNow = safe_cast<System::Int64>(t1.TotalSeconds);
  46.            
  47.                         return "nonce=" + UnixTimeNow;
  48.                 }
  49.        
  50.                 public: static String^ Check()
  51.                 {
  52.                         String^ dataStr = GetInfo() + "&" + GetNonce();        
  53.                         array<Byte>^ data = Encoding::ASCII->GetBytes(dataStr);
  54.                         WebRequest^ request = WebRequest::Create("https://btc-e.com/tapi");
  55.            
  56.                         try
  57.                         {
  58.                                 request->Method = "POST";
  59.                                 request->Timeout = 10000;
  60.                                 request->ContentType = "application/x-www-form-urlencoded";
  61.                                 request->ContentLength = dataStr->Length;
  62.                                 request->Headers->Add("Key", key);
  63.                        
  64.                                 // MAKE SIGN
  65.                                 System::Text::ASCIIEncoding^ encoding = gcnew System::Text::ASCIIEncoding();
  66.                                 array<Byte>^ keyByte = encoding->GetBytes(secret);
  67.                                 HMACSHA512^  hmacsha512 = gcnew HMACSHA512(keyByte);
  68.                                 array<Byte>^ messageBytes = encoding->GetBytes(dataStr);
  69.                                 array<Byte>^ hashmessage = hmacsha512->ComputeHash(messageBytes);
  70.  
  71.                                 String^ s2 = BitConverter::ToString(hashmessage);              
  72.                                 s2 = s2->Replace("-", "");
  73.                                 s2 = s2->ToLower();
  74.  
  75.                                 request->Headers->Add("Sign", s2);
  76.                                
  77.                                 // PREPARE POST
  78.                                 Stream^ reqStream = request->GetRequestStream();
  79.                                 reqStream->Write(data, 0, data->Length);
  80.                                 reqStream->Close();
  81.  
  82.                                 // SEND POST
  83.                                 WebResponse^ response = request->GetResponse();
  84.                                 Stream^ resStream = response->GetResponseStream();
  85.                                 StreamReader^ resStreamReader = gcnew StreamReader(resStream);
  86.                                 String^ result = resStreamReader->ReadToEnd();
  87.  
  88.                                 return result;
  89.                         }
  90.                         catch(Exception^ e)
  91.                         {
  92.                                 delete e; // POST FAILED
  93.                         }              
  94.                 }      
  95.         };
  96. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top