public void Manipular(HttpListenerResponse resposta, string path) { var partes = path.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); var controllerNome = partes[0]; var actionNome = partes[1]; var controllerNomeCompleto = $"ByteBank.Portal.Controller.{controllerNome}Controller"; var controllerWrapper = Activator.CreateInstance("ByteBank.Portal", controllerNomeCompleto, new object[0]); var controller = controllerWrapper.Unwrap(); //var methodInfo = controller.GetType().GetMethod(actionNome); var methodInfo = _actionBinder.ObterActionBindInfo(controller, path); var resultadoAction = (string)methodInfo.Invoke(controller); var buffer = Encoding.UTF8.GetBytes(resultadoAction); resposta.StatusCode = 200; resposta.ContentType = "text/html; charset=utf-8"; resposta.ContentLength64 = buffer.Length; resposta.OutputStream.Write(buffer, 0, buffer.Length); resposta.OutputStream.Close(); }
public void Manipular(HttpListenerResponse resposta, string path) { var partes = path.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); var controllerNome = partes[0]; var actionNome = partes[1]; var controllerNomeCompleto = $"ByteBank.Portal.Controller.{controllerNome}Controller"; var controllerWrapper = Activator.CreateInstance("ByteBank.Portal", controllerNomeCompleto, new object[0]); var controller = controllerWrapper.Unwrap(); var actionBindInfo = _actionBinder.ObterActionBindInfo(controller, path); var filterResult = _filterResolver.VerificarFiltros(actionBindInfo); if (filterResult.PodeContinuar) { var resultadoAction = (string)actionBindInfo.Invoke(controller); var buffer = Encoding.UTF8.GetBytes(resultadoAction); resposta.StatusCode = 200; resposta.ContentType = "text/html; charset=utf-8"; resposta.ContentLength64 = buffer.Length; resposta.OutputStream.Write(buffer, 0, buffer.Length); resposta.OutputStream.Close(); } else { resposta.StatusCode = 307; resposta.RedirectLocation = "/Erro/Inesperado"; resposta.OutputStream.Close(); } }
public void Manipular(HttpListenerResponse resposta, string path) { // Pegando o nome da controller var controllerNome = path.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries)[0]; var controllerNomeCompleto = $"ByteBank.Portal.Controller.{controllerNome}Controller"; // Criando uma instancia do Controller recebido na requisição var controller = _controllerResolver.ObterController(controllerNomeCompleto); // Pegando metodo a ser executado (MethodInfo) var actionBindInfo = _actionBinder.ObterActionBindInfo(controller, path); // Verificando filtro, e identificando se o metodo podera ser executado var filterResult = _filterResolver.VerificarFiltros(actionBindInfo); if (filterResult.PodeContinuar) { // Executando metodo var resultadoAction = (string)actionBindInfo.Invoke(controller); // Retornando resultado (pagina) var bufferArquivo = Encoding.UTF8.GetBytes(resultadoAction); resposta.ContentType = "text/html; charset=utf-8"; resposta.StatusCode = 200; resposta.ContentLength64 = bufferArquivo.Length; resposta.OutputStream.Write(bufferArquivo, 0, bufferArquivo.Length); resposta.OutputStream.Close(); } else { // Retorna codigo de erro temporario resposta.StatusCode = 307; // Redirecionado para pagina de erro resposta.RedirectLocation = "/Erro/Inesperado"; resposta.OutputStream.Close(); } }
public void Manipular(HttpListenerResponse resposta, string path) { var caminhoDividido = path.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); var controllerAssembly = $"ByteBank.Portal.Controller.{caminhoDividido[0]}Controller"; var action = caminhoDividido[1]; var controllerWrapper = Activator.CreateInstance("ByteBank.Portal", controllerAssembly, new object[0]); var controller = controllerWrapper.Unwrap(); var methodInfo = _actionBinder.ObterActionBindInfo(controller, path); var resultadoAction = (string)methodInfo.Invoke(controller); var bufferArquivo = Encoding.UTF8.GetBytes(resultadoAction); resposta.StatusCode = 200; resposta.ContentType = "text/html; charset=utf-8"; resposta.ContentLength64 = bufferArquivo.Length; resposta.OutputStream.Write(bufferArquivo, 0, bufferArquivo.Length); resposta.OutputStream.Close(); }