public
Description: Json utils for Django
Homepage:
Clone URL: git://github.com/ctrochalakis/django-jsonutils.git
django-jsonutils / client.py
100644 47 lines (37 sloc) 1.429 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import logging
import urllib
import urllib2
from urlparse import urljoin
import simplejson
log = logging.getLogger(__name__)
 
class BaseClient(object):
    "A command line client to interact with a web app through json"
 
    def __init__(self, baseURL, format='json', post_name='json',debug=False):
        if baseURL[-1] != '/':
            baseURL = baseURL +'/'
        self.baseURL = baseURL
        self.format = format
        self.post_name = post_name
 
        # Setup our logger
        logHandler = logging.StreamHandler()
        if debug:
            log.setLevel(logging.DEBUG)
            logHandler.setLevel(logging.DEBUG)
        else:
            log.setLevel(logging.INFO)
            logHandler.setLevel(logging.INFO)
 
        format = logging.Formatter("%(message)s")
        logHandler.setFormatter(format)
        log.addHandler(logHandler)
 
    def _send_request(self, method, req_params):
        url = urljoin(self.baseURL, method + '/'+ '?format=%s' % self.format)
 
        log.debug("Requesting %s" % url)
        
        req = urllib2.Request(url)
        req.add_header('Accept', 'text/javascript')
 
        if req_params:
            post_data = { self.post_name : simplejson.dumps(req_params) }
            req.add_data(urllib.urlencode(post_data))
 
        response = urllib2.urlopen(req)
        json_response = response.read()
        data = simplejson.loads(json_response)
        return data