From 024557542f60a11674a047b633ecc06a6fd0c1ba Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sun, 13 Feb 2011 13:05:46 -0500 Subject: [PATCH] github2 way might be overkill... --- convore/request.py | 63 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 convore/request.py diff --git a/convore/request.py b/convore/request.py new file mode 100644 index 0000000..ff1326c --- /dev/null +++ b/convore/request.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +""" + convore.request + ~~~~~~~~~~~~~~~ + + This module implements the main Convore request system. + + :copyright: (c) 2011 by Kenneth Reitz. + :license: ISC, see LICENSE for more details. +""" + +import sys +import httplib +try: + import simplejson as json +except ImportError: + import json + +from urlparse import urlparse, urlunparse +try: + from urlparse import parse_qs +except ImportError: + from cgi import parse_qs +from urllib import urlencode + + + +CONVORE_URL = "https://convore.com" +URL_PREFIX = "https://convore.com/api/" + + +class ConvoreError(Exception): + """An error occured while making a request to the Convore API.""" + + +class ConvoreRequest(object): + convore_url = CONVORE_URL + url_format = "%(convore_url)s/api/%(api_format)s" + api_format = "json" + ConvoreError = ConvoreError + + def __init__(self, username, password, url_prefix=None): + self.username = username + self.password = password + + if not self.url_prefix: + self.url_prefix = self.url_format % { + 'convore_url': self.convore_url, + 'api_format': self.api_format + } + + def get(self, *path_components): + path_components = filter(None, path_components) + + def post(self, *path_components, **extra_post_data): + return self.make_request("/".join(path_components), extra_post_data, + method="POST") + + def make_request(self, path, extra_post_data=None, method="GET"): + extra_post_data = extra_post_data or {} + url = "/".join([self.url_prefix, path]) + return self.raw_request(url, extra_post_data, method=method) +