#!/usr/bin/env python

import urllib2
import os.path
import sys
import base64
from simpletal import simpleTAL, simpleTALES, simpleTALUtils

authfile = "%s/.seenthis/auth" % os.environ['HOME']
endpoint = 'https://seenthis.net/api/messages'
myencoding = "ISO-8859-1" # Encoding of the user's locale. We should
                          # retrieve it from the environment. TODO.

mytemplate = """
<entry xmlns='http://www.w3.org/2005/Atom'
       xmlns:thr='http://purl.org/syndication/thread/1.0'
       xmlns:docs='http://schemas.google.com/docs/2007'>
    <summary tal:content="message"/>
</entry>
"""

if len(sys.argv) != 1:
    print >>sys.stderr, ("Usage: %s\nThe message is read on the standard input" % \
                         sys.argv[0])
    sys.exit(1)
message = sys.stdin.read()

if not os.path.exists(authfile):
    print >>sys.stderr, ("Cannot find %s" % authfile)
    sys.exit(1)
auth = open(authfile)
username = auth.readline()[:-1]
password = auth.readline()[:-1]

context = simpleTALES.Context(allowPythonPath=False)
context.addGlobal ("message", unicode(message, encoding=myencoding))
template = simpleTAL.compileXMLTemplate (mytemplate)
result = simpleTALUtils.FastStringOutput()
template.expand (context, result)
request = urllib2.Request(url=endpoint,
                          data=result.getvalue())
credentials = base64.b64encode('%s:%s' % (username, password))
request.add_header('User-agent', 'My-own-SeenThis-client/0.0 Python/%s' % \
                      sys.version.split()[0])
request.add_header('Authorization', 'Basic %s' % credentials)
request.add_header('Content-Type', 'application/atom+xml;type=entry')
server = urllib2.urlopen(request)
print server.read()


