<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _request(self, path, method="GET", query=None, body=None, headers=None):
 """Make a Manta request @returns (res, content) """

        assert path.startswith('/'), "bogus path: %r" % path

        # Presuming utf-8 encoding here for requests. Not sure if that is
        # technically correct.
        if not isinstance(path, bytes):
            spath = path.encode('utf-8')
        else:
            spath = path

        qpath = urlquote(spath)
        if query:
            qpath += '?' + urlencode(query)
        url = self.url + qpath
        http = self._get_http()

        ubody = body
        if body is not None and isinstance(body, dict):
            ubody = urlencode(body)
        if headers is None:
            headers = {}
        headers["User-Agent"] = self.user_agent

        if self.signer:
            # Signature auth.
            if "Date" not in headers:
                headers["Date"] = http_date()
            sigstr = 'date: ' + headers["Date"]
            algorithm, fingerprint, signature = self.signer.sign(sigstr.encode(
                'utf-8'))
            auth = 'Signature keyId="/%s/keys/%s",algorithm="%s",signature="%s"'\
                   % ('/'.join(filter(None, [self.account, self.subuser])),
                      fingerprint, algorithm, signature.decode('utf-8'))

            headers["Authorization"] = auth

            if self.role:
                headers['Role'] = self.role

        # python 3
        try:
            url = url.decode('utf-8')  # encoding='utf-8'
        except:
            pass

        return http.request(url, method, ubody, headers)