#!/usr/bin/env python

import httplib
import os
import sys
import shutil
import xml.etree.ElementTree as xml

basepath = os.path.abspath(os.path.join(sys.argv[0],
    os.path.pardir,
    os.path.pardir,
    'cfn',
    'cloudformation-examples'))

bucket = 'cloudformation-templates-us-east-1'

def main():
    conn = httplib.HTTPConnection('s3.amazonaws.com')
    conn.request('GET', '/%s/' % bucket)
    resp = conn.getresponse()

    tree = xml.parse(resp)
    rootElement = tree.getroot()

    if os.path.exists(basepath):
        print 'Deleting %s' % basepath
        shutil.rmtree(basepath)

    os.makedirs(basepath)
    print 'Creating %s' % basepath

    for entry in rootElement.iter('{http://s3.amazonaws.com/doc/2006-03-01/}Key'):
        key = entry.text
        if key.endswith('.html'):
            continue
        filename = os.path.join(basepath, key)

        print 'Writing to %s' % filename
        conn.request('GET', '/%s/%s' % (bucket, key))
        resp = conn.getresponse()
        contents = resp.read()

        f = open(filename, 'w')
        f.write(contents)
        f.close()

if __name__ == '__main__':
    main()
