public static RetornoApi <R> GetToken <R>(ConfSync confSync) { try { HttpClient client; if (string.IsNullOrWhiteSpace(confSync.Username) || string.IsNullOrWhiteSpace(confSync.Username)) { client = new HttpClient { BaseAddress = new Uri(confSync.Host), }; } else { var authValue = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{confSync.Username}:{confSync.Password}"))); client = new HttpClient { BaseAddress = new Uri(confSync.Host), DefaultRequestHeaders = { Authorization = authValue } }; } client.DefaultRequestHeaders.Accept.Clear(); var body = new Dictionary <string, string>(); if (!string.IsNullOrWhiteSpace(confSync.Body.ClientId)) { body.Add("client_id", confSync.Body.ClientId); } if (!string.IsNullOrWhiteSpace(confSync.Body.ClientSecret)) { body.Add("client_secret", confSync.Body.ClientSecret); } body.Add("grant_type", confSync.Body.GrantType); if (!string.IsNullOrWhiteSpace(confSync.Body.Username)) { body.Add("username", confSync.Body.Username); } if (!string.IsNullOrWhiteSpace(confSync.Body.Password)) { body.Add("password", confSync.Body.Password); } if (!string.IsNullOrWhiteSpace(confSync.Body.Usuario)) { body.Add("Usuario", confSync.Body.Usuario); } if (!string.IsNullOrWhiteSpace(confSync.Body.Senha)) { body.Add("Senha", confSync.Body.Senha); } var response = client.PostAsync(confSync.EndPointGetToken, new FormUrlEncodedContent(body))?.Result; if (response.IsSuccessStatusCode) { var result = response.Content.ReadAsStringAsync().Result; var retorno = JsonConvert.DeserializeObject <R>(result); return(new RetornoApi <R> { Sucesso = true, StatusCode = 200, Data = retorno }); } else if (response.StatusCode == HttpStatusCode.Unauthorized || response.StatusCode == HttpStatusCode.BadRequest) { return(new RetornoApi <R> { Sucesso = false, StatusCode = 401, Mensagem = "Login ou senha incorretos." }); } else if (response.StatusCode == HttpStatusCode.Forbidden) { return(new RetornoApi <R> { Sucesso = false, StatusCode = 403, Mensagem = "Não Autorizado." }); } else if (response.StatusCode == HttpStatusCode.NotFound) { return(new RetornoApi <R> { Sucesso = false, StatusCode = 404, Mensagem = "Url não encontrada." }); } else if (response.StatusCode == HttpStatusCode.MethodNotAllowed) { return(new RetornoApi <R> { Sucesso = false, StatusCode = 405, Mensagem = "Método não encontrado/Parâmetros inválidos." }); } else { var result = response.Content.ReadAsStringAsync().Result; ApiLog.Log.FazLog(Mensagem: $"Não catalogado! {result}"); return(new RetornoApi <R> { Sucesso = false, StatusCode = 0, Mensagem = "Erro não catalogado. Consulte o log para saber mais." }); } } catch (Exception ex) { ApiLog.Log.FazLog(Mensagem: "GetToken " + ex.StackTrace + (ex.Message ?? "Message NULL ") + (ex.InnerException?.Message ?? "InnerException NULL"), Exception: ex); return(new RetornoApi <R> { Sucesso = false, StatusCode = 500, Mensagem = "Ocorreu um erro de servidor. Consulte o log para saber mais." }); } }
public static Token GetToken(ConfSync confSync, string json = "") { Token token = null; try { HttpClient client; if (string.IsNullOrWhiteSpace(confSync.Username) || string.IsNullOrWhiteSpace(confSync.Username)) { client = new HttpClient { BaseAddress = new Uri(confSync.Host), }; } else { var authValue = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{confSync.Username}:{confSync.Password}"))); client = new HttpClient { BaseAddress = new Uri(confSync.Host), DefaultRequestHeaders = { Authorization = authValue } }; } client.DefaultRequestHeaders.Accept.Clear(); var body = new Dictionary <string, string>(); if (!string.IsNullOrWhiteSpace(confSync.Body.ClientId)) { body.Add("client_id", confSync.Body.ClientId); } if (!string.IsNullOrWhiteSpace(confSync.Body.ClientSecret)) { body.Add("client_secret", confSync.Body.ClientSecret); } body.Add("grant_type", confSync.Body.GrantType); if (!string.IsNullOrWhiteSpace(confSync.Body.Username)) { body.Add("username", confSync.Body.Username); } if (!string.IsNullOrWhiteSpace(confSync.Body.Password)) { body.Add("password", confSync.Body.Password); } if (!string.IsNullOrWhiteSpace(confSync.Body.Usuario)) { body.Add("Usuario", confSync.Body.Usuario); } if (!string.IsNullOrWhiteSpace(confSync.Body.Senha)) { body.Add("Senha", confSync.Body.Senha); } var response = new HttpResponseMessage(); if (string.IsNullOrEmpty(json)) { response = client.PostAsync(confSync.EndPointGetToken, new FormUrlEncodedContent(body))?.Result; } else { var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); response = client.PostAsync(confSync.EndPointGetToken, stringContent).Result; } if (response.IsSuccessStatusCode) { var result = response.Content.ReadAsStringAsync().Result; if (string.IsNullOrEmpty(json)) { token = JsonConvert.DeserializeObject <Token>(response.Content.ReadAsStringAsync().Result); } else { var ret = JsonConvert.DeserializeObject <RetornoLogin>(response.Content.ReadAsStringAsync().Result); token = new Token(); token.AccessToken = ret.Data.AccesToken; token.ExpiresIn = (int)ret.Data.ExpiresIn; token.TokenType = ret.Data.TokenType; } } else if (response.StatusCode == HttpStatusCode.Unauthorized) { var result = response.Content.ReadAsStringAsync().Result; throw new InvalidOperationException($"Usuário e senha invalido para sincronização\n " + result, new Exception()); } else { var result = response.Content.ReadAsStringAsync().Result; throw new InvalidOperationException(result); } } catch (Exception ex) { token = null; ApiLog.Log.FazLog(Mensagem: "GetToken " + ex.StackTrace + (ex.Message ?? "Message NULL ") + (ex.InnerException?.Message ?? "InnerException NULL")); } return(token); }