예제 #1
0
        public async Task <IActionResult> Download(SubsonicRequest request)
        {
            var authResult = await AuthenticateUser(request).ConfigureAwait(false);

            if (authResult != null)
            {
                return(Unauthorized());
            }
            var trackId = request.TrackId;

            if (trackId != null)
            {
                return(await StreamTrack(trackId.Value, TrackService, PlayActivityService, SubsonicUser).ConfigureAwait(false));
            }
            var releaseId = request.ReleaseId;

            if (releaseId != null)
            {
                var releaseZip = await ReleaseService.ReleaseZipped(SubsonicUser, releaseId.Value).ConfigureAwait(false);

                if (!releaseZip.IsSuccess)
                {
                    return(NotFound("Unknown Release id"));
                }
                return(File(releaseZip.Data, "application/zip", (string)releaseZip.AdditionalData["ZipFileName"]));
            }

            return(NotFound($"Unknown download id `{request.id}`"));
        }