def METHOD_NAME(self, pyfile):
    disposition = False
    json_data = self.api_request(
        "files/" + self.info["pattern"]["ID"],
        fields="md5Checksum,name,size",
        supportsAllDrives="true",
    )
    if json_data is None:
        self.fail("API error")
    self.data = self.load(pyfile.url, ref=False)
    if "error" in json_data:
        if json_data["error"]["code"] == 404:
            if "Virus scan warning" not in self.data:
                self.offline()
            else:
                m = re.search(self.INFO_PATTERN, self.data)
                if m is not None:
                    pyfile.name = m.group("N")
                    pyfile.size = parse.bytesize(m.group("S"), m.group("U"))
                else:
                    disposition = True
        else:
            self.fail(json_data["error"]["message"])
    else:
        pyfile.size = int(json_data["size"])
        pyfile.name = json_data["name"]
        self.info["md5"] = json_data["md5Checksum"]
    # Somehow, API downloads are significantly slow compared to "normal" download :(
    # self.api_download(disposition)
    for _i in range(2):
        m = re.search(r'"([^"]+uc\?.*?)"', self.data)
        if m is None:
            if "Quota exceeded" in self.data:
                self.temp_offline()
            else:
                self.fail(self._("link pattern not found"))
        link = re.sub(
            r"\\[uU]([\da-fA-F]{4})", lambda x: chr(int(x.group(1), 16)), m.group(1)
        )  #: unescape unicode-escape
        link = urllib.parse.urljoin(pyfile.url, link)
        #: "Only files smaller than 100 MB can be scanned for viruses"
        #: https://support.google.com/a/answer/172541?hl=en
        if pyfile.size > 104857600 or "Virus scan warning" in self.data:
            if re.search(r"/uc\?.*&confirm=", link):
                self.download(link, disposition=disposition)
                break
            else:
                self.data = self.load(link)
        else:
            self.download(link, disposition=disposition)
            break