public void Manipular(HttpListenerResponse resposta, string path)
        {
            var assembly     = Assembly.GetExecutingAssembly();
            var nomeResource = Utilidades.ConverterPathParaNomeAssembly(path);

            var resourceStream = assembly.GetManifestResourceStream(nomeResource);

            if (resourceStream == null)
            {
                resposta.StatusCode = (int)HttpStatusCode.NotFound;
                resposta.OutputStream.Close();
            }
            else
            {
                using (resourceStream)
                {
                    var bytesResource = new byte[resourceStream.Length];

                    resourceStream.Read(bytesResource, 0, (int)resourceStream.Length);

                    resposta.ContentType     = Utilidades.ObterTipoDeConteudo(path);
                    resposta.StatusCode      = (int)HttpStatusCode.OK;
                    resposta.ContentLength64 = resourceStream.Length;

                    resposta.OutputStream.Write(bytesResource, 0, bytesResource.Length);

                    resposta.OutputStream.Close();
                }
            }
        }
        public void Manipular(HttpListenerResponse resposta, string path)
        {
            // retornar o ducmento css
            var assembly       = Assembly.GetExecutingAssembly();
            var nomeResource   = Utilidades.ConvertPathParaNomeAssembly(path);
            var resourceStream = assembly.GetManifestResourceStream(nomeResource);

            // caso nada tenha sido carregado, entao devolvemos erro (404)
            // erro nesse tipo de programa.
            if (resourceStream == null)
            {
                resposta.StatusCode = 404;
                resposta.OutputStream.Close();
            }
            else
            {
                using (resourceStream)
                {
                    // nesse tipo de protocolo nao conseguimos trafegar dados string
                    // somente streaming (array de bytes) entao vamos converter
                    var bytesResouce = new byte[resourceStream.Length];
                    resourceStream.Read(bytesResouce, 0, (int)resourceStream.Length);

                    // configurando o response
                    resposta.ContentType     = Utilidades.ObterTipoDeConteudo(path);
                    resposta.StatusCode      = 200;
                    resposta.ContentLength64 = resourceStream.Length;
                    resposta.OutputStream.Write(bytesResouce, 0, bytesResouce.Length);
                    resposta.OutputStream.Close();
                }
            }
        }
Beispiel #3
0
        public void Manipular(HttpListenerResponse resposta, string path)
        {
            #region Pegando arquivo de resposta
            // Para que o arquivo seja pego, o mesmo (style.css) deve estar como Embedded Resource em Build Action nas propriedades
            var assembly     = Assembly.GetExecutingAssembly();
            var nomeResource = Utilidades.ConverterPathParaNomeAssembly(path);
            // Acessando arquivo pelo assembly
            var resourceStream = assembly.GetManifestResourceStream(nomeResource);
            #endregion

            #region Retornando arquivo de resposta
            // Se o arquivo não foi encontrado, retornar 404
            if (resourceStream == null)
            {
                resposta.StatusCode = 404;
                resposta.OutputStream.Close();
            }
            else
            {
                using (resourceStream)
                {
                    // Salvando arquivos em um Array de bytes (byteResource)
                    var byteResource = new byte[resourceStream.Length];
                    resourceStream.Read(byteResource, 0, (int)resourceStream.Length);

                    // Definindo o tipo da resposta (css, html ou js)
                    resposta.ContentType = Utilidades.ObterTipoDeConteudo(path);
                    // Definindo o status da requisição
                    resposta.StatusCode = 200;
                    // Tamanho da resposta
                    resposta.ContentLength64 = resourceStream.Length;

                    // Retornando resposta (Array de bytes, indice inicio da leitura, e indice final da leitura)
                    resposta.OutputStream.Write(byteResource, 0, byteResource.Length);

                    // Fechando requisição
                    resposta.OutputStream.Close();
                }
            }
            #endregion
        }
Beispiel #4
0
        public void Manipular(HttpListenerResponse resposta, string path)
        {
            //retornar  o nosso documento style.css
            var assembly = Assembly.GetExecutingAssembly(); //retornar o assembly que fez a chamada (ele mesmo) o assembly a ser retornar é o byteBank
                                                            //vamos acessar o recurso do css. vc nao tem acesso ao texto puro. voce tem acesso ao stream.
            var nomeResource   = Utilidades.ConvertPathNomeAssembly(path);
            var resourceStream = assembly.GetManifestResourceStream(nomeResource);

            if (resourceStream == null)
            {
                resposta.StatusCode = 404;
                resposta.OutputStream.Close();
            }
            else
            {
                //A metodo GetManifestResourceStream deveolve um stream, que implementa a interface IDisposible.
                //é uma boa practia usar classes que implementam o IDisposble com o Using porque logo apos seu uso
                //o espaçao e liberado em memoria. Quando agente nao faz isso o .net mantem a referencia em memoria.
                using (resourceStream)
                {
                    var respostaConteudoBytes = new Byte[resourceStream.Length];
                    //vamos pegar os fluxo de dados da nossa mangueira para nosso baldinho(bytesResourse)
                    resourceStream.Read(respostaConteudoBytes, 0, (int)resourceStream.Length);

                    resposta.ContentType = Utilidades.ObterTipoDeConteudo(path);

                    //precisamos definir o status do codigo da requisição
                    resposta.StatusCode = 200; //Sucesso

                    //Informo ao IE, Chrome o tamnho de resposta que ele pode esperar
                    resposta.ContentLength64 = respostaConteudoBytes.Length;

                    //Vamos escrever nossa resposta http;
                    resposta.OutputStream.Write(respostaConteudoBytes, 0, respostaConteudoBytes.Length);

                    //precisamos fechar o fluxo
                    resposta.OutputStream.Close();
                }
            }
        }