public async Task <string> Delete(int id) { var track = _multiSourcePlaylistRepository.GetTrack(id); var address = track.Address; var type = track.Type; _multiSourcePlaylistRepository.DeleteTrack(id); var claimsIdentity = User.Identity as ClaimsIdentity; var userId = Convert.ToInt64(claimsIdentity.Claims.FirstOrDefault(claim => claim.Type == "Id").Value); var user = _multiSourcePlaylistRepository.GetUser(userId); var mp3type = 3; var mp3type2 = 5; if (type == mp3type && !_multiSourcePlaylistRepository.GetTracksByTypeAndAddress(mp3type, address, userId).Any()) { if (!await CloudHelper.RemoveFileFromCloudFile( _configuration["Production:StorageConnectionString"], user.FileFolder, address)) { return("FAILED"); } } else if (type == mp3type2 && !_multiSourcePlaylistRepository.GetTracksByTypeAndAddress(mp3type2, address, userId).Any()) { if (!await CloudHelper.RemoveFileFromCloudBlob( _configuration["Production:StorageConnectionString"], user.FileFolder, address)) { return("FAILED"); } } return("SUCCESS"); }
public Playlist Post([FromBody] Playlist value) { var allPlaylists = _multiSourcePlaylistRepository.GetAllPlaylists(); var claimsIdentity = User.Identity as ClaimsIdentity; var userId = Convert.ToInt64(claimsIdentity.Claims.FirstOrDefault(claim => claim.Type == "Id").Value); var user = _multiSourcePlaylistRepository.GetUser(userId); value.Owner = user; int lastOrder = 0; var lastPlaylist = allPlaylists.OrderByDescending(x => x.Order).FirstOrDefault(); if (lastPlaylist != null) { lastOrder = lastPlaylist.Order + 1; } value.Order = lastOrder; _multiSourcePlaylistRepository.PostPlaylist(value); return(value); }
public async Task <string> FileUpload(long id, IFormFile[] files) { var claimsIdentity = User.Identity as ClaimsIdentity; var userId = Convert.ToInt64(claimsIdentity.Claims.FirstOrDefault(claim => claim.Type == "Id").Value); var user = _multiSourcePlaylistRepository.GetUser(userId); var filePath = Path.Combine( "uploads", user.FileFolder); var uploads = Path.Combine( _environment.ContentRootPath, filePath); //string url = UriHelper.GetDisplayUrl(Request);//http://localhost:8080/api/fileupload/1 //var urlParts = url.Split(new[] { "api/fileupload" }, StringSplitOptions.None); //var baseUrl = urlParts[0]; var playlist = _multiSourcePlaylistRepository.GetPlaylist(id); var allTracks = _multiSourcePlaylistRepository.GetAllTracks(); int lastOrder = 0; List <Track> temp = new List <Track>(); if (allTracks != null) { temp = allTracks.Where(y => y.Playlist.Id == id).ToList(); } if (temp != null && temp.Any()) { lastOrder = temp.OrderByDescending(x => x.Order).FirstOrDefault().Order + 1; } //@string.Format("{0}://{1}{2}{3}", Context.Request.Scheme, Context.Request.Host, Context.Request.Path, Context.Request.QueryString) CloudStorageAccount storageAccount = CloudStorageAccount.Parse( _configuration["Production:StorageConnectionString"]); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); CloudBlobContainer container = blobClient.GetContainerReference(user.FileFolder); // Ensure that the share exists. if (await container.ExistsAsync()) { int bytesToMegaBytes = 1048576; var totalSize = await isThereDiscSpaceInAzure(container); if ((totalSize) / bytesToMegaBytes > 10000) { return("NO_DISC_SPACE"); } } else { return("User container doesn't exists."); } foreach (var file in files) { try { var filename = file.FileName; var fullpath = Path.Combine(uploads, filename); CloudBlockBlob blob = container.GetBlockBlobReference(filename); if (!await blob.ExistsAsync()) { if (file.Length > 0) { using (var fileStream = file.OpenReadStream()) { await blob.UploadFromStreamAsync(fileStream); } } } using (var fileStream = new FileStream(fullpath, FileMode.Create)) { await file.CopyToAsync(fileStream); fileStream.Flush(); fileStream.Dispose(); } Track fileTrack = new Track(); fileTrack.Address = file.FileName; fileTrack.Playlist = playlist; fileTrack.Type = 5; fileTrack.Order = lastOrder; fileTrack.Name = getTrackName(fullpath);//hanki bändi ja kappale mp3 tiedoston metasta _multiSourcePlaylistRepository.PostTrack(fileTrack); ++lastOrder; System.IO.File.Delete(fullpath); } catch (Exception ex) { return(ex.Message); } } return("File was Uploaded"); }
public async Task <FileStreamResult> Get(int id) { var claimsIdentity = User.Identity as ClaimsIdentity; var userId = Convert.ToInt64(claimsIdentity.Claims.FirstOrDefault(claim => claim.Type == "Id").Value); var user = _multiSourcePlaylistRepository.GetUser(userId); var track = _multiSourcePlaylistRepository.GetTrack(id); byte[] audioArray = new byte[0]; CloudStorageAccount storageAccount = CloudStorageAccount.Parse( _configuration["Production:StorageConnectionString"]); CloudFileClient fileClient = storageAccount.CreateCloudFileClient(); // Get a reference to the file share we created previously. CloudFileShare share = fileClient.GetShareReference(user.FileFolder); CloudFileDirectory userDir = null; // Ensure that the share exists. if (await share.ExistsAsync()) { // Get a reference to the root directory for the share. CloudFileDirectory rootDir = share.GetRootDirectoryReference(); // Get a reference to the directory we created previously. userDir = rootDir.GetDirectoryReference("audio"); // Ensure that the directory exists. if (await userDir.ExistsAsync()) { var audiofile = userDir.GetFileReference(track.Address); if (await audiofile.ExistsAsync()) { await audiofile.FetchAttributesAsync(); audioArray = new byte[audiofile.Properties.Length]; await audiofile.DownloadToByteArrayAsync(audioArray, 0); } } else { return(null); } } else { return(null); } long fSize = audioArray.Length; long startbyte = 0; long endbyte = fSize - 1; int statusCode = 200; var rangeRequest = Request.Headers["Range"].ToString(); if (rangeRequest != "") { string[] range = Request.Headers["Range"].ToString().Split(new char[] { '=', '-' }); startbyte = Convert.ToInt64(range[1]); if (range.Length > 2 && range[2] != "") { endbyte = Convert.ToInt64(range[2]); } if (startbyte != 0 || endbyte != fSize - 1 || range.Length > 2 && range[2] == "") { statusCode = 206; } } long desSize = endbyte - startbyte + 1; Response.StatusCode = statusCode; Response.ContentType = "audio/mp3"; Response.Headers.Add("Content-Accept", Response.ContentType); Response.Headers.Add("Content-Length", desSize.ToString()); Response.Headers.Add("Content-Range", string.Format("bytes {0}-{1}/{2}", startbyte, endbyte, fSize)); Response.Headers.Add("Accept-Ranges", "bytes"); Response.Headers.Remove("Cache-Control"); var stream = new MemoryStream(audioArray, (int)startbyte, (int)desSize); return(new FileStreamResult(stream, "audio/mp3") { FileDownloadName = track.Name }); }