public async Task <IActionResult> UploadTemplateFromUrl([FromBody] FromUrlRequest request)
        {
            string requestId = Guid.NewGuid().ToString();

            _uploadManager.SetProgress(requestId, 0);
            _uploadManager.QueueUpload(request, requestId, GetUser());
            return(Ok(requestId));
        }
 public void QueueUpload(FromUrlRequest request, string requestId, User user)
 {
     ThreadPool.QueueUserWorkItem(async _ =>
     {
         using var scope = _serviceProvider.CreateScope();
         var context     = scope.ServiceProvider.GetService <DefaultContext>();
         var service     = scope.ServiceProvider.GetService <ProxmoxVmTemplateService>();
         try
         {
             using var response = DownloadFile(ShareLinkConverter.ConvertUrl(request.Url));
             long contentLength = long.Parse(response.Headers["Content-Length"]);
             using var stream   = response.GetResponseStream();
             await service.UploadTemplate(context, request.Name, user, stream, contentLength, progress => SetProgress(requestId, progress));
             SetComplete(requestId);
         }
         catch (Exception e)
         {
             SetError(requestId);
             Console.Error.WriteLine(e);
         }
     });
 }