Esempio n. 1
0
 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}");
 }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
 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"));
         }
     }
 }