Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Microsoft.AspNetCore.Mvc;
- using System.IO;
- using System.Threading.Tasks;
- using System.Net.Http;
- using System;
- using System.Linq;
- namespace TestExample.Controllers;
- [ApiController]
- [Route("[controller]")]
- public class SimpleController : ControllerBase
- {
- private readonly string _previousUrl = string.Empty;
- private Stream GetOutputStream(string fileName)
- {
- using (var stream = System.IO.File.OpenWrite(fileName))
- {
- return stream;
- }
- }
- private static bool FileExists(string fileName)
- => Directory.GetFiles(Directory.GetCurrentDirectory())
- .Where(file => Path.GetExtension(file).Equals(".html", StringComparison.InvariantCultureIgnoreCase))
- .Any(x => x.Equals(fileName, StringComparison.InvariantCultureIgnoreCase));
- [HttpGet]
- public async Task<IActionResult> GetWebpage(string url)
- {
- if (_previousUrl == url)
- {
- return Ok();
- }
- using var client = new HttpClient();
- var result = await client.GetStreamAsync(url);
- var fileName = $"{Guid.NewGuid().ToString()}.html";
- if (FileExists(fileName))
- {
- return Conflict(fileName);
- }
- using var stream = GetOutputStream(fileName);
- await result.CopyToAsync(stream);
- await stream.FlushAsync();
- _previousUrl = url;
- return Ok();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement