[tor-commits] [gettor/master] Make locale parsing less eager

cohosh at torproject.org cohosh at torproject.org
Thu Mar 12 17:14:14 UTC 2020


commit 829fa9fbaabd9c196701085c66621efac9d07b8f
Author: Cecylia Bocovich <cohosh at torproject.org>
Date:   Fri Feb 14 16:36:29 2020 -0500

    Make locale parsing less eager
    
    This will make the locale parsing more restrictive so that, for example,
    sending "i like fries" will not result in the locale "fr".
---
 gettor/parse/email.py       | 16 +++++++++-------
 tests/test_email_service.py |  7 ++++++-
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/gettor/parse/email.py b/gettor/parse/email.py
index 9409a99..5a3e45e 100644
--- a/gettor/parse/email.py
+++ b/gettor/parse/email.py
@@ -123,16 +123,18 @@ class EmailParser(object):
             if len(line.strip()) > 0 and line.strip()[0] == ">":
                 continue
             for word in re.split(r"\s+", line.strip()):
+                word = word.lower()
                 for locale in self.locales:
-                    if word.lower() == locale.lower():
+                    if word == locale.lower():
                         request["language"] = locale
-                    elif (not request["language"]) and (word.lower()[:2] ==
-                            locale.lower()[:2]):
-                        request["language"] = locale
-                if word.lower() in self.platforms:
+                    elif not request["language"]:
+                        parts = re.split(r"[-_]", word)
+                        if parts[0] == locale.lower()[:2]:
+                            request["language"] = locale
+                if word in self.platforms:
                     request["command"] = "links"
-                    request["platform"] = word.lower()
-                if (not request["command"])  and word.lower() == "help":
+                    request["platform"] = word
+                if (not request["command"]) and word == "help":
                     request["command"] = "help"
         return request
 
diff --git a/tests/test_email_service.py b/tests/test_email_service.py
index 71c3d4f..4326b9c 100644
--- a/tests/test_email_service.py
+++ b/tests/test_email_service.py
@@ -213,7 +213,7 @@ class EmailServiceTests(unittest.TestCase):
     def test_help_reply(self):
         #Replying to GetTor Help with a valid links request should get you links
         ep = conftests.EmailParser(self.settings, "gettor at torproject.org")
-        ep.locales = ["en-US", "es-ES", "es-AR", "pt-BR", "fa"]
+        ep.locales = ["en-US", "es-ES", "es-AR", "pt-BR", "fa", "fr"]
         request = ep.parse("From: \"silvia [hiro]\" <hiro at torproject.org>\n"
                 "Subject: Re: [GetTor] Help Email\r\n Reply-To: hiro at torproject.org \nTo:"
                 "gettor at torproject.org\n osx en\n")
@@ -223,6 +223,11 @@ class EmailServiceTests(unittest.TestCase):
 
         request = ep.parse("From: \"silvia [hiro]\" <hiro at torproject.org>\n"
                 "Subject: Re: [GetTor] Help Email\r\n Reply-To: hiro at torproject.org \nTo:"
+                "gettor at torproject.org\n i like french fries\n")
+        self.assertEqual(request["command"], "help")
+
+        request = ep.parse("From: \"silvia [hiro]\" <hiro at torproject.org>\n"
+                "Subject: Re: [GetTor] Help Email\r\n Reply-To: hiro at torproject.org \nTo:"
                 "gettor at torproject.org\nlinux fa\n\n"
                 "On 2020-02-10 11:54 a.m., gettor at torproject.org wrote:\n"
                 "> This is how you can request a tor browser bundle link.\n"



More information about the tor-commits mailing list