private static async Task Get(HttpResponse res, int index) { var show = await Slides.LoadAsync(); if (Interlocked.Exchange(ref _started, 1) == 0) { await StartOnline(show); } if (show.TryGetSlide(index, out var slide)) { var backgroundImage = slide.Metadata.GetStringOrDefault("backgroundImage", show.Metadata.GetStringOrEmpty("backgroundImage")); var html = Web.template_html.Utf8ToString() .Replace("{{title}}", slide.Metadata.GetStringOrDefault("title", show.Metadata.GetStringOrEmpty("title"))) .Replace("{{layout}}", slide.Metadata.GetStringOrDefault("layout", show.Metadata.GetStringOrDefault("layout", "blank"))) .Replace("{{inlineStyle}}", BackgroundStyle.Generate(backgroundImage)) .Replace("{{content}}", slide.Html) .Replace("{{previousIndex}}", (index - 1).ToString(CultureInfo.InvariantCulture)) .Replace("{{nextIndex}}", (index + 1).ToString(CultureInfo.InvariantCulture)) .Replace("{{deckhub}}", _options.Api); res.ContentType = "text/html"; res.StatusCode = 200; await res.WriteAsync(html); return; } res.StatusCode = 404; }