public bool GuardarAudioDeCancionDeConsumidor(int idCancion, byte[] audio) { UVFYArchivos.Respuesta respuesta = new UVFYArchivos.Respuesta(); var cliente = new Archivos.ArchivosClient(ServicioDeArchivos); PeticionGuardadoIdYCalidad peticion = new PeticionGuardadoIdYCalidad(); peticion.Calidad = calidad.Alta; peticion.Datos = Google.Protobuf.ByteString.CopyFrom(audio); peticion.IdPeticion = idCancion; try { respuesta = cliente.GuardarAudioDeCancionPorIdYCalidad(peticion); } catch (System.Net.Http.HttpRequestException e) { throw new AccesoAServicioException("Archivos", e); } catch (Grpc.Core.RpcException e) { throw new AccesoAServicioException("Sesiones", e); } if (respuesta.Exitosa) { return(true); } else { throw new ResultadoDeServicioFallidoException("Sesiones"); } }
public override Task <Respuesta> GuardarAudioDeCancionPorIdYCalidad(PeticionGuardadoIdYCalidad request, ServerCallContext context) { Respuesta respuesta = new Respuesta(); try { using (UVFYContext contexto = new UVFYContext()) { CancionDAO cancionDAO = new CancionDAO(); if (cancionDAO.CargarPorId(request.IdPeticion) != null) { try { if (ServiciosDeIO.VerificarEstructuraDeArchivosCancion(request.IdPeticion.ToString())) { switch (request.Calidad) { case calidad.Alta: ServiciosDeIO.GuardarArchivoDeCancion(request.IdPeticion.ToString(), request.Datos.ToByteArray(), TipoDeArchivo.mp3_320); break; case calidad.Media: ServiciosDeIO.GuardarArchivoDeCancion(request.IdPeticion.ToString(), request.Datos.ToByteArray(), TipoDeArchivo.mp3_256); break; case calidad.Baja: ServiciosDeIO.GuardarArchivoDeCancion(request.IdPeticion.ToString(), request.Datos.ToByteArray(), TipoDeArchivo.mp3_128); break; } respuesta.Exitosa = true; } else { //No se pudo realizar el guardado, error de io respuesta.Exitosa = false; respuesta.Motivo = 500; } } catch (IOException e) { //No se pudo realizar el guardado, error de io respuesta.Exitosa = false; respuesta.Motivo = 500; } } else { //No se encontro la cancion con el id dado (Deberia ser imposible porque se valida) respuesta.Exitosa = false; respuesta.Motivo = 400; } } } catch (AccesoADatosException) { //Error conectandose a la base de datos respuesta.Exitosa = false; respuesta.Motivo = 500; return(Task.FromResult(respuesta)); } return(Task.FromResult(respuesta)); }