using Microsoft.AspNetCore.Http.Extensions; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.WebUtilities; using QRCodeService.Application.Queries; using QRCodeService.Extensions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace QRCodeService.Controllers { [Route("r/{shortCode}")] public class RedirectController : Controller { private readonly ILinkQueries linkQueries; private readonly IAppQueries appQueries; public RedirectController(ILinkQueries queries, IAppQueries appQueries) { this.linkQueries = queries; this.appQueries = appQueries; } [HttpGet] public async Task Index(string shortCode) { var link = await linkQueries.GetLinkAsync(shortCode); if (link == null) { return BadRequest(); } var app = await appQueries.GetAppAsync(link.AppId); if (app == null) { return BadRequest(); } var t = DateTime.Now.ToString("yyyyMMddHHmmss"); var sign = BitConverter.ToString($"{t}{app.Appkey}".ToMD5()).Replace("-", ""); ViewBag.FullUrl = QueryHelpers.AddQueryString(link.FullUrl, new Dictionary { { "s",sign }, { "t",t} }); return View(); } } }