[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/ScriptProdigy/CryptsyPythonV2/master/Cryptsy.py [Back]  [Original]

import requests
import time
import hmac,hashlib
import logging
import urllib

logging.getLogger("requests").setLevel(logging.NOTSET)

class Cryptsy:
    def __init__(self, PublicKey, PrivateKey, domain="api.cryptsy.com"):
        self.domain = domain
        self.PublicKey = PublicKey
        self.PrivateKey = PrivateKey

    def _query(self, method, obj_id=None, action=None, query=[], get_method="GET"):

        route = "/api/v2/" + method
        if(obj_id != None):
            route = route + "/" + str(obj_id)
            if(action != None):
                route = route + "/" + str(action)

        query.append(('nonce', time.time()))
        queryStr = urllib.urlencode(query)
        link = 'https://' + self.domain + route
        sign = hmac.new(self.PrivateKey.encode('utf-8'),
                        queryStr,
                        hashlib.sha512).hexdigest()
        headers = {'Sign': sign, 'Key': self.PublicKey.encode('utf-8')}

        if(get_method == "PUT"):
            ret = requests.put(link,
                               params=query,
                               headers=headers,
                               verify=False)
        elif(get_method == "DELETE"):
            ret = requests.delete(link,
                                  params=query,
                                  headers=headers,
                                  verify=False)
        elif(get_method == "POST"):
            ret = requests.post(link,
                                params=query,
                                headers=headers,
                                verify=False)
        else:
            ret = requests.get(link,
                               params=query,
                               headers=headers,
                               verify=False)
        try:
            jsonRet = ret.json()
            return jsonRet
        except ValueError:
            return {"success": False,
                    "error": {"ValueError": ["Could not load json string."]}}


    # Markets
    def markets(self):
        return self._query(method="markets")

    def market(self, obj_id):
        return self._query(method="markets", obj_id=obj_id)

    def market_orderbook(self, obj_id, limit=100, otype="both", mine=False):
        return self._query(method="markets", obj_id=obj_id, action="orderbook",
            query=[("limit", limit), ("type", otype), ("mine", mine)])

    def market_tradehistory(self, obj_id, limit=100, mine=False):
        return self._query(method="markets", obj_id=obj_id, action="tradehistory",
            query=[("limit", limit), ("mine", mine)])

    def market_triggers(self, obj_id, limit=100):
        return self._query(method="markets", obj_id=obj_id, action="triggers",
            query=[("limit", limit)])

    def market_ohlc(self, obj_id, start=0, stop=time.time(),
                                            interval="minute", limit=100):
        intervals = ["minute", "hour", "day"]
        if(interval not in intervals):
            interval = intervals[0]
        return self._query(method="markets",
                           obj_id=obj_id,
                           action="ohlc",
                           query=[("start", start),
                                  ("stop", stop),
                                  ("interval", interval),
                                  ("limit", limit)])


    # Currencies
    def currencies(self):
        return self._query(method="currencies")

    def currency(self, obj_id):
        return self._query(method="currencies", obj_id=obj_id)

    def currency_markets(self, obj_id):
        return self._query(method="currencies", obj_id=obj_id, action="markets")


    # User
    def balances(self, btype="all"):
        return self._query(method="balances", query=[("type", btype)])

    def balance(self, obj_id, btype="all"):
        return self._query(method="balances", obj_id=obj_id, query=[("type", btype)])

    def deposits(self, obj_id=0, limit=100):
        if(obj_id != 0):
            return self._query(method="deposits",
                               obj_id=obj_id,
                               query=[("limit", limit)])
        return self._query(method="deposits", query=[("limit", limit)])

    def withdrawals(self, obj_id=0, limit=100):
        if(obj_id != 0):
            return self._query(method="withdrawals",
                               obj_id=obj_id,
                               query=[("limit", limit)])
        return self._query(method="withdrawals", query=[("limit", limit)])

    def addresses(self):
        return self._query(method="addresses")

    def address(self, obj_id):
        return self._query(method="addresses", obj_id=obj_id)

    def transfers(self, limit=100):
        return self._query(method="transfers", query=[("limit", limit)])


    # Orders
    def order(self, obj_id):
        return self._query(method="order", obj_id=obj_id)

    def order_create(self, marketid, quantity, ordertype, price):
        return self._query(method="order", query=[("quantity", quantity),
                                                    ("ordertype", ordertype),
                                                    ("price", price),
                                                    ("marketid", marketid)],
                                            get_method="POST")

    def order_remove(self, obj_id):
        return self._query(method="order", obj_id=obj_id, get_method="DELETE")

    def order_move(self, obj_id, price=False, quantity=False):
        if(price == False and quantity == False):
            return {"success": False,
                    "error": {"ValueError": ["Must supply price and or quantity."]}}

        query = []
        if(not isinstance(quantity, bool)):
            if(isinstance(quantity, float) or isinstance(quantity, int)):
                query.append(("quantity", quantity))

        if(not isinstance(price, bool)):
            if(isinstance(price, float) or isinstance(price, int)):
                query.append(("price", price))

        return self._query(method="order", obj_id=obj_id, action="move", 
                                            query=query, 
                                            get_method="GET")


    # Triggers
    def trigger(self, obj_id):
        return self._query(method="trigger", obj_id=obj_id)

    def trigger_create(self, marketid, ordertype, quantity,
                                   comparison, price, orderprice, expires=''):
        return self._query(method="trigger",
                           query=[("marketid", marketid),
                                  ("type", ordertype),
                                  ("quantity", quantity),
                                  ("comparison", comparison),
                                  ("price", price),
                                  ("orderprice", orderprice),
                                  ("expires", expires)],
                           get_method="POST")

    def trigger_remove(self, obj_id):
        return self._query(method="trigger", obj_id=obj_id, get_method="DELETE")


    # Converter
    def convert(self, obj_id):
        return self._query(method="converter", obj_id=obj_id)

    def convert_create(self, fromcurrency, tocurrency, sendingamount=0.0,
                            receivingamount=0.0, tradekey="", feepercent=0.0):
        return self._query(method="converter",
                           query=[("fromcurrency", fromcurrency),
                                  ("tocurrency", tocurrency),
                                  ("sendingamount", sendingamount),
                                  ("receivingamount", receivingamount),
                                  ("tradekey", tradekey),
                                  ("feepercent", feepercent)],
                           get_method="POST")

Web Proxy Viewer  |  New URL  |  Original Page