Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Lispython/human_curl
Simple Human wrapper for cURL library
https://github.com/Lispython/human_curl
curl curl-library python requests
Last synced: 2 months ago
JSON representation
Simple Human wrapper for cURL library
- Host: GitHub
- URL: https://github.com/Lispython/human_curl
- Owner: Lispython
- License: other
- Created: 2011-08-31T14:09:17.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2021-02-03T20:12:11.000Z (almost 4 years ago)
- Last Synced: 2024-11-06T12:38:21.354Z (3 months ago)
- Topics: curl, curl-library, python, requests
- Language: Python
- Homepage: http://h.wrttn.me/human_curl
- Size: 227 KB
- Stars: 205
- Watchers: 19
- Forks: 43
- Open Issues: 23
-
Metadata Files:
- Readme: README.rst
- Changelog: ChangeLog
- License: LICENSE
Awesome Lists containing this project
README
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/human_curl.png
:target: https://secure.travis-ci.org/Lispython/human_curlFeatures
--------- 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 supportUsage
-----**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 human_curl use pip or easy_install:
`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