예제 #1
0
        public override Task <RespuestaDeCancion> CargarAudioDeCancionPorIdYCalidad(PeticionIdYCalidad request, ServerCallContext context)
        {
            RespuestaDeCancion respuesta = new RespuestaDeCancion()
            {
                Respuesta = new Respuesta()
            };

            try
            {
                if (ServiciosDeIO.VerificarEstructuraDeArchivosCancion(request.IdPeticion.ToString()))
                {
                    switch (request.Calidad)
                    {
                    case calidad.Alta:
                        respuesta.Autio = Google.Protobuf.ByteString.CopyFrom(ServiciosDeIO.CargarAudioDeCancionPorCalidad(request.IdPeticion.ToString(), TipoDeArchivo.mp3_320));
                        break;

                    case calidad.Media:
                        respuesta.Autio = Google.Protobuf.ByteString.CopyFrom(ServiciosDeIO.CargarAudioDeCancionPorCalidad(request.IdPeticion.ToString(), TipoDeArchivo.mp3_256));
                        break;

                    case calidad.Baja:
                        respuesta.Autio = Google.Protobuf.ByteString.CopyFrom(ServiciosDeIO.CargarAudioDeCancionPorCalidad(request.IdPeticion.ToString(), TipoDeArchivo.mp3_128));
                        break;
                    }
                    respuesta.Respuesta.Exitosa = true;
                }
                else
                {
                    //No se pudo realizar la lectura, error de io
                    respuesta.Respuesta.Exitosa = false;
                    respuesta.Respuesta.Motivo  = 500;
                }
            }
            catch (IOException e)
            {
                //No se encontro el archivo
                respuesta.Respuesta.Exitosa = false;
                respuesta.Respuesta.Motivo  = 500;
            }

            return(Task.FromResult(respuesta));
        }
        public IActionResult CargarAudioDeCancion([FromQuery] string tokenDeAcceso, int idCancion, int calidad)
        {
            IActionResult      actionResult      = BadRequest();
            var                clienteDeArchivos = new UVFYArchivos.Archivos.ArchivosClient(ServicioDeArchivos);
            PeticionIdYCalidad peticionId        = new PeticionIdYCalidad
            {
                Token = new UVFYArchivos.Token
                {
                    TokenDeAcceso = tokenDeAcceso
                },
                IdPeticion = idCancion,
                Calidad    = (calidad)calidad
            };

            RespuestaDeCancion respuesta = new RespuestaDeCancion();

            try
            {
                respuesta = clienteDeArchivos.CargarAudioDeCancionPorIdYCalidad(peticionId);
            }
            catch (System.Net.Http.HttpRequestException)
            {
                actionResult = StatusCode(500);
                return(actionResult);
            }

            if (respuesta.Respuesta.Exitosa)
            {
                byte[] audio = respuesta.Autio.ToArray();
                actionResult = Ok(audio);
            }
            else
            {
                actionResult = StatusCode(respuesta.Respuesta.Motivo);
            }

            return(actionResult);
        }