aboutsummaryrefslogtreecommitdiffstats
path: root/src/Pages/Index.cshtml.cs
blob: bea663de63090b9bb033a75b58ce6984b3c2cb49 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace I2R.LightNews.Pages;

public class IndexModel : PageModel
{
    private readonly ILogger<IndexModel> _logger;
    private readonly NrkNewsService _nrkNews;

    public IndexModel(ILogger<IndexModel> logger, NrkNewsService nrkNews) {
        _logger = logger;
        _nrkNews = nrkNews;
    }

    public NewsSource FrontPage { get; set; }
    public NewsArticle Article { get; set; }
    public string PageTitle { get; set; }

    public async Task<ActionResult> OnGet([FromRoute] string site, [FromQuery] string url = default) {
        PageTitle = site switch {
            "nrk" => "NRK",
            _ => ""
        };

        if (url.IsNullOrWhiteSpace()) {
            FrontPage = site switch {
                "nrk" => await _nrkNews.GrabNrkAsync(),
                _ => default
            };

            if (FrontPage == default) {
                return Redirect("/nrk");
            }
        } else {
            Article = site switch {
                "nrk" => await _nrkNews.GrabNrkArticleAsync(url),
                _ => default
            };

            if (Article == default) {
                return Redirect(url);
            }

            PageTitle = PageTitle + " - " + Article.Title;
        }

        return Page();
    }
}