'This function builds the data structure required by ``comment_check``,
``submit_spam``, and ``submit_ham``.
It modifies the ``data`` dictionary you give it in place. (and so
doesn\'t return anything)
It raises an ``AkismetError`` if the user IP or user-agent can\'t be
worked out.'

def _build_data(self, comment, data):

    data['comment_content'] = comment
    if (not ('user_ip' in data)):
        try:
            val = os.environ['REMOTE_ADDR']
        except KeyError:
            raise AkismetError("No    'user_ip'    supplied")
        data['user_ip'] = val
    if (not ('user_agent' in data)):
        try:
            val = os.environ['HTTP_USER_AGENT']
        except KeyError:
            raise AkismetError("No    'user_agent'    supplied")
        data['user_agent'] = val
    data.setdefault('referrer', os.environ.get('HTTP_REFERER', 'unknown'))
    data.setdefault('permalink', '')
    data.setdefault('comment_type', 'comment')
    data.setdefault('comment_author', '')
    data.setdefault('comment_author_email', '')
    data.setdefault('comment_author_url', '')
    data.setdefault('SERVER_ADDR', os.environ.get('SERVER_ADDR', ''))
    data.setdefault('SERVER_ADMIN', os.environ.get('SERVER_ADMIN', ''))
    data.setdefault('SERVER_NAME', os.environ.get('SERVER_NAME', ''))
    data.setdefault('SERVER_PORT', os.environ.get('SERVER_PORT', ''))
    data.setdefault('SERVER_SIGNATURE', os.environ.get('SERVER_SIGNATURE', ''))
    data.setdefault('SERVER_SOFTWARE', os.environ.get('SERVER_SOFTWARE', ''))
    data.setdefault('HTTP_ACCEPT', os.environ.get('HTTP_ACCEPT', ''))
    data.setdefault('blog', self.blog_url)
