Примеры на developer.google.com
действительно используют Python, так что это хорошая отправная точка. Однако, кажется, что API настолько мал, что даже официальный документ просто выбирает использовать встроенные модули Pи httplib
. Обобщение этой логики в вспомогательную функцию или две действительно кажется тривиальной задачей.
...
params = urllib.urlencode([
('js_code', sys.argv[1]),
('compilation_level', 'WHITESPACE_ONLY'),
('output_format', 'text'),
('output_info', 'compiled_code'),
])
# Always use the following value for the Content-type header.
headers = {"Content-type": "application/x-www-form-urlencoded"}
conn = httplib.HTTPConnection('closure-compiler.appspot.com')
conn.request('POST', '/compile', params, headers)
...
См https://developers.google.com/closure/compiler/docs/api-tutorial1
P.S. Вы также можете заглянуть в https://github.com/danielfm/closure-compiler-cli. Это инструмент командной строки, но источник демонстрирует, насколько просто API на самом деле.
Так отключив выше в питоновских API:
import httplib
import sys
import urllib
from contextlib import closing
def call_closure_api(**kwargs):
with closing(httplib.HTTPConnection('closure-compiler.appspot.com')) as conn:
conn.request(
'POST', '/compile',
urllib.urlencode(kwargs.items()),
headers={"Content-type": "application/x-www-form-urlencoded"}
)
return conn.getresponse().read()
call_closure_api(
js_code=sys.argv[1],
# feel free to introduce named constants for these
compilation_level='WHITESPACE_ONLY',
output_format='text',
output_info='compiled_code'
)
Великий, спасибо! Вы сделали через минуту то, что я планировал сделать сегодня сегодня, - это заняло бы у меня две минуты, надеюсь! – dangonfast
@gonvaled: см. Также редактирование :) –
, чтобы сообщить вам, я создал [этот gist] (https://gist.github.com/gonvaled/6840024) на основе вашего кода. – dangonfast