Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 14 additions & 12 deletions src/shift_planning.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
"""
* ShiftPlanning Python SDK
* ShiftPlanning Python SDK (for Python 3)
* Version: 1.0
* Date: 11/01/2010
* http://www.shiftplanning.com/api/
Expand Down Expand Up @@ -38,8 +38,8 @@
import os
import simplejson
import types
import urllib
import urllib2
import urllib.request
import urllib.parse

response_codes = {
'-3':'Flagged API Key - Pemanently Banned',
Expand Down Expand Up @@ -112,7 +112,7 @@ def get_public_data(self):

return (None,"User hasn't been authenticated")

def get_raw_resopsne(self):
def get_raw_response(self):
if self.response:
return self.response
return (None,"No raw response available")
Expand Down Expand Up @@ -154,18 +154,20 @@ def perform_request(self,params,filedata=None):
Uploading a file is different in that data of the file is sent in 'filedata' along side
'data' POST variable. """
data = ''
binary_data = ''
if self.token and not filedata:
data = urllib.urlencode([('data', simplejson.dumps({'token':self.token,'request':params}))])
data = urllib.parse.urlencode([('data', simplejson.dumps({'token':self.token,'request':params}))])

if filedata:#it's a file upload
data = simplejson.dumps({'token':self.token,'request':params})
data = urllib.urlencode([('data', data),('filedata',filedata)])
data = urllib.parse.urlencode([('data', data),('filedata',filedata)])

if not self.token and not filedata:#this is a login request
data = urllib.urlencode([('data', simplejson.dumps({'key':self.key,'request':params}))])

req = urllib2.Request(self.api_endpoint,headers={'accept-charset':'UTF-8'})
data = urllib.parse.urlencode([('data', simplejson.dumps({'key':self.key,'request':params}))])
binary_data = data.encode('utf-8')
req = urllib.request.Request(self.api_endpoint,headers={'accept-charset':'UTF-8'})
try:
reader = urllib2.urlopen(req, data)
reader = urllib.request.urlopen(req, binary_data)
except:
raise Exception("Cannot open the URL, please make sure API endpoint is correct.")
if reader.code != 200:
Expand All @@ -177,15 +179,15 @@ def perform_request(self,params,filedata=None):
return (None, "No JSON object received from server.")
response = simplejson.loads(response)

if response.has_key('error'):
if 'error' in response:
return {'error':response['error']}
else:
self.response_data = response['data']
self.response = response
if self.callback:
self.callback()
if params['module'] == 'staff.login':
if response.has_key('token'):
if 'token' in response:
self.token = response['token']


Expand Down