3
# Copyright 2010 Canonical Ltd. This software is licensed under the
4
# GNU Affero General Public License version 3 (see the file LICENSE).
6
"""Create a static WADL file describing the current webservice.
10
% LPCONFIG=development bin/py utilities/create-lp-wadl-and-apidoc.py \\
11
"lib/canonical/launchpad/apidoc/wadl-development-%(version)s.xml"
13
import _pythonpath # Not lint, actually needed.
15
from cStringIO import StringIO
22
from zope.component import getUtility
26
from canonical.config import config
27
from canonical.launchpad.interfaces.librarian import ILibraryFileAliasSet
28
from canonical.launchpad.scripts import execute_zcml_for_scripts
29
from canonical.librarian.interfaces import (
30
IRestrictedLibrarianClient,
36
FILE_DATA = 'x' * FILE_SIZE
37
FILE_LIFETIME = datetime.timedelta(hours=1)
40
def store_file(client):
41
file_id = client.addFile(
42
'smoke-test-file', FILE_SIZE, StringIO(FILE_DATA), 'text/plain',
43
expires=datetime.datetime.now(pytz.UTC)+FILE_LIFETIME)
44
alias = getUtility(ILibraryFileAliasSet)[file_id]
50
print 'adding a private file to the librarian...'
51
restricted_client = getUtility(IRestrictedLibrarianClient)
52
private_url = store_file(restricted_client)
53
print 'retrieving private file from', private_url
54
if urllib.urlopen(private_url).read() != FILE_DATA:
55
print 'ERROR: data fetched does not match data written'
58
print 'adding a public file to the librarian...'
59
regular_client = getUtility(ILibrarianClient)
60
public_url = store_file(regular_client)
61
print 'retrieving public file from', public_url
62
if urllib.urlopen(public_url).read() != FILE_DATA:
63
print 'ERROR: data fetched does not match data written'
69
if __name__ == '__main__':
70
execute_zcml_for_scripts()