Changing the way external_updater validates a crates URL

Before, it matched the crates homepage URL against the pattern. We have
to match the archive URL against the pattern instead.

Test: TreeHugger
Change-Id: I0c5bdcc3c77d5e72c5e50a206384e9574a9e5cd5
diff --git a/crates_updater.py b/crates_updater.py
index 497c228..dd574e7 100644
--- a/crates_updater.py
+++ b/crates_updater.py
@@ -29,9 +29,7 @@
 import metadata_pb2  # type: ignore
 import updater_utils
 
-CRATES_IO_URL_PATTERN: str = (r"^https:\/\/crates.io\/crates\/([-\w]+)")
-
-CRATES_IO_URL_RE: re.Pattern = re.compile(CRATES_IO_URL_PATTERN)
+LIBRARY_NAME_PATTERN: str = (r"([-\w]+)")
 
 ALPHA_BETA_PATTERN: str = (r"^.*[0-9]+\.[0-9]+\.[0-9]+-(alpha|beta).*")
 
@@ -41,6 +39,13 @@
 
 VERSION_MATCHER: re.Pattern = re.compile(VERSION_PATTERN)
 
+CRATES_IO_ARCHIVE_URL_PATTERN: str = (r"^https:\/\/static.crates.io\/crates\/" +
+                                      LIBRARY_NAME_PATTERN + "/" +
+                                      LIBRARY_NAME_PATTERN + "-" +
+                                      VERSION_PATTERN + ".crate")
+
+CRATES_IO_ARCHIVE_URL_RE: re.Pattern = re.compile(CRATES_IO_ARCHIVE_URL_PATTERN)
+
 DESCRIPTION_PATTERN: str = (r"^description *= *(\".+\")")
 
 DESCRIPTION_MATCHER: re.Pattern = re.compile(DESCRIPTION_PATTERN)
@@ -55,9 +60,7 @@
     temp_file: IO
 
     def is_supported_url(self) -> bool:
-        if self._old_url.type != metadata_pb2.URL.HOMEPAGE:
-            return False
-        match = CRATES_IO_URL_RE.match(self._old_url.value)
+        match = CRATES_IO_ARCHIVE_URL_RE.match(self._old_url.value)
         if match is None:
             return False
         self.package = match.group(1)