summaryrefslogtreecommitdiffstats
path: root/src/Pages
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-11-15 05:05:05 +0100
committerivarlovlie <git@ivarlovlie.no>2022-11-15 05:05:05 +0100
commitadd94527050dc311c4ad117e25dd5e4517b3b887 (patch)
tree137306ea8c7c63b6287bd77c6deaf09e1319833e /src/Pages
downloadlettnytt-add94527050dc311c4ad117e25dd5e4517b3b887.tar.xz
lettnytt-add94527050dc311c4ad117e25dd5e4517b3b887.zip
feat: Initial commit
Diffstat (limited to 'src/Pages')
-rw-r--r--src/Pages/Index.cshtml19
-rw-r--r--src/Pages/Index.cshtml.cs30
-rw-r--r--src/Pages/Read.cshtml26
-rw-r--r--src/Pages/Read.cshtml.cs24
-rw-r--r--src/Pages/Shared/_Layout.cshtml20
-rw-r--r--src/Pages/_ViewImports.cshtml3
-rw-r--r--src/Pages/_ViewStart.cshtml3
7 files changed, 125 insertions, 0 deletions
diff --git a/src/Pages/Index.cshtml b/src/Pages/Index.cshtml
new file mode 100644
index 0000000..d7599bc
--- /dev/null
+++ b/src/Pages/Index.cshtml
@@ -0,0 +1,19 @@
+@page "{site?}"
+@model IndexModel
+@{
+ ViewData["Title"] = Model.Source.Name;
+}
+
+@foreach (var article in Model.Source.Articles) {
+ <section>
+ <a href="/les/@Model.Source.Name?url=@article.Href">
+ <h2>@Html.Raw(article.Title)</h2>
+ <a href="@article.Href" rel="noreferrer">Kilde</a>
+ </a>
+ </section>
+}
+<footer>
+ <small>
+ @Model.Source.Attribution &copy; @Model.Source.Name, @(DateTime.UtcNow.Subtract(Model.Source.Created).Minutes) minutter siden
+ </small>
+</footer> \ No newline at end of file
diff --git a/src/Pages/Index.cshtml.cs b/src/Pages/Index.cshtml.cs
new file mode 100644
index 0000000..9305766
--- /dev/null
+++ b/src/Pages/Index.cshtml.cs
@@ -0,0 +1,30 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace I2R.LightNews.Pages;
+
+public class IndexModel : PageModel
+{
+ private readonly ILogger<IndexModel> _logger;
+ private readonly GrabberService _grabber;
+
+ public IndexModel(ILogger<IndexModel> logger, GrabberService grabber) {
+ _logger = logger;
+ _grabber = grabber;
+ }
+
+ public NewsSource Source { get; set; }
+
+ public async Task<ActionResult> OnGet(string site) {
+ if (site.IsNullOrWhiteSpace()) {
+ return Redirect("/nrk");
+ }
+
+ Source = site switch {
+ "nrk" => await _grabber.GrabNrkAsync(),
+ _ => await _grabber.GrabNrkAsync()
+ };
+
+ return Page();
+ }
+} \ No newline at end of file
diff --git a/src/Pages/Read.cshtml b/src/Pages/Read.cshtml
new file mode 100644
index 0000000..2aecc75
--- /dev/null
+++ b/src/Pages/Read.cshtml
@@ -0,0 +1,26 @@
+@page "/les/{site}"
+@model ReadModel
+@{
+ ViewData["Title"] = Model.Source.Title;
+}
+
+<div style="display: flex; justify-content: space-between">
+ <div>
+ <h1>@Model.Source.Title</h1>
+ <p>@Model.Source.Subtitle</p>
+ </div>
+ <div style="display: flex; flex-direction: row">
+ <div style="flex-direction:column">
+ <small>Publisert: @Model.Source.PublishedAt.ToString("F")</small><br>
+ <small>Oppdatert: @Model.Source.UpdatedAt.ToString("F")</small>
+ </div>
+ <div style="margin: 0 5px; height: 100%; border: 1px solid black"></div>
+ <div style="flex-direction:column">
+ @foreach (var author in Model.Source.Authors) {
+ <small><em>@author.Name</em>: @author.Title</small> <br/>
+ }
+ </div>
+ </div>
+</div>
+<hr>
+@Html.Raw(Model.Source.Content) \ No newline at end of file
diff --git a/src/Pages/Read.cshtml.cs b/src/Pages/Read.cshtml.cs
new file mode 100644
index 0000000..16a1055
--- /dev/null
+++ b/src/Pages/Read.cshtml.cs
@@ -0,0 +1,24 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace I2R.LightNews.Pages;
+
+public class ReadModel : PageModel
+{
+ private readonly GrabberService _grabber;
+
+ public NewsArticle Source { get; set; }
+
+ public ReadModel(GrabberService grabber) {
+ _grabber = grabber;
+ }
+
+ public async Task<ActionResult> OnGet([FromRoute] string site, [FromQuery] string url) {
+ Source = site switch {
+ "nrk" => await _grabber.GrabNrkArticleAsync(url),
+ _ => default
+ };
+ if (Source == default) return Redirect("/");
+ return Page();
+ }
+} \ No newline at end of file
diff --git a/src/Pages/Shared/_Layout.cshtml b/src/Pages/Shared/_Layout.cshtml
new file mode 100644
index 0000000..bcdd658
--- /dev/null
+++ b/src/Pages/Shared/_Layout.cshtml
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="nb">
+<head>
+ <meta charset="utf-8"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <link rel="stylesheet" href="/reset.css" >
+ <link rel="stylesheet" href="/index.css" >
+ <title>@ViewData["Title"] - Lettnytt</title>
+</head>
+<body>
+<header>
+ <nav>
+ <a href="/nrk">NRK</a>
+ </nav>
+</header>
+<main>
+ @RenderBody()
+</main>
+</body>
+</html> \ No newline at end of file
diff --git a/src/Pages/_ViewImports.cshtml b/src/Pages/_ViewImports.cshtml
new file mode 100644
index 0000000..bc2d314
--- /dev/null
+++ b/src/Pages/_ViewImports.cshtml
@@ -0,0 +1,3 @@
+@using I2R.LightNews
+@namespace I2R.LightNews.Pages
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
diff --git a/src/Pages/_ViewStart.cshtml b/src/Pages/_ViewStart.cshtml
new file mode 100644
index 0000000..a5f1004
--- /dev/null
+++ b/src/Pages/_ViewStart.cshtml
@@ -0,0 +1,3 @@
+@{
+ Layout = "_Layout";
+}