Advertisement
Guest User

Cryptopia API

a guest
Jul 18th, 2017
1,537
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. #!/usr/bin/env python
  2. import urllib
  3. import urllib2
  4. import json
  5. import time
  6. import hmac
  7. import hashlib
  8. import base64
  9. import sys
  10. import requests
  11.  
  12.  
  13. class cryptopia(object):
  14.  
  15. def __init__(self, key, secret):
  16. self.key = key
  17. self.secret = secret
  18. self.public = ['GetCurrencies', 'GetTradePairs', 'GetMarkets', 'GetMarket', 'GetMarketHistory', 'GetMarketOrders', 'GetMarketOrderGroups']
  19. self.private = ['GetBalance', 'GetDepositAddress', 'GetOpenOrders', 'GetTradeHistory', 'GetTransactions', 'SubmitTrade', 'CancelTrade', 'SubmitTip', 'SubmitWithdraw', 'SubmitTransfer']
  20.  
  21.  
  22. def api_query(self, method, values, req = None ):
  23. if not req:
  24. req = {}
  25. #print "def api_query( method = " + method + ", req = " + str( req ) + " ):"
  26. time.sleep(1)
  27. if method in self.public:
  28. url = 'https://www.cryptopia.co.nz/api/'
  29. elif method in self.private:
  30. url = 'https://www.cryptopia.co.nz/api/'
  31. else:
  32. return 'Call Not Identified - Something Went Wrong.'
  33.  
  34. url += method + '?' + urllib.urlencode(values)
  35.  
  36. if method not in self.public:
  37. url = "https://www.cryptopia.co.nz/Api/" + method
  38. nonce = str( int( time.time() ) )
  39. post_data = json.dumps( req );
  40. m = hashlib.md5()
  41. m.update(post_data)
  42. requestContentBase64String = base64.b64encode(m.digest())
  43. signature = self.key + "POST" + urllib.quote_plus( url ).lower() + nonce + requestContentBase64String
  44. hmacsignature = base64.b64encode(hmac.new(base64.b64decode( self.secret ), signature, hashlib.sha256).digest())
  45. header_value = "amx " + self.key + ":" + hmacsignature + ":" + nonce
  46. headers = { 'Authorization': header_value, 'Content-Type':'application/json; charset=utf-8' }
  47. r = requests.post( url, data = post_data, headers = headers )
  48. response = r.text
  49.  
  50. print "( Response ): " + response
  51. return response.replace("false","False").replace("true","True").replace('":null','":None' )
  52.  
  53.  
  54. def GetCurrencies(self):
  55. return self.api_query('GetCurrencies')
  56.  
  57. def GetTradePairs(self):
  58. return self.api_query('GetTradePairs')
  59.  
  60. def GetMarkets(self):
  61. return self.api_query('GetMarkets')
  62.  
  63. def GetMarket(self, market):
  64. return self.api_query('GetMarket', {'market': market})
  65.  
  66. def GetMarketHistory(self, market):
  67. return self.api_query('GetMarketHistory', {'market': market})
  68.  
  69. def GetMarketOrders(self, market):
  70. return self.api_query('GetMarketOrders', {'market': market})
  71.  
  72. def GetMarketOrderGroups(self, markets):
  73. return self.api_query('GetMarketOrderGroups', {'markets': markets})
  74.  
  75. def GetBalance(self, Currency):
  76. return self.api_query('GetBalance', {'Currency': Currency})
  77.  
  78. def GetOpenOrders(self, Market):
  79. return self.api_query('GetOpenOrders', {'Market': Market})
  80.  
  81. def GetDepositAddress(self, Currency):
  82. return self.api_query('GetDepositAddress', {'Currency': Currency})
  83.  
  84. def GetOpenOrders(self, Market):
  85. return self.api_query('GetOpenOrders', {'Market': Market})
  86.  
  87. def GetTradeHistory(self, Market):
  88. return self.api_query('GetTradeHistory', {'Market': Market})
  89.  
  90. def GetTransactions(self, Type):
  91. return self.api_query('GetTransactions', {'Type': Type})
  92.  
  93. def SubmitTrade(self, Market, Type, Rate, Amount):
  94. return self.api_query('SubmitTrade', {'Market': Market, 'Type': Type, 'Rate': Rate, 'Amount': Amount})
  95.  
  96. def CancelTrade(self, Type, OrderID, TradePairID):
  97. return self.api_query('CancelTrade', {'Type': Type, 'OrderID': OrderID, 'TradePairID': TradePairID})
  98.  
  99. def SubmitTip(self, Currency, ActiveUsers, Amount):
  100. return self.api_query('SubmitTip', {'Currency': Currency, 'ActiveUsers': ActiveUsers, 'Amount': Amount})
  101.  
  102. def SubmitWithdraw(self, Currency, Address, Amount):
  103. return self.api_query('SubmitWithdraw', {'Currency': Currency, 'Address': Address, 'Amount': Amount})
  104.  
  105. def SubmitTransfer(self, Currency, Username, Amount):
  106. return self.api_query('SubmitTransfer', {'Currency': Currency, 'Username': Username, 'Amount': Amount})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement