#!/usr/bin/python2

import cgi, traceback, urllib2
import common
from autotest_lib.frontend.afe.json_rpc import serviceHandler

script = """\
Content-Type: text/javascript

%(callback)s(%(result)s);
"""

class LogFileNotFound(Exception):
    pass

form = cgi.FieldStorage(keep_blank_values=True)
encoded_request = form['request'].value
callback = form['callback'].value

request = serviceHandler.ServiceHandler.translateRequest(encoded_request)
parameters = request['params'][0]
path = parameters['path']

result_dict = serviceHandler.ServiceHandler.blank_result_dict()
try:
    file_contents = urllib2.urlopen('http://localhost' + path).read()
    result_dict['result'] = file_contents
except urllib2.HTTPError:
    result_dict['err'] = LogFileNotFound('%s not found' % path)
    result_dict['err_traceback'] = traceback.format_exc()

encoded_result = serviceHandler.ServiceHandler.translateResult(result_dict)
print script % dict(callback=callback, result=encoded_result)
