API

Descripción

API
Luiz  Cardamone
Apunte por Luiz Cardamone, actualizado hace más de 1 año
Luiz  Cardamone
Creado por Luiz Cardamone hace más de 3 años
2
0

Resumen del Recurso

Página 1

using ChatApp.DTO; using ChatApp.Models; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ChatApp {     public class ApiClient     {         HttpClient _httpClient;         public delegate void NovaMensagensDelegate(Mensagem[] mensagens);         public delegate void AlterarListaUsuariosDelegate(Usuarios[] usuarios);         public string Apelido { get; private set; }         public event NovaMensagensDelegate AoReceberMensagens;         public event AlterarListaUsuariosDelegate AoAlterarNovaListaUsuarios;         int _sequencialMensagens;         int _sequencialUsuarios;         volatile bool _rodando;         System.Timers.Timer _timer;         public ApiClient()         {             _timer = new System.Timers.Timer();             _timer.AutoReset = false;             _timer.Interval = 1000;             _timer.Elapsed += _timer_Elapsed;             _httpClient = new HttpClient();             _httpClient.BaseAddress = new Uri("http://localhost:5000");         }         private void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)         {             try             {                 try                 {                     var mensagens = PegarNovasMensagens();                     AoReceberMensagens?.Invoke(mensagens);                 }                 catch                 {                 }                 try                 {                     var usuarios = PegarNovosUsuarios();                     AoAlterarNovaListaUsuarios?.Invoke(usuarios);                 }                 catch                 {                 }             }             finally             {                 if (_rodando)                     _timer.Start();             }         }         private Mensagem[] PegarNovasMensagens()         {             var result = _httpClient.GetAsync($"/mensagens?sequencial={_sequencialMensagens}").Result;             result.EnsureSuccessStatusCode();             var conteudo =                 JsonConvert.DeserializeObject<Mensagem[]>(result.Content.ReadAsStringAsync().Result);             if (conteudo.Any())             {                 _sequencialMensagens = conteudo.Max(c => c.Id);             }             return conteudo;         }         public Usuarios[] PegarNovosUsuarios()         {             var result = _httpClient.GetAsync($"/usuarios?sequencial={_sequencialUsuarios}").Result;             result.EnsureSuccessStatusCode();             var conteudo =                 JsonConvert.DeserializeObject<Usuarios[]>(result.Content.ReadAsStringAsync().Result);             if (conteudo.Any())             {                 conteudo = conteudo                 .Where(c => c.Nome != Apelido)                 .ToArray();                 if(conteudo.Any())                 {                     _sequencialUsuarios = conteudo.Max(c => c.Id);                 }             }             return conteudo;         }         public void EnviarMensagem(OutputMensagem mensagem)         {             mensagem.Remetente = Apelido;             var json = JsonConvert.SerializeObject(mensagem);             var result = _httpClient.PostAsync("mensagens",                 new StringContent(json, Encoding.UTF8, "application/json")).Result;             result.EnsureSuccessStatusCode();         }         public void FazerLogin(string apelido)         {             var json = JsonConvert.SerializeObject(new { nome = apelido });             var resultado = _httpClient                                 .PostAsync("usuarios",                                 new StringContent(json, Encoding.UTF8, "application/json"))                                 .Result;             //content-type: application/json; charset=utf-8              var resultadoContent               = JsonConvert.DeserializeObject<InputLogin>(                   resultado.Content.ReadAsStringAsync().Result);             if (resultado.StatusCode == System.Net.HttpStatusCode.BadRequest)             {                 throw new Exception(Convert.ToString(resultadoContent.Erro));             }             Apelido = apelido;         }         public void IniciarRecebimento()         {             _rodando = true;             _timer.Start();         }     } }

Página 2

DTO   namespace ChatApp.DTO {     public class InputLogin     {         public string Erro { get; set; }     } }       using Newtonsoft.Json; namespace ChatApp.DTO {     public class OutputMensagem     {         [JsonProperty("remetente")]         public string Remetente { get; set; }         [JsonProperty("destinatario")]         public string Destinatario { get; set; }         [JsonProperty("texto")]         public string Texto { get; set; }         [JsonProperty("reservada")]         public bool Reservada { get; set; }     } }  

Página 3

MODELS   namespace ChatApp.Models {     public class Mensagem     {         public int Id { get; set; }         public string Remetente { get; set; }         public string Texto { get; set; }         public string Destinatario { get; set; }         public bool Reservada { get; set; }     } }       namespace ChatApp.Models {     public class Usuarios     {         public int Id { get; set; }         public string Nome { get; set; }     } }  

Mostrar resumen completo Ocultar resumen completo

Similar

Front-end RoadMap
Luiza Carine Ferreira da Silva
Interatividade
Diogo Almeida9441
Métodos [Twitter-API]
ApenasSandokhan
Construindo API Rest com Node.Js
Rogerio Lima
RESTfull - Sensedia
Rogerio Alves
ESTILOS DE ARQUITETURAS EM API's
Paulo Roberto Neto
9) Sport activities
John Goalkeeper
LITERATURA DEL ROMANTICISMO ESPAÑOL
leandro.farleths
RAMAS DE LA GEOGRAFIA
ROSA MARIA ARRIAGA
Getting started with GoConqr Groups
GoConqr Team-Liliana