From b2be896e95c6a12b0a090881e08fb25e944a92ec Mon Sep 17 00:00:00 2001 From: Nicolas Constant Date: Mon, 1 Feb 2021 20:19:14 -0500 Subject: [PATCH] added regexes --- src/BirdsiteLive.Common/Regexes/HashtagRegexes.cs | 9 +++++++++ src/BirdsiteLive.Common/Regexes/UrlRegexes.cs | 9 +++++++++ src/BirdsiteLive.Common/Regexes/UserRegex.cs | 9 --------- src/BirdsiteLive.Common/Regexes/UserRegexes.cs | 10 ++++++++++ src/BirdsiteLive/Controllers/UsersController.cs | 2 +- src/BirdsiteLive/Controllers/WellKnownController.cs | 2 +- 6 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 src/BirdsiteLive.Common/Regexes/HashtagRegexes.cs create mode 100644 src/BirdsiteLive.Common/Regexes/UrlRegexes.cs delete mode 100644 src/BirdsiteLive.Common/Regexes/UserRegex.cs create mode 100644 src/BirdsiteLive.Common/Regexes/UserRegexes.cs diff --git a/src/BirdsiteLive.Common/Regexes/HashtagRegexes.cs b/src/BirdsiteLive.Common/Regexes/HashtagRegexes.cs new file mode 100644 index 0000000..c5e8ed7 --- /dev/null +++ b/src/BirdsiteLive.Common/Regexes/HashtagRegexes.cs @@ -0,0 +1,9 @@ +using System.Text.RegularExpressions; + +namespace BirdsiteLive.Common.Regexes +{ + public class HashtagRegexes + { + public static readonly Regex Hashtag = new Regex(@"(.)(#[a-zA-Z0-9]+)(\s|$|[.,;:!?/|-])"); + } +} \ No newline at end of file diff --git a/src/BirdsiteLive.Common/Regexes/UrlRegexes.cs b/src/BirdsiteLive.Common/Regexes/UrlRegexes.cs new file mode 100644 index 0000000..ea3e5c2 --- /dev/null +++ b/src/BirdsiteLive.Common/Regexes/UrlRegexes.cs @@ -0,0 +1,9 @@ +using System.Text.RegularExpressions; + +namespace BirdsiteLive.Common.Regexes +{ + public class UrlRegexes + { + public static readonly Regex Url = new Regex(@"((http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)"); + } +} \ No newline at end of file diff --git a/src/BirdsiteLive.Common/Regexes/UserRegex.cs b/src/BirdsiteLive.Common/Regexes/UserRegex.cs deleted file mode 100644 index b3da74a..0000000 --- a/src/BirdsiteLive.Common/Regexes/UserRegex.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Text.RegularExpressions; - -namespace BirdsiteLive.Common.Regexes -{ - public class UserRegex - { - public static readonly Regex TwitterAccountRegex = new Regex(@"^[a-zA-Z0-9_]+$"); - } -} \ No newline at end of file diff --git a/src/BirdsiteLive.Common/Regexes/UserRegexes.cs b/src/BirdsiteLive.Common/Regexes/UserRegexes.cs new file mode 100644 index 0000000..74c8b2e --- /dev/null +++ b/src/BirdsiteLive.Common/Regexes/UserRegexes.cs @@ -0,0 +1,10 @@ +using System.Text.RegularExpressions; + +namespace BirdsiteLive.Common.Regexes +{ + public class UserRegexes + { + public static readonly Regex TwitterAccount = new Regex(@"^[a-zA-Z0-9_]+$"); + public static readonly Regex Mention = new Regex(@"(.)(@[a-zA-Z0-9_]+)(\s|$|[,;:!?/|-]|(. ))"); + } +} \ No newline at end of file diff --git a/src/BirdsiteLive/Controllers/UsersController.cs b/src/BirdsiteLive/Controllers/UsersController.cs index 486d9b6..0fbefcd 100644 --- a/src/BirdsiteLive/Controllers/UsersController.cs +++ b/src/BirdsiteLive/Controllers/UsersController.cs @@ -62,7 +62,7 @@ namespace BirdsiteLive.Controllers // Ensure valid username // https://help.twitter.com/en/managing-your-account/twitter-username-rules TwitterUser user = null; - if (!string.IsNullOrWhiteSpace(id) && UserRegex.TwitterAccountRegex.IsMatch(id) && id.Length <= 15) + if (!string.IsNullOrWhiteSpace(id) && UserRegexes.TwitterAccount.IsMatch(id) && id.Length <= 15) user = _twitterUserService.GetUser(id); var acceptHeaders = Request.Headers["Accept"]; diff --git a/src/BirdsiteLive/Controllers/WellKnownController.cs b/src/BirdsiteLive/Controllers/WellKnownController.cs index f974665..4151ab0 100644 --- a/src/BirdsiteLive/Controllers/WellKnownController.cs +++ b/src/BirdsiteLive/Controllers/WellKnownController.cs @@ -164,7 +164,7 @@ namespace BirdsiteLive.Controllers // Ensure valid username // https://help.twitter.com/en/managing-your-account/twitter-username-rules - if (string.IsNullOrWhiteSpace(name) || !UserRegex.TwitterAccountRegex.IsMatch(name) || name.Length > 15 ) + if (string.IsNullOrWhiteSpace(name) || !UserRegexes.TwitterAccount.IsMatch(name) || name.Length > 15 ) return NotFound(); if (!string.IsNullOrWhiteSpace(domain) && domain != _settings.Domain)