private void SaveLink(Entities.Link link) { Program.database.GetCollection <Entities.Link>("links").Insert(link); Console.WriteLine($"New Link:\n Original URL: {link.OriginalUrl}\n Shortened URL: {link.ShortUrl}\n Analytics Tag: {link.AnalyticsTag}"); }
void generateElementsTextblock(Entities inlines) { this.Inlines.Clear(); try { ApnItem item = this.DataContext as ApnItem; string text = ""; if (item != null) { text = item.displayText; } this.Foreground = Brushes.Black; if (inlines.allEntities == null) { this.Inlines.Add(text); } else { if (inlines.allEntities.Count == 0) { this.Inlines.Add(text); } else { int startPosition = 0; foreach (Entities.IEntity entity in inlines.allEntities) { if (typeof(Entities.Link) == entity.GetType()) { Entities.Link innerLink = entity as Entities.Link; this.Inlines.Add(text.Substring(Math.Min(startPosition, text.Length - 1), Math.Max(0, innerLink.pos - startPosition))); startPosition = innerLink.pos + innerLink.len + 1; Hyperlink link = new Hyperlink(); link.TextDecorations = null; link.Foreground = Brushes.Purple; Uri target; Uri.TryCreate(innerLink.url, UriKind.Absolute, out target); link.NavigateUri = target; link.Inlines.Add(innerLink.text); link.ToolTip = innerLink.url; link.Cursor = Cursors.Hand; link.Click += new RoutedEventHandler(link_Click); ContextMenu contextMenuLink = new ContextMenu(); MenuItem menuItemCopyToClipboard = new MenuItem(); menuItemCopyToClipboard.Header = "Copy link"; menuItemCopyToClipboard.CommandParameter = innerLink.url; menuItemCopyToClipboard.Click += new RoutedEventHandler(menuItemCopyToClipboard_Click); contextMenuLink.Items.Add(menuItemCopyToClipboard); MenuItem menuItemOpenInBrowser = new MenuItem(); menuItemOpenInBrowser.Header = "Open in webbrowser"; menuItemOpenInBrowser.CommandParameter = innerLink.url; menuItemOpenInBrowser.Click += new RoutedEventHandler(menuItemOpenInBrowser_Click); contextMenuLink.Items.Add(menuItemOpenInBrowser); link.ContextMenu = contextMenuLink; this.Inlines.Add(link); this.Inlines.Add(" "); } else if (typeof(Entities.Hashtag) == entity.GetType()) { Entities.Hashtag innerHash = entity as Entities.Hashtag; this.Inlines.Add(text.Substring(Math.Min(startPosition, text.Length - 1), Math.Max(0, innerHash.pos - startPosition))); startPosition = innerHash.pos + innerHash.len + 1; Hyperlink link = new Hyperlink(); link.TextDecorations = null; link.Foreground = Brushes.Red; link.TargetName = innerHash.name; link.Inlines.Add("#" + innerHash.name); link.ToolTip = "Open hashtag #" + innerHash.name; link.Cursor = Cursors.Hand; link.Click += new RoutedEventHandler(hashtag_Click); this.Inlines.Add(link); this.Inlines.Add(" "); } else if (typeof(Entities.Mention) == entity.GetType()) { Entities.Mention innerMention = entity as Entities.Mention; this.Inlines.Add(text.Substring(Math.Min(startPosition, text.Length - 1), Math.Max(0, innerMention.pos - startPosition))); startPosition = innerMention.pos + innerMention.len + 1; Hyperlink link = new Hyperlink(); link.TextDecorations = null; link.Foreground = Brushes.DarkGreen; link.TargetName = innerMention.name; link.Inlines.Add("@" + innerMention.name); link.ToolTip = "Open user info of @" + innerMention.name; link.Cursor = Cursors.Hand; link.Click += new RoutedEventHandler(username_Click); this.Inlines.Add(link); this.Inlines.Add(" "); } } if (startPosition < text.Length) { this.Inlines.Add(text.Substring(startPosition - 1)); } } } } catch (Exception exp) { Console.WriteLine(exp.Message); } }
public IActionResult Get(string url) { if (url == null || url.ToLower() == "help") { return(RedirectPermanent("https://mastrchef.rocks/quicklinks")); } if (Uri.IsWellFormedUriString(url, UriKind.Absolute)) { var link = new Entities.Link($"{Request.Path}{Request.QueryString}".TrimStart('/')); new Thread(() => { Thread.CurrentThread.IsBackground = true; SaveLink(link); }).Start(); return(new JsonResult(link)); } else if (url.ToLower().StartsWith("delete/")) { url = url.Substring("delete/".Length); var link = Program.database.GetCollection <Entities.Link>("links").FindOne(l => l.AnalyticsTag.ToLower() == url.ToLower()); if (link != null) { Program.database.GetCollection <Entities.Link>("links").Delete(l => l.AnalyticsTag.ToLower() == url.ToLower()); return(new JsonResult("Sucessfully Deleted Link")); } else { HttpContext.Response.StatusCode = 404; return(new JsonResult("Not Found")); } } else if (url.ToLower().StartsWith("custom/")) { url = $"{Request.Path}{Request.QueryString}".TrimStart('/').Substring("custom/".Length); string sLink = url.Split("/")[0]; url = url.Substring($"{sLink}/".Length); var testLink = Program.database.GetCollection <Entities.Link>("links").FindOne(l => l.ShortUrl.ToLower() == sLink.ToLower()); if (testLink == null) { if (Uri.IsWellFormedUriString(url, UriKind.Absolute)) { var link = new Entities.Link(url, sLink); new Thread(() => { Thread.CurrentThread.IsBackground = true; SaveLink(link); }).Start(); return(new JsonResult(link)); } else { HttpContext.Response.StatusCode = 400; return(new JsonResult("Invalid URL")); } } else { HttpContext.Response.StatusCode = 400; return(new JsonResult("ShortLink Already in Use")); } } else { var link = Program.database.GetCollection <Entities.Link>("links").FindOne(l => l.ShortUrl.ToLower() == url.ToLower()); if (link != null) { HttpContext.Response.StatusCode = 302; return(Redirect(link.OriginalUrl)); } else { HttpContext.Response.StatusCode = 404; return(new JsonResult("Not Found")); } } }