From b966efa17d837dc62c23d5f8064e184e22b14c2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Roztoc=CC=8Cil?= Date: Sat, 25 Feb 2012 13:39:38 +0100 Subject: [PATCH] Initial commit. --- .gitignore | 4 ++ README.md | 15 +++++ httpie.png | Bin 0 -> 69450 bytes httpie/__init__.py | 0 httpie/httpie.py | 157 +++++++++++++++++++++++++++++++++++++++++++++ httpie/pretty.py | 49 ++++++++++++++ setup.py | 11 ++++ 7 files changed, 236 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 httpie.png create mode 100644 httpie/__init__.py create mode 100755 httpie/httpie.py create mode 100644 httpie/pretty.py create mode 100644 setup.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..2392a06f --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +dist +httpie.egg-info +build +*.pyc diff --git a/README.md b/README.md new file mode 100644 index 00000000..b7c06ccb --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +## HTTPie: cURL for humans + +HTTPie is a CLI frontend for [python-requests](python-requests.org). + + +### Installation + + pip install httpie + + +### Screenshot + +![httpie](https://github.com/jkbr/httpie/raw/master/httpie.png) + + diff --git a/httpie.png b/httpie.png new file mode 100644 index 0000000000000000000000000000000000000000..5bda1043ac2e256116e000c097ecf4f424c9dd09 GIT binary patch literal 69450 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 literal 0 HcmV?d00001 diff --git a/httpie/__init__.py b/httpie/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/httpie/httpie.py b/httpie/httpie.py new file mode 100755 index 00000000..0a86a605 --- /dev/null +++ b/httpie/httpie.py @@ -0,0 +1,157 @@ +#!/usr/bin/env python +import os +import sys +import json +import argparse +from collections import namedtuple +import requests +from requests.structures import CaseInsensitiveDict +from .pretty import prettify + + +__author__ = 'Jakub Roztocil' +__version__ = '0.1' + + +DEFAULT_UA = 'HTTPie/%s' % __version__ +SEP_COMMON = ':' +SEP_DATA = '=' +TYPE_FORM = 'application/x-www-form-urlencoded; charset=utf-8' +TYPE_JSON = 'application/json; charset=utf-8' + + +KeyValue = namedtuple('KeyValue', ['key', 'value', 'sep']) + + +class KeyValueType(object): + + def __init__(self, separators): + self.separators = separators + + def __call__(self, string): + + found = {string.find(sep): sep + for sep in self.separators + if string.find(sep) != -1} + if not found: + raise argparse.ArgumentTypeError( + '"%s" is not a valid value' % string) + sep = found[min(found.keys())] + key, value = string.split(sep, 1) + return KeyValue(key=key, value=value, sep=sep) + + +parser = argparse.ArgumentParser( + description='HTTPie - URL for humans.') + + +# Content type. +group = parser.add_mutually_exclusive_group(required=False) +group.add_argument('--json', '-j', action='store_true', + help='Serialize data items as a JSON object and set' + ' Content-Type to application/json, if not specified.') +group.add_argument('--form', '-f', action='store_true', + help='Serialize data items as form values and set' + ' Content-Type to application/x-www-form-urlencoded,' + ' if not specified.') + +parser.add_argument('--ugly', '-u', help='Do not prettify the response.', + dest='prettify', action='store_false', default=True) + +# ``requests.request`` keyword arguments. +parser.add_argument('--auth', help='username:password', + type=KeyValueType(SEP_COMMON)) +parser.add_argument('--verify', + help='Set to "yes" to check the host\'s SSL certificate.' + ' You can also pass the path to a CA_BUNDLE' + ' file for private certs. You can also set ' + 'the REQUESTS_CA_BUNDLE environment variable.') +parser.add_argument('--proxy', default=[], action='append', + type=KeyValueType(SEP_COMMON), + help='String mapping protocol to the URL of the proxy' + ' (e.g. http:foo.bar:3128).') +parser.add_argument('--allow-redirects', default=False, action='store_true', + help='Set this flag if full redirects are allowed' + ' (e.g. re-POST-ing of data at new ``Location``)') +parser.add_argument('--file', metavar='PATH', type=argparse.FileType(), + default=[], action='append', + help='File to multipart upload') +parser.add_argument('--timeout', type=float, + help='Float describes the timeout of the request' + ' (Use socket.setdefaulttimeout() as fallback).') + +# Positional arguments. +parser.add_argument('method', + help='HTTP method to be used for the request' + ' (GET, POST, PUT, DELETE, PATCH, ...).') +parser.add_argument('url', metavar='URL', + help='Protocol defaults to http:// if the' + ' URL does not include it.') +parser.add_argument('items', metavar='item', nargs='*', + type=KeyValueType([SEP_COMMON, SEP_DATA]), + help='HTTP header (key:value) or data field (key=value)') + + + + +def main(): + args = parser.parse_args() + + # Parse request headers and data from the command line. + headers = CaseInsensitiveDict() + headers['User-Agent'] = DEFAULT_UA + data = {} + for item in args.items: + if item.sep == SEP_COMMON: + target = headers + else: + if not sys.stdin.isatty(): + parser.error('Request body (stdin) and request ' + 'data (key=value) cannot be mixed.') + target = data + target[item.key] = item.value + + if not sys.stdin.isatty(): + data = sys.stdin.read() + + # JSON/Form content type. + if args.json or (not args.form and data): + if sys.stdin.isatty(): + data = json.dumps(data) + if 'Content-Type' not in headers and (data or args.json): + headers['Content-Type'] = TYPE_JSON + elif 'Content-Type' not in headers: + headers['Content-Type'] = TYPE_FORM + + # Fire the request. + response = requests.request( + method=args.method.lower(), + url=args.url if '://' in args.url else 'http://%s' % args.url, + headers=headers, + data=data, + verify=True if args.verify == 'yes' else args.verify, + timeout=args.timeout, + auth=(args.auth.key, args.auth.value) if args.auth else None, + proxies={proxy.key: proxy.value for proxy in args.proxy}, + files={os.path.basename(f.name): f for f in args.file} + ) + + # Display the response. + original = response.raw._original_response + response_bits = ( + u'HTTP/{version} {status} {reason}'.format( + version='.'.join(str(original.version)), + status=original.status, reason=original.reason, + ), + str(original.msg).decode('utf-8'), + response.content.decode('utf-8') if response.content else u'' + ) + + if args.prettify and sys.stdout.isatty(): + response_bits = prettify(response.headers['content-type'], *response_bits) + + print u'\n'.join(response_bits) + + +if __name__ == '__main__': + main() diff --git a/httpie/pretty.py b/httpie/pretty.py new file mode 100644 index 00000000..6a0d914d --- /dev/null +++ b/httpie/pretty.py @@ -0,0 +1,49 @@ +import json +from functools import partial +import pygments +from pygments.lexers import get_lexer_for_mimetype +from pygments.formatters.terminal256 import Terminal256Formatter +from pygments.lexer import RegexLexer, bygroups +from pygments import token + + +TYPE_JS = 'application/javascript' + + +class HTTPLexer(RegexLexer): + name = 'HTTP' + aliases = ['http'] + filenames = ['*.http'] + tokens = { + 'root': [ + (r'\s+', token.Text), + (r'(HTTP/[\d.]+\s+)(\d+)(\s+.+)', bygroups( + token.Operator, token.Number, token.String)), + (r'(.*?:)(.+)', bygroups(token.Name, token.String)) + ]} + + +highlight = partial(pygments.highlight, + formatter=Terminal256Formatter(style='native')) +highlight_http = partial(highlight, lexer=HTTPLexer()) + + +def prettify(content_type, status_line, headers, body): + content_type = content_type.split(';')[0] + + if 'json' in content_type: + content_type = TYPE_JS + try: + # Indent JSON + body = json.dumps(json.loads(body), sort_keys=True, indent=4) + except Exception: + pass + + try: + body = highlight(code=body, lexer=get_lexer_for_mimetype(content_type)) + except Exception: + pass + + return (highlight_http(code=status_line).strip(), + highlight_http(code=headers), + body) diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..db60cbef --- /dev/null +++ b/setup.py @@ -0,0 +1,11 @@ +from setuptools import setup + + +setup(name='httpie',version='0.1', + description='cURL for humans', + url='https://github.com/jkbr/httpie', + author='Jakub Roztocil', + license='BSD', + packages=['httpie'], + entry_points={'console_scripts': ['httpie = httpie.httpie:main']}, + install_requires=['requests>=0.10.4', 'Pygments>=1.4'])