diff --git a/api.py b/api.py index cadcf78..02dd161 100644 --- a/api.py +++ b/api.py @@ -4,9 +4,16 @@ from xml.etree.ElementTree import fromstring from xml.etree import ElementTree as ET from base64 import b64encode +import logging API_VERSION = 'v4' +try: + from google.appengine.api import urlfetch + APPENGINE = True +except: + APPENGINE = False + def utc_to_local(dt): ''' Converts utc datetime to local''' secs = calendar.timegm(dt.timetuple()) @@ -37,25 +44,41 @@ def set_url(self, url): self.url = '%s/%s' % (self.base_url, url) def query(self, data=None, put=False): - opener = urllib2.build_opener(urllib2.HTTPHandler) - - req = urllib2.Request(url=self.get_url()) - req.add_header('User-agent', 'python-spreedly 1.0') - req.add_header('Authorization', 'Basic %s' % self.auth) + if not APPENGINE: + opener = urllib2.build_opener(urllib2.HTTPHandler) + + req = urllib2.Request(url=self.get_url()) + req.add_header('User-agent', 'python-spreedly 1.0') + req.add_header('Authorization', 'Basic %s' % self.auth) - # Convert to POST if we got some data - if data: - req.add_header('Content-Type', 'application/xml') - req.add_data(data) + # Convert to POST if we got some data + if data: + req.add_header('Content-Type', 'application/xml') + req.add_data(data) - if put: - req.get_method = lambda: 'PUT' + if put: + req.get_method = lambda: 'PUT' - f = opener.open(req) - self.response = f.read() - - + f = opener.open(req) + self.response = f.read() + else: + payload = {} + headers = { + 'User-agent' : 'python-spreedly 1.0', + 'Authorization':'Basic %s' % self.auth + } + method = 'GET' + if data: + method = "POST" + headers['Content-Type'] = 'application/xml' + payload = data + if put: + method = "PUT" + result = urlfetch.fetch(self.get_url(), payload = payload, method = method,headers = headers, deadline = 10) + logging.info(result.status_code) + self.response = result.content + def get_plans(self): self.set_url('subscription_plans.xml') self.query() @@ -138,7 +161,7 @@ def create_subscriber(self, customer_id, screen_name): result.append(data) return result[0] - + def delete_subscriber(self, id): if 'test' in self.base_path: headers = {'Authorization': 'Basic %s' % self.auth} @@ -289,3 +312,8 @@ def get_or_create_subscriber(self, subscriber_id, screen_name): except urllib2.HTTPError, e: if e.code == 404: return self.create_subscriber(subscriber_id, screen_name) + + def add_fee_to_subscriber(self, subscriber_id, name = '', description = '', group = '', amount = ''): + data = """%s%s%s%s""" % (name,description, group, amount) + self.set_url('subscribers/%s/fees.xml' % subscriber_id) + self.query(data)