Esempio n. 1
0
        public HttpResponse <TResponse> SubmitRequest <TResponse>(string serviceUri, HttpVerbEnum httpVerb, HttpContentTypeEnum contentType, NameValueCollection header)
        {
            TResponse responseObject          = this.DeserializeObject <TResponse>(MockRawResponse, contentType);
            HttpResponse <TResponse> response = new HttpResponse <TResponse>(responseObject, MockRawResponse, MockStatusCode);

            return(response);
        }
Esempio n. 2
0
 public RestClient(string endpoint, HttpVerbEnum method, string postData)
 {
     EndPoint    = endpoint;
     Method      = method;
     ContentType = "text/xml";
     PostData    = postData;
 }
Esempio n. 3
0
        public HttpResponse <TResponse> SubmitRequest <TResponse>(string serviceUri, HttpVerbEnum httpVerb, HttpContentTypeEnum contentType, NameValueCollection header)
        {
            string    MockResponse            = "{\"ErrorReport\": null,  \"InternalTime\": 137,  \"MerchantKey\": \"F2A1F485-CFD4-49F5-8862-0EBC438AE923\",  \"RequestKey\": \"857a5a07-ff3c-46e3-946e-452e25f149eb\",  \"BoletoTransactionResultCollection\": [],  \"BuyerKey\": \"00000000-0000-0000-0000-000000000000\",  \"CreditCardTransactionResultCollection\": [    {      \"AcquirerMessage\": \"Simulator|Transação de simulação autorizada com sucesso\",      \"AcquirerName\": \"Simulator\",      \"AcquirerReturnCode\": \"0\",      \"AffiliationCode\": \"000000000\",      \"AmountInCents\": 10000,      \"AuthorizationCode\": \"168147\",      \"AuthorizedAmountInCents\": 10000,      \"CapturedAmountInCents\": 10000,      \"CapturedDate\": \"2015-12-04T19:51:11\",      \"CreditCard\": {        \"CreditCardBrand\": \"Visa\",        \"InstantBuyKey\": \"3b3b5b62-6660-428d-905e-96f49d46ae28\",        \"IsExpiredCreditCard\": false,        \"MaskedCreditCardNumber\": \"411111****1111\"      },      \"CreditCardOperation\": \"AuthAndCapture\",      \"CreditCardTransactionStatus\": \"Captured\",      \"DueDate\": null,      \"ExternalTime\": 0,      \"PaymentMethodName\": \"Simulator\",      \"RefundedAmountInCents\": null,      \"Success\": true,      \"TransactionIdentifier\": \"246844\",      \"TransactionKey\": \"20ba0520-7d09-44f8-8fbc-e4329e2b18d5\",      \"TransactionKeyToAcquirer\": \"20ba05207d0944f8\",      \"TransactionReference\": \"1c65eaf7-df3c-4c7f-af63-f90fb6200996\",      \"UniqueSequentialNumber\": \"636606\",      \"VoidedAmountInCents\": null    }  ],  \"OrderResult\": {    \"CreateDate\": \"2015-12-04T19:51:11\",    \"OrderKey\": \"219d7581-78e2-4aa9-b708-b7c585780bfc\",    \"OrderReference\": \"NúmeroDoPedido\"  }}";
            TResponse responseObject          = this.DeserializeObject <TResponse>(MockResponse, contentType);
            HttpResponse <TResponse> response = new HttpResponse <TResponse>(responseObject, MockResponse, System.Net.HttpStatusCode.Created);

            return(response);
        }
Esempio n. 4
0
 /// <summary>
 /// Chamada Async do HttoWebRequest
 /// </summary>
 /// <param name="dataToSend"></param>
 /// <param name="httpVerbEnum"></param>
 /// <param name="httpContentTypeEnum"></param>
 /// <param name="serviceEndpoint"></param>
 /// <param name="headerData"></param>
 /// <param name="allowInvalidCertificate"></param>
 public void SendHttpWebRequestAsync(string dataToSend, HttpVerbEnum httpVerbEnum, HttpContentTypeEnum httpContentTypeEnum, string serviceEndpoint, NameValueCollection headerData, bool allowInvalidCertificate = false)
 {
     Task.Factory.StartNew(() =>
     {
         bool ignoreResponse = true;
         SendHttpWebRequest(dataToSend, httpVerbEnum, httpContentTypeEnum, serviceEndpoint, headerData, allowInvalidCertificate, ignoreResponse);
     });
 }
        /// <summary>
        /// Envia uma requisição para o gateway
        /// </summary>
        /// <typeparam name="TResponse">Tipo de resposta do gateway</typeparam>
        /// <param name="serviceUri">Url do serviço do gateway</param>
        /// <param name="httpVerb">HttpMethod utilizado na chamada ao serviço</param>
        /// <param name="contentType">Formato da resposta (XML ou JSON)</param>
        /// <param name="header">Cabeçalho da requisição</param>
        /// <returns></returns>
        public HttpResponse <TResponse> SubmitRequest <TResponse>(string serviceUri, HttpVerbEnum httpVerb, HttpContentTypeEnum contentType, NameValueCollection header)
        {
            Uri uri = new Uri(serviceUri);

            // Envia o request.
            HttpResponse <TResponse> response = this.SendHttpWebRequest <TResponse>(httpVerb, contentType, uri.ToString(), header);

            return(response);
        }
Esempio n. 6
0
        private HttpResponse <GetInstantBuyDataResponse> GetInstantBuyDataImplementation(Guid key, string identifierName)
        {
            string actionName = string.Format("/{0}{1}", identifierName, key.ToString());

            HttpVerbEnum httpVerb = HttpVerbEnum.Get;

            NameValueCollection headers = this.GetHeaders();

            headers.Add("MerchantKey", this.MerchantKey.ToString());

            return(this.HttpUtility.SubmitRequest <GetInstantBuyDataResponse>(string.Concat(this.HostUri, this.ResourceName, actionName), httpVerb, HttpContentTypeEnum.Json, headers));
        }
Esempio n. 7
0
        public HttpResponse <DeleteInstantBuyDataResponse> DeleteCreditCard(Guid instantBuyKey)
        {
            string actionName = string.Format("/{0}", instantBuyKey.ToString());

            HttpVerbEnum httpVerb = HttpVerbEnum.Delete;

            NameValueCollection headers = this.GetHeaders();

            headers.Add("MerchantKey", this.MerchantKey.ToString());

            return(this.HttpUtility.SubmitRequest <DeleteInstantBuyDataResponse>(string.Concat(this.HostUri, this.ResourceName, actionName), httpVerb, HttpContentTypeEnum.Json, headers));
        }
        /// <summary>
        /// Implementação da chamada do método Query
        /// </summary>
        /// <param name="identifierName">Nome do identificador utilizado para realizar a consulta</param>
        /// <param name="value">Identificador utilizado para realizar a consulta</param>
        /// <returns></returns>
        private HttpResponse <QuerySaleResponse> QueryImplementation(string identifierName, string value)
        {
            string actionName = string.Format("/Query/{0}={1}", identifierName, value);

            HttpVerbEnum httpVerb = HttpVerbEnum.Get;

            NameValueCollection headers = this.GetHeaders();

            headers.Add("MerchantKey", this.MerchantKey.ToString());

            return(this.HttpUtility.SubmitRequest <QuerySaleResponse>(string.Concat(this.HostUri, this.ResourceName, actionName), httpVerb, HttpContentTypeEnum.Json, headers));
        }
        public HttpResponse <GetBuyerData> GetBuyer(Guid buyerKey)
        {
            string actionName = string.Format("/{0}", buyerKey.ToString());

            HttpVerbEnum httpVerb = HttpVerbEnum.Get;

            NameValueCollection headers = this.GetHeaders();

            headers.Add("MerchantKey", this.MerchantKey.ToString());

            return(this.HttpUtility.SubmitRequest <GetBuyerData>(string.Concat(this.HostUri, this.ResourceName, actionName), httpVerb, HttpContentTypeEnum.Json, headers));
        }
Esempio n. 10
0
        public HttpResponse <CreateInstantBuyDataResponse> CreateCreditCard(CreateInstantBuyDataRequest createInstantBuyDataRequest)
        {
            HttpVerbEnum httpVerb = HttpVerbEnum.Post;

            NameValueCollection headers = this.GetHeaders();

            headers.Add("MerchantKey", this.MerchantKey.ToString());

            return
                (this.HttpUtility.SubmitRequest <CreateInstantBuyDataRequest, CreateInstantBuyDataResponse>(createInstantBuyDataRequest,
                                                                                                            string.Concat(this.HostUri, this.ResourceName), httpVerb, HttpContentTypeEnum.Json, headers));
        }
        /// <summary>
        /// Cria uma requisição http e retorna um objeto do tipo especificado em TResponse.
        /// </summary>
        /// <typeparam name="TResponse"></typeparam>
        /// <param name="httpVerbEnum"></param>
        /// <param name="serviceEndpoint"></param>
        /// <param name="headerData"></param>
        /// <param name="allowInvalidCertificate"></param>
        /// <param name="ignoreResponse"></param>
        /// <returns></returns>
        private HttpResponse <TResponse> SendHttpWebRequest <TResponse>(HttpVerbEnum httpVerbEnum, HttpContentTypeEnum httpContentType, string serviceEndpoint, NameValueCollection headerData = null)
        {
            // Se o header é nulo, instancia um novo.
            headerData = headerData ?? new NameValueCollection();

            // Envia o request.
            HttpResponse httpResponse = this.SendHttpWebRequest("", httpVerbEnum, httpContentType, serviceEndpoint, headerData);

            // Deserializa a resposta.
            TResponse responseObject = this.DeserializeObject <TResponse>(httpResponse.RawResponse, httpContentType);

            HttpResponse <TResponse> response = new HttpResponse <TResponse>(responseObject, httpResponse.RawResponse, httpResponse.HttpStatusCode);

            return(response);
        }
        private HttpResponse <GetInstantBuyDataResponse> GetInstantBuyDataImplementation(Guid key, string identifierName)
        {
            if (string.IsNullOrWhiteSpace(identifierName) == false)
            {
                identifierName = string.Concat("/", identifierName);
            }

            string actionName = string.Format("/{0}{1}", key.ToString(), identifierName);

            HttpVerbEnum httpVerb = HttpVerbEnum.Get;

            NameValueCollection header = new NameValueCollection();

            header.Add("MerchantKey", this.MerchantKey.ToString());

            return(this.HttpUtility.SubmitRequest <GetInstantBuyDataResponse>(string.Concat(this.HostUri, this.ResourceName, actionName), httpVerb, this.HttpContentType, header));
        }
        /// <summary>
        /// Envio de HttpWebRequest
        /// </summary>
        /// <param name="dataToSend"></param>
        /// <param name="httpVerbEnum"></param>
        /// <param name="httpContentTypeEnum"></param>
        /// <param name="serviceEndpoint"></param>
        /// <param name="headerData"></param>
        /// <param name="allowInvalidCertificate"></param>
        /// <param name="ignoreResponse"></param>
        /// <returns></returns>
        private HttpResponse SendHttpWebRequest(string dataToSend, HttpVerbEnum httpVerbEnum, HttpContentTypeEnum httpContentTypeEnum, string serviceEndpoint, NameValueCollection headerData, bool allowInvalidCertificate = false)
        {
            if (string.IsNullOrWhiteSpace(serviceEndpoint))
            {
                throw new ArgumentException("serviceEndpoint");
            }

            // Cria um objeto webRequest para referenciando a Url do serviço informado
            Uri serviceUri = new Uri(serviceEndpoint);

            HttpWebRequest httpWebRequest = WebRequest.Create(serviceUri) as HttpWebRequest;

            httpWebRequest.Method      = httpVerbEnum.ToString().ToUpper();
            httpWebRequest.ContentType = httpContentTypeEnum == HttpContentTypeEnum.Json ? "application/json" : "text/xml";
            httpWebRequest.Accept      = httpContentTypeEnum == HttpContentTypeEnum.Json ? "application/json" : "text/xml";

            if (headerData != null && headerData.AllKeys.Contains("User-Agent") == true)
            {
                httpWebRequest.UserAgent = headerData["User-Agent"];
                headerData.Remove("User-Agent");
            }

            // Verifica se certificados inválidos devem ser aceitos.
            if (allowInvalidCertificate == true)
            {
                ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); };
            }

            // Verifica se deverão ser enviados dados/chaves de cabeçalho
            if (headerData != null && headerData.Count > 0)
            {
                // Insere cada chave enviado no cabeçalho da requisição
                foreach (string key in headerData.Keys)
                {
                    httpWebRequest.Headers.Add(key, headerData[key].ToString());
                }
            }

            if (string.IsNullOrWhiteSpace(dataToSend) == false)
            {
                // Cria um array de bytes dos dados que serão postados
                byte[] byteData = UTF8Encoding.UTF8.GetBytes(dataToSend);

                // Configura o tamanho dos dados que serão enviados
                httpWebRequest.ContentLength = byteData.Length;

                // Escreve os dados na stream do WebRequest
                using (Stream stream = httpWebRequest.GetRequestStream()) {
                    stream.Write(byteData, 0, byteData.Length);
                }
            }

            string         rawResponse = string.Empty;
            HttpStatusCode statusCode  = HttpStatusCode.OK;

            try {
                // Dispara a requisição e recebe o resultado da mesma
                using (HttpWebResponse response = httpWebRequest.GetResponse() as HttpWebResponse) {
                    // Recupera a stream com a resposta da solicitação
                    StreamReader streamReader = new StreamReader(response.GetResponseStream());
                    rawResponse = streamReader.ReadToEnd();
                    statusCode  = response.StatusCode;
                }
            }
            catch (WebException ex) {
                HttpWebResponse response = (HttpWebResponse)ex.Response;
                StreamReader    test     = new StreamReader(response.GetResponseStream());
                rawResponse = test.ReadToEnd();
                statusCode  = response.StatusCode;
            }

            return(new HttpResponse(rawResponse, statusCode));
        }
Esempio n. 14
0
 public HttpResponse SendHttpWebRequest(string dataToSend, HttpVerbEnum httpVerbEnum, string contentType, string accept, string serviceEndpoint, NameValueCollection headerData)
 {
     throw new NotImplementedException();
 }
Esempio n. 15
0
        /// <summary>
        /// Envio de HttpWebRequest
        /// </summary>
        /// <param name="dataToSend"></param>
        /// <param name="httpVerbEnum"></param>
        /// <param name="httpContentTypeEnum"></param>
        /// <param name="serviceEndpoint"></param>
        /// <param name="headerData"></param>
        /// <param name="allowInvalidCertificate"></param>
        /// <param name="ignoreResponse"></param>
        /// <returns></returns>
        public HttpResponse SendHttpWebRequest(string dataToSend, HttpVerbEnum httpVerbEnum, string contentType, string accept, string serviceEndpoint, NameValueCollection headerData)
        {
            if (string.IsNullOrWhiteSpace(serviceEndpoint))
            {
                throw new ArgumentException("serviceEndpoint");
            }

            // Cria um objeto webRequest para referenciando a Url do serviço informado
            var serviceUri = new Uri(serviceEndpoint);

            if (WebRequest.Create(serviceUri) is HttpWebRequest httpWebRequest)
            {
                httpWebRequest.Method = httpVerbEnum.ToString().ToUpper();
                if (string.IsNullOrEmpty(contentType) == false)
                {
                    httpWebRequest.ContentType = contentType;
                }

                if (string.IsNullOrEmpty(accept) == false)
                {
                    httpWebRequest.Accept = accept;
                }

                if (headerData != null && headerData.AllKeys.Contains("User-Agent") == true)
                {
                    httpWebRequest.UserAgent = headerData["User-Agent"];
                    headerData.Remove("User-Agent");
                }

                // Verifica se deverão ser enviados dados/chaves de cabeçalho
                if (headerData != null && headerData.Count > 0)
                {
                    // Insere cada chave enviado no cabeçalho da requisição
                    foreach (string key in headerData.Keys)
                    {
                        httpWebRequest.Headers.Add(key, headerData[key].ToString());
                    }
                }

                if (string.IsNullOrWhiteSpace(dataToSend) == false)
                {
                    // Cria um array de bytes dos dados que serão postados
                    byte[] byteData = Encoding.UTF8.GetBytes(dataToSend);

                    // Configura o tamanho dos dados que serão enviados
                    httpWebRequest.ContentLength = byteData.Length;

                    // Escreve os dados na stream do WebRequest
                    using (Stream stream = httpWebRequest.GetRequestStream())
                    {
                        stream.Write(byteData, 0, byteData.Length);
                    }
                }

                string rawResponse = null;

                HttpStatusCode statusCode = HttpStatusCode.OK;

                try
                {
                    // Dispara a requisição e recebe o resultado da mesma
                    using (var response = httpWebRequest.GetResponse() as HttpWebResponse)
                    {
                        // Recupera a stream com a resposta da solicitação
                        if (response != null)
                        {
                            var streamReader = new StreamReader(response.GetResponseStream() ?? throw new InvalidOperationException());
                            rawResponse = streamReader.ReadToEnd();
                        }

                        if (response != null)
                        {
                            statusCode = response.StatusCode;
                        }
                    }
                }
                catch (WebException ex)
                {
                    if (ex.Response == null)
                    {
                        throw;
                    }

                    var response = (HttpWebResponse)ex.Response;
                    var test     = new StreamReader(response.GetResponseStream() ?? throw new InvalidOperationException());
                    rawResponse = test.ReadToEnd();
                    statusCode  = response.StatusCode;
                }

                return(new HttpResponse(rawResponse, statusCode));
            }

            throw new ArgumentException("serviceEndpoint");
        }
Esempio n. 16
0
        /// <summary>
        /// Envio de HttpWebRequest
        /// </summary>
        /// <param name="dataToSend"></param>
        /// <param name="httpVerbEnum"></param>
        /// <param name="httpContentTypeEnum"></param>
        /// <param name="serviceEndpoint"></param>
        /// <param name="headerData"></param>
        /// <param name="allowInvalidCertificate"></param>
        /// <param name="ignoreResponse"></param>
        /// <returns></returns>
        public string SendHttpWebRequest(string dataToSend, HttpVerbEnum httpVerbEnum, HttpContentTypeEnum httpContentTypeEnum, string serviceEndpoint, NameValueCollection headerData, bool allowInvalidCertificate = false, bool ignoreResponse = false)
        {
            if (string.IsNullOrWhiteSpace(serviceEndpoint))
            {
                throw new ArgumentException("serviceEndpoint");
            }

            // Cria um objeto webRequest para referenciando a Url do serviço informado
            Uri serviceUri = new Uri(serviceEndpoint);

            HttpWebRequest httpWebRequest = WebRequest.Create(serviceUri) as HttpWebRequest;

            httpWebRequest.Method        = httpVerbEnum.ToString().ToUpper();
            httpWebRequest.ContentType   = httpContentTypeEnum == HttpContentTypeEnum.Json ? "application/json" : "text/xml";
            httpWebRequest.Accept        = httpContentTypeEnum == HttpContentTypeEnum.Json ? "application/json" : "text/xml";
            httpWebRequest.ContentLength = 0;

            // Verifica se certificados inválidos devem ser aceitos.
            ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => allowInvalidCertificate);

            // Verifica se deverão ser enviados dados/chaves de cabeçalho
            if (headerData.Count > 0)
            {
                // Insere cada chave enviado no cabeçalho da requisição
                foreach (string key in headerData.Keys)
                {
                    httpWebRequest.Headers.Add(key, headerData[key].ToString());
                }
            }

            if (string.IsNullOrWhiteSpace(dataToSend) == false)
            {
                // Cria um array de bytes dos dados que serão postados
                byte[] byteData = UTF8Encoding.UTF8.GetBytes(dataToSend);

                // Configura o tamanho dos dados que serão enviados
                httpWebRequest.ContentLength = byteData.Length;

                // Escreve os dados na stream do WebRequest
                using (Stream stream = httpWebRequest.GetRequestStream())
                {
                    stream.Write(byteData, 0, byteData.Length);
                }
            }

            string returnString = string.Empty;

            try
            {
                // Dispara a requisição e recebe o resultado da mesma
                using (HttpWebResponse response = httpWebRequest.GetResponse() as HttpWebResponse)
                {
                    if (ignoreResponse == false)
                    {
                        // Recupera a stream com a resposta da solicitação
                        StreamReader streamReader = new StreamReader(response.GetResponseStream());
                        returnString = streamReader.ReadToEnd();
                    }
                }
            }
            catch (WebException ex)
            {
                throw ex;
            }

            return(returnString);
        }
Esempio n. 17
0
 public RestClient(string endPoint, HttpVerbEnum method, string contentType)
 {
     EndPoint    = endPoint;
     Method      = method;
     ContentType = contentType;
 }
Esempio n. 18
0
        public HttpResponse <TResponse, TRequest> SubmitRequest <TRequest, TResponse>(TRequest request, string serviceUri, HttpVerbEnum httpVerb, HttpContentTypeEnum contentType, NameValueCollection header)
        {
            string    rawRequest     = this.SerializeObject <TRequest>(request, contentType);
            TResponse responseObject = this.DeserializeObject <TResponse>(MockRawResponse, contentType);
            HttpResponse <TResponse>           response_ = new HttpResponse <TResponse>(responseObject, MockRawResponse, System.Net.HttpStatusCode.Created);
            HttpResponse <TResponse, TRequest> response  = new HttpResponse <TResponse, TRequest>(request, rawRequest, responseObject, MockRawResponse, MockStatusCode);

            return(response);
        }