from ExamplePage import ExamplePage


class RequestInformation(ExamplePage):
    """Request information demo."""

    def writeContent(self):
        self.writeln('<h3>Request Variables</h3>')
        self.writeln('<p>The following table'
            ' shows the values for various request variables.</p>')
        self.writeln('<table style="font-size:small;width:100%"'
            ' border="0" cellpadding="2" cellspacing="2" width="100%">')
        request = self.request()
        self.dict('fields()', request.fields())
        self.dict('environ()', request.environ())
        self.dict('cookies()', request.cookies())
        self.writeln('</table>')
        setCookie = self.response().setCookie
        setCookie('TestCookieName', 'CookieValue')
        setCookie('TestExpire1', 'expires in 1 minute', expires='+1m')

    def pair(self, key, value):
        valueType = type(value)
        if valueType is type([]) or valueType is type(()):
            value = ', '.join(map(str, value))
        self.writeln('<tr valign="top"><td>%s</td><td>%s</td></tr>'
            % (key, self.htmlEncode(str(value))))

    def list(self, codeString):
        list = eval(codeString)
        assert type(list) is type([])  or  type(list) is type(())
        self.pair(codeString, list)

    def dict(self, name, dict):
        self.writeln('<tr valign="top">'
            '<td style="background-color:#CCF" colspan="2">%s</td>'
            '</tr>' % (name))
        keys = dict.keys()
        keys.sort()
        for name in keys:
            self.writeln('<tr valign="top" style="background-color:#EEF">'
                '<td>%s</td><td>%s</td></tr>' % (name, self.htmlEncode(
                str(dict[name])).replace('\n', '<br>').replace(
                ',', ',<wbr>').replace(';', ';<wbr>').replace(':/', ':<wbr>/')))