iugu / iugu-net

Iugu for C#
16 stars 20 forks source link

Versão .NET #42

Closed tiago-alves closed 7 years ago

tiago-alves commented 8 years ago

Observei que a biblioteca está sendo compilada com a versão 4.6.1 do .NET. Acredito que seria interessante compilar com uma versão anterior, 4.5 talvez, que o pessoal que trabalha em projetos com versão mais antigas do framework possam utilizar.

rscouto commented 8 years ago

Thiago entendo sua colocação, mas não é objetivo deste projeto dar suporte a versões antigas do .Net, inclusive o projeto se perceber é compatível com .Net Core o que permite ser usados em ambiente Linux. Quanto a usar em projetos inferior ao .Net 4.6, fica a cargo do usuário baixar o projeto e instalar.

tiago-alves commented 8 years ago

Obrigado pela resposta Rodrigo. Entendo sua colocação, apesar de discordar. Compilar uma biblioteca com uma versão inferior do .NET, não está ligado a "dar suporte a versões antigas do .NET". A versão de linkagem está relacionado à versão mais antiga que possui os recursos para executar aquele código. A versão 4.6.2, por exemplo, já está disponível. Caso o projeto seja atualizado, todos os desenvolvedores que possuem um projeto hoje em 4.6.1 e fizerem atualização via Nuget, terão um build quebrado. Mas, obrigado pela atenção e parabéns pelo projeto. Abs

TiagoGouvea commented 8 years ago

Aproveitando a issue já aberta... estou tendo um tanto de dificuldade aqui em adequar algumas versões, desde quinta-feira agarrado nisso. Se puderem me ajudar serei eternamente grato.

O que acontece é que a biblioteca depende do System.Net.Http 4.1.0.0, ao incluir esta dependência no meu projeto WebApi 2.0 passo a ter uma variedade de problemas, de conflitos de versões e tal. Principalmente os dois abaixo:

copia de captura de tela 2016-10-03 as 10 47 11

copia de captura de tela 2016-10-03 as 10 41 08

Sei que não diretamente ligado ao Iugu, mas se puderem me ajudar, certamente outras pessoas passaram ou passarão por isso na integração.

Buscando sobre estes erros, os dois, parecem ser relacionados a versão 4.1.0.0 do Http...

Ok. Consigo forçar a barra para funcionar, incluindo na minha WebApi um bindingRedirect ou coisa do tipo. Mas ai oque acontece é que o iugu para o processamento nos métodos SendRequestAsync e SetContent. Na linha await SetContent(data, requestMessage); ele chama SetContent, que acontece sem problemas, mas em seguida não continua para a linha do SendAsync.

Conseguem me dar alguma luz?

rscouto commented 8 years ago

Tentou instalar a dependencia?

Install-Package System.Security.Cryptography.X509Certificates

Provavelmente isso resolva o problema, caso resolva avisa pra que force essa dependência no nuspec

TiagoGouvea commented 8 years ago

Sim sim @rscouto, já fiz isso. Por fim consigo fazer rodar o projeto, mas ai para naquela questão do SetContent, de onde o código não avança.. fica só esperando, não chega ao SendAsync. Alguma ideia?

rscouto commented 8 years ago

Há sim @TiagoGouvea,

Isso provavelmente aconteceu porque vovê está recriando o HttpRequestMessage, nas versões mais atuais do Asp.Net isso provoca essa exception. Tive esse problema a algum tempo atrás. Segue abaixo a solução:

Muda disso (Assim funcionava nas versões passadas, só um exemplo)

var SEU_OBJETO_HTTP_MESSAGE = new HttpRequestMessage(HttpMethod.Post, "URL_QUALQUER");
// Toda sua logica de criação
var content = await Task.FromResult(JsonConvert.SerializeObject(OBJETO_DO_POST)).ConfigureAwait(false);
requestMessage.Content = new StringContent(content, Encoding.UTF8, "application/json");
var response = await client.SendAsync(SEU_OBJETO_HTTP_MESSAGE).ConfigureAwait(false);

Para Isso por exemplo

// Lembre-se de adicionar os HEADERS e tudo mais no HTTPCLIENT e não no HTTPMESSAGE como algumas pessoas faziam antes.
 using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("URL_QUALQUER");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    var jsonContent = await Task.FromResult(JsonConvert.SerializeObject(OBJETO_DO_POST)).ConfigureAwait(false);
    var stringContent = new StringContent(jsonContent, Encoding.UTF8, "application/json");
    var response = await client.PostAsync("URL_POST", stringContent, new CancellationTokenSource(TimeSpan.FromSeconds(15)).Token).ConfigureAwait(false);
}
TiagoGouvea commented 8 years ago

Eu estava tentando manter o código do iugu inalterado, mas apenas alterando como você sugeriu ele veio a funcionar.

Mas mostra que existe realmente "pouco" interesse de compatibilidade. O core ainda não está no ponto de eu criar apis com ele e botar em produção.

Grato @rscouto pelas informações.

rscouto commented 8 years ago

Caramba @TiagoGouvea achei que já tivesse alterado isso no client! Achei que o problema estivesse dando apenas no seu lado, sorry por não ter entendido corretamente. Vou lançar uma nova versão do client com isso hoje ou amanhã faço isso.

Grato pelo feedback

TiagoGouvea commented 8 years ago

Tranquilo @rscouto, com estes ajustes no método como sugeriu ficou certinho e já mandei algumas centenas de títulos hoje pela api testando a integração.

O que pega é que http 4.1.0.0 na WebApi atual (sem ser core), não funciona mesmo.

Grato pela atenção.

rscouto commented 8 years ago

@TiagoGouvea mano faz a PR ai que eu aprovo, só faz pro branch VNEXT que é a proxima versão do client

TiagoGouvea commented 7 years ago

@rscouto a empresa optou por não trabalhar com o Iugu por agora.. portanto, parei de avançar no código. Vou ver se acho o trecho aqui logo mais e envio por aqui.

rscouto commented 7 years ago

@tiago-alves Fiz o downgrade e aí tudo certinho pra você? Funcionou?

rscouto commented 7 years ago

Issue fechada por falta de feedback dos envolidos: @TiagoGouvea e @tiago-alves