#!/usr/bin/python3

from mechanize import Browser
import lxml.html
import mailbox
import urwid
import lxml
import sys
import os

debug = False
dump = False
debug = True
dump = True

maildir_name = os.path.expanduser('~/mail/.archives.web.ato')
maildir = mailbox.Maildir(maildir_name)

b = Browser()
b.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.4.0')]
b.set_handle_refresh(False)
b.set_handle_robots(False)

if debug:
        b.set_debug_redirects(True)
        b.set_debug_responses(True)
        b.set_debug_http(True)

        if dump:
                import logging
                logger = logging.getLogger("mechanize")
                logger.addHandler(logging.StreamHandler(sys.stdout))
                logger.setLevel(logging.INFO)

b.open('https://www.my.gov.au/')

for form in b.forms():
  if form.method == 'POST':
    b.form = form

b['userId'] = raw_input("Username: ")
b['password'] = raw_input("Password: ")
r = b.submit()

for form in b.forms():
  if form.method == 'POST':
    b.form = form

r = lxml.html.parse(r).getroot()
question = "//p[@id='question']/strong"
question = str(r.xpath(question)[0].xpath(s))
print("Question: %s" % question)
b['answer'] = raw_input("Answer: ")
r = b.submit()

for form in b.forms():
  if form.method == 'POST':
    b.form = form

b.click(type='button', id='cancel')

b.follow_link(text='Inbox')
b.follow_link(title='Inbox')

sys.exit(0)

import os
import sys
import mailbox
import lxml
import lxml.html
import lxml.html.html5parser
import requests
import tempfile
import subprocess
import shutil
import atexit

try: account = sys.argv[1]
except IndexError: account = 'slashdotaccount'
params = { 'to': account }
# webindex also works
inbox = requests.get('https://mailinator.com/api/inbox', params=params).json()
tmpdir = tempfile.mkdtemp(prefix='mailinator.%s.' % account, suffix='.tmp')
atexit.register(shutil.rmtree, tmpdir)
maildir_name = os.path.join(tmpdir, 'Maildir')
maildir = mailbox.Maildir(maildir_name)
proc = subprocess.Popen(['mutt', '-Rf', maildir_name])
for info in inbox['messages']:
	msgid = info['id']
	params = { 'msgid': msgid, 'text': 'true' }
	# api/email returns JSON but is limited by fetches per time period
	response = requests.get('https://mailinator.com/rendermail.jsp', params=params)
	html = response.text
	try:
		dom = lxml.html.html5parser.document_fromstring(html)
	except ValueError:
		print('skipped message: {msgid}'.format(msgid=msgid))
		continue
	mail = dom.xpath('//html:pre', namespaces=dom.nsmap)[0].xpath('string()')
	maildir.add(bytes(mail, encoding='utf-8'))
proc.wait()
