Need help with human_curl?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Lispython
206 Stars 41 Forks Other 121 Commits 22 Opened issues

Description

Simple Human wrapper for cURL library

Services available

!
?

Need anything else?

Contributors list

# 175,268
Shell
Node.js
virtual...
HTTP
77 commits
# 43,809
.NET
cpluspl...
msgpack
cpp14
5 commits
# 255,662
Shell
HTML
leaflet
curl
3 commits
# 464,138
subsoni...
audio-s...
MySQL
PHP
3 commits
# 631,270
Python
Shell
curl
2 commits
# 644,238
Python
Shell
curl
1 commit
# 98,664
Postgre...
psql
postgre...
Userscr...
1 commit
# 16,592
HTML
Shell
Rails
bottlep...
1 commit
# 691,944
Python
Shell
curl
1 commit
# 298,295
Shell
CSS
curl
1 commit
# 39,074
Python
Django
Flask
linear-...
1 commit
# 23,401
Shell
disasse...
TeX
gbz80
1 commit

Welcome to human_curl's documentation!

Curl requests for Humans

human_curl allow you to send HEAD, GET, POST, PUT, OPTIONS, and DELETE HTTP requests.

.. image:: https://secure.travis-ci.org/Lispython/humancurl.png :target: https://secure.travis-ci.org/Lispython/humancurl

Features

  • Custom HTTP headers
  • Request data/params
  • Multiple file uploading
  • Async requests!
  • Cookies support (dict or CookieJar)
  • Redirection history
  • Proxy support (http, https, socks4/5)
  • Custom interface for request!
  • Auto decompression of GZipped content
  • Unicode URL support
  • Request timers and another info
  • Certificate validation
  • ipv6 support
  • Basic/Digest authentication
  • OAuth support!
  • Debug request and response headers
  • .netrc support

Usage

Simple get request

>>> import human_curl as requests # python-requests.org compatibile
>>> # import human_curl as hurl # unfortunately hurl.it keeps this name :-)
>>> r = hurl.get('http://h.wrttn.me/basic-auth/test_username/test_password',
... auth=('test_username', 'test_password'))
>>> r.status_code
200
>>> r.content
'{"username": "test_username", "password": "test_password", "authenticated": true}'

Cookies and headers

>>> import human_curl as hurl # python-requests.org compatibile
>>> r = hurl.get("http://h.wrttn.me/cookies/set/ajfwjlknefjrrf/fkjwnfklrnjge")
>>> r.cookies
    {'ajfwjlknefjrrf': 'fkjwnfklrnjge'}
>>> r.headers['etag']
    bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f
>>> r.headers
    {'connection': 'keep-alive',
     'content-length': '2',
     'content-type': 'text/html; charset=UTF-8',
     'date': 'Mon, 05 Sep 2011 20:28:47 GMT',
     'etag': 'bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f',
     'server': 'LightBeer/0.568'}

Send files and variables

>>> import human_curl as hurl
>>> r = hurl.post('http://h.wrttn.me/post', files=(('file_1', '/tmp/testfile1.txt'),
... ('file2', open('/tmp/testfile2.txt'))), data={'var_name': 'var_value'})
>>> r.status_code
201

Redirects

>>> import human_curl as hurl
>>> r = hurl.get('http://h.wrttn.me/redirect/4', allow_redirects=True)
>>> r.status_code
200
>>> print(r.history)
['http://h.wrttn.me/redirect/3', 'http://h.wrttn.me/redirect/2',
 'http://h.wrttn.me/redirect/1', 'http://h.wrttn.me/redirect/end']
>>> print(r.url)
http://h.wrttn.me/redirect/end

Auth managers

>>> import human_curl as hurl
>>> from human_curl.auth import BasicAuth, DigestAuth
>>> auth_manager = DigesAuth('username', 'password')
>>> r = hurl.post('http://h.wrttn.me/digest-auth/auth/username/password',
... auth=auth_manager)
>>> r.status_code
200
>>> basic_auth_manager = BasicAuth('username', 'password')
>>> r = hurl.post('http://h.wrttn.me/basic-auth/username/password',
... auth=basic_auth_manager)
>>> r.status_code
200
>>> oauth_manager = OAuthManager((CONSUMER_KEY, CONSUMER_SECRET), (TOKEN_KEY, TOKEN_SECRET))
>>> r = hurl.get('http://oauth-protected.com/resource', auth=oauth_manager)
>>> r.status_code
200

Debug requests

>>> import human_curl as hurl
>>> # stdout_debug(debug_type, debug_msg)
>>> r = hurl.get("https://h.wrttn.me/basic-auth/username/password",
... debug=stdout_debug, allow_redirects=False,
... auth=("username", "password"))
>>> print(r.status_code)
200

Async requests

>>> from human_curl.async import AsyncClient
>>> async_client = AsyncClient(success_callback=lambda **kw: print kw,
... fail_callback=lambda **kw: print kw)
>>> async_client.get('http://h.wrttn.me/get')
>>> async_client.get('http://httpbin.org/get',
... success_callback=lambda **kw: print("success!"),
... fail_callback=lambda **kw: print("fail!")
>>> async_client.start()

TODO

  • curl command generation?

INSTALLATION

To use humancurl use pip or easyinstall:

pip install human_curl

or

easy_install human_curl

CONTRIBUTE

Fork https://github.com/Lispython/human_curl/ , create commit and pull request to

develop
.

SEE ALSO

If you don't like cURL (why?), try to use

python-requests
_.

.. _

python-requests
: http://python-requests.org

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.