Advertisement
Lauda

Untitled

Sep 26th, 2023
771
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.48 KB | None | 0 0
  1. using Microsoft.AspNetCore.Mvc;
  2. using System.IO;
  3. using System.Threading.Tasks;
  4. using System.Net.Http;
  5. using System;
  6. using System.Linq;
  7.  
  8. namespace TestExample.Controllers;
  9.  
  10. [ApiController]
  11. [Route("[controller]")]
  12. public class SimpleController : ControllerBase
  13. {
  14.     private readonly string _previousUrl = string.Empty;
  15.    
  16.     private Stream GetOutputStream(string fileName)
  17.     {
  18.         using (var stream = System.IO.File.OpenWrite(fileName))
  19.         {
  20.             return stream;
  21.         }
  22.     }
  23.  
  24.     private static bool FileExists(string fileName)
  25.         => Directory.GetFiles(Directory.GetCurrentDirectory())
  26.             .Where(file => Path.GetExtension(file).Equals(".html", StringComparison.InvariantCultureIgnoreCase))
  27.             .Any(x => x.Equals(fileName, StringComparison.InvariantCultureIgnoreCase));
  28.    
  29.     [HttpGet]
  30.     public async Task<IActionResult> GetWebpage(string url)
  31.     {
  32.         if (_previousUrl == url)
  33.         {
  34.             return Ok();
  35.         }
  36.        
  37.         using var client = new HttpClient();
  38.         var result = await client.GetStreamAsync(url);
  39.        
  40.         var fileName = $"{Guid.NewGuid().ToString()}.html";
  41.         if (FileExists(fileName))
  42.         {
  43.             return Conflict(fileName);
  44.         }
  45.        
  46.         using var stream = GetOutputStream(fileName);
  47.         await result.CopyToAsync(stream);
  48.         await stream.FlushAsync();
  49.        
  50.         _previousUrl = url;
  51.        
  52.         return Ok();
  53.     }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement