Skip to main content

Python REST kit

Project description

About

Restkit is an HTTP resource kit for Python. It allows you to easily access to HTTP resource and build objects around it. It’s the base of couchdbkit a Python CouchDB framework.

Restkit is a full HTTP client using pure socket calls and its own HTTP parser. It’s not based on httplib or urllib2.

Installation

Restkit requires Python 2.x superior to 2.5.

Install from sources:

$ python setup.py install

Or from Pypi:

$ easy_install -U restkit

Usage

Perform HTTP call support with restkit.request.

Usage example, get friendpaste page:

from restkit import request
resp = request('http://friendpaste.com')
print resp.body_string()
print resp.status_int

Create a simple Twitter Search resource

Building a resource object is easy using restkit.Resource class. We use simplejson to handle deserialisation of data.

Here is the snippet:

from restkit import Resource

try:
    import simplejson as json
except ImportError:
    import json # py2.6 only

class TwitterSearch(Resource):

    def __init__(self,  pool_instance=None, **kwargs):
        search_url = "http://search.twitter.com"
        super(TwitterSearch, self).__init__(search_url, follow_redirect=True,
                                        max_follow_redirect=10,
                                        pool_instance=pool_instance,
                                        **kwargs)

    def search(self, query):
        return self.get('search.json', q=query)

    def request(self, *args, **kwargs):
        resp = super(TwitterSearch, self).request(*args, **kwargs)
        return json.loads(resp.body)

if __name__ == "__main__":
    s = TwitterSearch()
    print s.search("gunicorn")

Reuses connections

Reusing connections is good. Restkit can maintain for you the http connections and reuse them if the server allows it. To do that you can pass to any object a pool instance inheriting reskit.pool.PoolInterface. You can use our threadsafe pool in any application:

from restkit import Resource, SimplePool

pool = SimplePool(keepalive=2)
res = Resource('http://friendpaste.com', pool_instance=pool)

or if you use Eventlet:

import eventlet
eventlet.monkey_patch(all=False, socket=True, select=True)

from restkit import Resource
from restkit.pool.reventlet import EventletPool

pool = EventletPool(keepalive=2, timeout=300)
res = Resource('http://friendpaste.com', pool_instance=pool)

Using eventlet pool is definitely better since it allows you to define a timeout for connections. When timeout is reached and the connection is still in the pool, it will be closed.

Authentication

Restkit support for now basic authentication and OAuth. But any other authentication schema can easily be added using http filters.

Basic authentication

To use basic authentication in a Resource object you can do:

from restkit import Resource, BasicAuth

auth = BasicAuth("username", "password")
r = Resource("http://friendpaste.com", filters=[auth])

Or simply use an authentication url:

r = Resource("http://username:password@friendpaste.com")

OAuth

Restkit OAuth is based on simplegeo python-oauth2 module So you don’t need other installation to use OAuth (you can also simply use restkit.oauth2 module in your applications).

The OAuth filter restkit.oauth2.filter.OAuthFilter allow you to associate a consumer per resource (path). Initalize Oauth filter with:

path, consumer, token, signaturemethod

token and method signature are optionnals. Consumer should be an instance of restkit.oauth2.Consumer, token an instance of restkit.oauth2.Token signature method an instance of oauth2.SignatureMethod (restkit.oauth2.Token is only needed for three-legged requests.

The filter is appleid if the path match. It allows you to maintain different authorization per path. A wildcard at the indicate to the filter to match all path behind.

Example the rule /some/resource/* will match /some/resource/other and /some/resource/other2, while the rule /some/resource will only match the path /some/resource.

Simple client example:
from restkit import OAuthFilter, request
import restkit.oauth2 as oauth

# Create your consumer with the proper key/secret.
consumer = oauth.Consumer(key="your-twitter-consumer-key",
  secret="your-twitter-consumer-secret")

# Request token URL for Twitter.
request_token_url = "http://twitter.com/oauth/request_token"

# Create our filter.
auth = oauth.OAuthFilter('*', consumer)

# The request.
resp = request(request_token_url, filters=[auth])
print resp.body_string()

If you want to add OAuth to your TwitterSearch resource:

# Create your consumer with the proper key/secret.
consumer = oauth.Consumer(key="your-twitter-consumer-key",
  secret="your-twitter-consumer-secret")

# Create our filter.
client = oauth.OAuthfilter('*', consumer)

s = TwitterSearch(filters=[client])

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

restkit-2.1.4.tar.gz (2.0 MB view details)

Uploaded Source

Built Distribution

restkit-2.1.4.win32-py2.7.exe (258.5 kB view details)

Uploaded Source

File details

Details for the file restkit-2.1.4.tar.gz.

File metadata

  • Download URL: restkit-2.1.4.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for restkit-2.1.4.tar.gz
Algorithm Hash digest
SHA256 41b45caf730bd8f36e1caa8dca4a9b8a597bde317b5069b6c0375a892e67be20
MD5 213ec5d32f522e91691bbb04238ddbfd
BLAKE2b-256 cbe6c66d426cab44e058c333ca3c8fd6e1a2aff0efcb88671cdebf3b78b197c5

See more details on using hashes here.

File details

Details for the file restkit-2.1.4.win32-py2.7.exe.

File metadata

File hashes

Hashes for restkit-2.1.4.win32-py2.7.exe
Algorithm Hash digest
SHA256 af1f53069464753978f2c138115af542f0f2204d1fc695e63dd7cc470bd59f44
MD5 42eec0d097cab49a3452baec07c2f475
BLAKE2b-256 bda7b853b85917046d16846592d8c6e902ce6c2b630b672b7093cea0559a1bf1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page