using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Primitives; using System; using System.Collections.Generic; using System.IdentityModel.Tokens.Jwt; using System.IO; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; using TTSW.Utils; namespace TTSW.Controllers { public class BaseController : Controller { /// /// Default constructure for dependency injection /// public BaseController() { } protected string GetClientRootUrl() { var request = HttpContext.Request; return $"{request.Scheme}://{request.Host}"; } protected string GetClientRequestUrl() { var request = HttpContext.Request; return $"{request.Scheme}://{request.Host}{request.Path}{request.QueryString}"; } protected string GetClientRootUrlByOrigin() { var nameFilter = string.Empty; //Get Origin header for full root path of the client if (Request.Headers.TryGetValue("Origin", out StringValues headerValues)) nameFilter = headerValues.FirstOrDefault(); return nameFilter; } protected async Task ReturnFileDownload(string relativePath) { var fullPath = FileUtil.GetAbsolutePath(relativePath); if (!FileUtil.DoesFileExist(fullPath)) return Content("filename not present"); var memory = new MemoryStream(); using (var stream = new FileStream(fullPath, FileMode.Open)) { await stream.CopyToAsync(memory); } memory.Position = 0; return File(memory, FileUtil.GetMineType(fullPath), Path.GetFileName(fullPath)); } protected async Task GetAccessToken() { return await HttpContext.GetTokenAsync("access_token"); } } }