Ejemplo n.º 1
0
        /// <summary>
        /// Metodo responsavel por realizar acessar os metodos privados na API do
        /// Mercado Bitcoin
        /// </summary>
        /// <param name="pMethod">Funcionalidade que deseja acessar da API</param>
        /// <param name="pParameters">paramentros a serem incorporados ao parametros default</param>
        /// <returns></returns>
        internal string getRequestPrivate(MBEnumerables.MethodAPI pMethod, string pParameters)
        {
            string _sign = string.Empty;

            byte[] _body       = null;
            string _return     = string.Empty;
            string _MB_TAPI_ID = this._publicKey;

            try
            {
                this._error = "";

                //Criando o bind dos parâmentros que serão passados para o API
                //e convertendo em ByteArray para populado no corpo do Request
                //para o Server
                string _paramenterText = bindParmeters(pMethod, pParameters);
                _body = Encoding.UTF8.GetBytes(_paramenterText);

                //Chamando função que criptografará os parâmentros a serem enviados
                _sign = cripParametersSign(_paramenterText);

                //Criando Metodo de Request para o Servidor do Mercado Bitcoin
                WebRequest request = null;
                request = WebRequest.Create(_REQUEST_HOST + _REQUEST_PATH);

                request.Method = "POST";
                request.Headers.Add("tapi-id", _MB_TAPI_ID);
                request.Headers.Add("tapi-mac", _sign);
                request.ContentType   = "application/x-www-form-urlencoded";
                request.ContentLength = _body.Length;
                request.Timeout       = 360000;

                //Escrevendo parâmentros no corpo do Request para serem enviados a API
                Stream _req = request.GetRequestStream();
                _req.Write(_body, 0, _body.Length);
                _req.Close();

                //Pegando retorno do servidor
                HttpWebResponse response   = (HttpWebResponse)request.GetResponse();
                Stream          dataStream = response.GetResponseStream();

                //Convertendo Stream de retorno em texto para
                //Texto de retorno será um JSON
                using (StreamReader reader = new StreamReader(dataStream))
                    _return = reader.ReadToEnd();

                //Liberando objetos para o Coletor de Lixo
                dataStream.Close();
                dataStream.Dispose();
                response.Close();
                response.Dispose();
            }
            catch (Exception ex)
            {
                this._error = ex.Message;
                _return     = "";
            }

            return(_return);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Overload do Metodo getRequestPrivate sem a necessidade dos parametros customizados
 /// </summary>
 /// <param name="pMethod"></param>
 /// <returns></returns>
 internal string getRequestPrivate(MBEnumerables.MethodAPI pMethod)
 {
     return(getRequestPrivate(pMethod, ""));
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Metodo responsavel por montar os parâmetros que seram enviados ao servidor
        /// via POST
        /// </summary>
        /// <param name="pMethod">Função que deseja acessar na API</param>
        /// <param name="pParameters">Parametros a serem incorporado nos paramentro
        /// montado pela função bind</param>
        /// <returns>Paramtros no formato a serem evniados para a API do MercadoBitcoin</returns>
        private string bindParmeters(MBEnumerables.MethodAPI pMethod, string pParameters)
        {
            string _parameters = string.Empty;
            string _method     = string.Empty;
            string _time;
            string _bodyText = string.Empty;

            try
            {
                switch (pMethod)
                {
                case MBEnumerables.MethodAPI.GetInfo:
                    _method = "get_account_info";
                    break;

                case MBEnumerables.MethodAPI.ListOrderBook:
                    _method = "list_orderbook";
                    break;

                case MBEnumerables.MethodAPI.OrderList:
                    _method = "list_orders";
                    break;

                case MBEnumerables.MethodAPI.Buy:
                    _method = "place_buy_order";
                    break;

                case MBEnumerables.MethodAPI.Sell:
                    _method = "place_sell_order";
                    break;

                case MBEnumerables.MethodAPI.Market_Buy:
                    _method = "place_market_buy_order";
                    break;

                case MBEnumerables.MethodAPI.Market_Sell:
                    _method = "place_market_sell_order";
                    break;

                case MBEnumerables.MethodAPI.CancelOrder:
                    _method = "cancel_order";
                    break;

                case MBEnumerables.MethodAPI.MyOrders:
                    _method = "get_order";
                    break;
                }

                //Calcula a hora que está sendo feito o post para ser validado
                //no servidor da API do Mercado Bitcoin para não ter
                TimeSpan _t = (DateTime.UtcNow - new DateTime(1970, 1, 1));
                _time = Convert.ToString((int)_t.TotalSeconds);

                _bodyText   = "tapi_method={0}&tapi_nonce={1}{2}";
                _bodyText   = string.Format(_bodyText, _method, _time, pParameters);
                _parameters = _bodyText;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }

            return(_parameters);
        }