def friendfeed_request(self, path, callback, access_token=None,<EOL>post_args=None, **args):
<EOL>url = "<STR_LIT>" + path<EOL>if access_token:<EOL><INDENT>all_args = {}<EOL>all_args.update(args)<EOL>all_args.update(post_args or {})<EOL>consumer_token = self._oauth_consumer_token()<EOL>method = "<STR_LIT:POST>" if post_args is not None else "<STR_LIT:GET>"<EOL>oauth = self._oauth_request_parameters(<EOL>url, access_token, all_args, method=method)<EOL>args.update(oauth)<EOL><DEDENT>if args: url += "<STR_LIT:?>" + urllib.urlencode(args)<EOL>callback = self.async_callback(self._on_friendfeed_request, callback)<EOL>http = httpclient.AsyncHTTPClient()<EOL>if post_args is not None:<EOL><INDENT>http.fetch(url, method="<STR_LIT:POST>", body=urllib.urlencode(post_args),<EOL>callback=callback)<EOL><DEDENT>else:<EOL><INDENT>http.fetch(url, callback=callback)<EOL><DEDENT>
Fetches the given relative API path, e.g., "/bret/friends"

        If the request is a POST, post_args should be provided. Query
        string arguments should be given as keyword arguments.

        All the FriendFeed methods are documented at
        http://friendfeed.com/api/documentation.

        Many methods require an OAuth access token which you can obtain
        through authorize_redirect() and get_authenticated_user(). The
        user returned through that process includes an 'access_token'
        attribute that can be used to make authenticated requests via
        this method. Example usage::

            class MainHandler(tornado.web.RequestHandler,
                              tornado.auth.FriendFeedMixin):
                @tornado.web.authenticated
                @tornado.web.asynchronous
                def get(self):
                    self.friendfeed_request(
                        "/entry",
                        post_args={"body": "Testing Tornado Web Server"},
                        access_token=self.current_user["access_token"],
                        callback=self.async_callback(self._on_post))

                def _on_post(self, new_entry):
                    if not new_entry:
                        # Call failed; perhaps missing permission?
                        self.authorize_redirect()
                        return
                    self.finish("Posted a message!")