Commit 4ebc01ec authored by root's avatar root

CorePost to python3

parent 496d4f42
...@@ -11,7 +11,7 @@ import logging ...@@ -11,7 +11,7 @@ import logging
import json import json
from twisted.python import log from twisted.python import log
primitives = (int, long, float, bool, str,unicode) primitives = (int, float, bool, str,str)
def convertForSerialization(obj): def convertForSerialization(obj):
"""Converts anything (clas,tuples,list) to the safe serializable equivalent""" """Converts anything (clas,tuples,list) to the safe serializable equivalent"""
...@@ -39,7 +39,7 @@ def convertForSerialization(obj): ...@@ -39,7 +39,7 @@ def convertForSerialization(obj):
def convertClassToDict(clazz): def convertClassToDict(clazz):
"""Converts a class to a dictionary""" """Converts a class to a dictionary"""
properties = {} properties = {}
for prop,val in clazz.__dict__.iteritems(): for prop,val in clazz.__dict__.items():
#omit private fields #omit private fields
if not prop.startswith("_"): if not prop.startswith("_"):
properties[prop] = val properties[prop] = val
...@@ -50,7 +50,7 @@ def traverseDict(dictObject): ...@@ -50,7 +50,7 @@ def traverseDict(dictObject):
"""Traverses a dict recursively to convertForSerialization any nested classes""" """Traverses a dict recursively to convertForSerialization any nested classes"""
newDict = {} newDict = {}
for prop,val in dictObject.iteritems(): for prop,val in dictObject.items():
newDict[prop] = convertForSerialization(val) newDict[prop] = convertForSerialization(val)
return newDict return newDict
...@@ -94,14 +94,14 @@ def getXML(obj, objname=None): ...@@ -94,14 +94,14 @@ def getXML(obj, objname=None):
list: getXML_list, list: getXML_list,
tuple: getXML_list, tuple: getXML_list,
} }
if adapt.has_key(obj.__class__): if obj.__class__ in adapt:
return adapt[obj.__class__](obj, objname) return adapt[obj.__class__](obj, objname)
else: else:
return "<%(n)s>%(o)s</%(n)s>"%{'n':objname,'o':str(obj)} return "<%(n)s>%(o)s</%(n)s>"%{'n':objname,'o':str(obj)}
def getXML_dict(indict, objname=None): def getXML_dict(indict, objname=None):
h = "<%s>"%objname h = "<%s>"%objname
for k, v in indict.items(): for k, v in list(indict.items()):
h += getXML(v, k) h += getXML(v, k)
h += "</%s>"%objname h += "</%s>"%objname
return h return h
......
...@@ -3,7 +3,7 @@ __author__ = 'jacekf' ...@@ -3,7 +3,7 @@ __author__ = 'jacekf'
try: try:
import txZMQ import txZMQ
except ImportError as ex: except ImportError as ex:
print "You must have ZeroMQ and txZMQ installed" print("You must have ZeroMQ and txZMQ installed")
raise ex raise ex
from corepost import Response, IRESTResource from corepost import Response, IRESTResource
......
...@@ -11,7 +11,7 @@ from corepost.utils import getMandatoryArgumentNames, safeDictUpdate ...@@ -11,7 +11,7 @@ from corepost.utils import getMandatoryArgumentNames, safeDictUpdate
from corepost.convert import convertForSerialization, generateXml, convertToJson from corepost.convert import convertForSerialization, generateXml, convertToJson
from corepost.filters import IRequestFilter, IResponseFilter from corepost.filters import IRequestFilter, IResponseFilter
from enums import MediaType from .enums import MediaType
from twisted.internet import defer from twisted.internet import defer
from twisted.web.http import parse_qs from twisted.web.http import parse_qs
from twisted.python import log from twisted.python import log
...@@ -89,7 +89,7 @@ class UrlRouter: ...@@ -89,7 +89,7 @@ class UrlRouter:
args = g.groupdict() args = g.groupdict()
# convert to expected datatypes # convert to expected datatypes
if len(args) > 0: if len(args) > 0:
for name in args.keys(): for name in list(args.keys()):
converter = self.__argConverters[name] converter = self.__argConverters[name]
if converter != None: if converter != None:
args[name] = converter(args[name]) args[name] = converter(args[name])
...@@ -228,7 +228,7 @@ class RequestRouter: ...@@ -228,7 +228,7 @@ class RequestRouter:
# go through all the URLs, pick up the ones matching by content type # go through all the URLs, pick up the ones matching by content type
# and then validate which ones match by path/argument to a particular UrlRouterInstance # and then validate which ones match by path/argument to a particular UrlRouterInstance
for contentTypeInstances in self.__urls[request.method].values(): for contentTypeInstances in list(self.__urls[request.method].values()):
if contentType in contentTypeInstances: if contentType in contentTypeInstances:
# there is an exact function for this incoming content type # there is an exact function for this incoming content type
...@@ -368,7 +368,7 @@ class RequestRouter: ...@@ -368,7 +368,7 @@ class RequestRouter:
def __parseRequestData(self,request): def __parseRequestData(self,request):
'''Automatically parses JSON,XML,YAML if present''' '''Automatically parses JSON,XML,YAML if present'''
if request.method in (Http.POST,Http.PUT) and HttpHeader.CONTENT_TYPE in request.received_headers.keys(): if request.method in (Http.POST,Http.PUT) and HttpHeader.CONTENT_TYPE in list(request.received_headers.keys()):
contentType = request.received_headers["content-type"] contentType = request.received_headers["content-type"]
request.data = request.content.read() request.data = request.content.read()
...@@ -394,23 +394,23 @@ class RequestRouter: ...@@ -394,23 +394,23 @@ class RequestRouter:
# see: http://twistedmatrix.com/pipermail/twisted-web/2007-March/003338.html # see: http://twistedmatrix.com/pipermail/twisted-web/2007-March/003338.html
requestargs = request.args requestargs = request.args
if request.method == Http.PUT and HttpHeader.CONTENT_TYPE in request.received_headers.keys() \ if request.method == Http.PUT and HttpHeader.CONTENT_TYPE in list(request.received_headers.keys()) \
and request.received_headers[HttpHeader.CONTENT_TYPE] == MediaType.APPLICATION_FORM_URLENCODED: and request.received_headers[HttpHeader.CONTENT_TYPE] == MediaType.APPLICATION_FORM_URLENCODED:
# request.data is populated in __parseRequestData # request.data is populated in __parseRequestData
requestargs = parse_qs(request.data, 1) requestargs = parse_qs(request.data, 1)
#merge form args #merge form args
if len(requestargs.keys()) > 0: if len(list(requestargs.keys())) > 0:
for arg in requestargs.keys(): for arg in list(requestargs.keys()):
# maintain first instance of an argument always # maintain first instance of an argument always
safeDictUpdate(allargs,arg,requestargs[arg][0]) safeDictUpdate(allargs,arg,requestargs[arg][0])
elif hasattr(request,'json'): elif hasattr(request,'json'):
# if YAML parse root elements instead of form elements # if YAML parse root elements instead of form elements
for key in request.json.keys(): for key in list(request.json.keys()):
safeDictUpdate(allargs, key, request.json[key]) safeDictUpdate(allargs, key, request.json[key])
elif hasattr(request,'yaml'): elif hasattr(request,'yaml'):
# if YAML parse root elements instead of form elements # if YAML parse root elements instead of form elements
for key in request.yaml.keys(): for key in list(request.yaml.keys()):
safeDictUpdate(allargs, key, request.yaml[key]) safeDictUpdate(allargs, key, request.yaml[key])
elif hasattr(request,'xml'): elif hasattr(request,'xml'):
# if XML, parse attributes first, then root nodes # if XML, parse attributes first, then root nodes
......
...@@ -6,7 +6,7 @@ Main server classes ...@@ -6,7 +6,7 @@ Main server classes
from corepost import Response, IRESTResource from corepost import Response, IRESTResource
from corepost.enums import Http from corepost.enums import Http
from corepost.routing import UrlRouter, RequestRouter from corepost.routing import UrlRouter, RequestRouter
from enums import MediaType from .enums import MediaType
from formencode import FancyValidator, Invalid from formencode import FancyValidator, Invalid
from twisted.internet import reactor from twisted.internet import reactor
from twisted.internet.defer import Deferred from twisted.internet.defer import Deferred
...@@ -77,7 +77,7 @@ class RESTResource(Resource): ...@@ -77,7 +77,7 @@ class RESTResource(Resource):
def __applyResponse(self,request,code,headers={"content-type":MediaType.TEXT_PLAIN}): def __applyResponse(self,request,code,headers={"content-type":MediaType.TEXT_PLAIN}):
request.setResponseCode(code) request.setResponseCode(code)
if headers != None: if headers != None:
for header,value in headers.iteritems(): for header,value in headers.items():
request.setHeader(header, value) request.setHeader(header, value)
def run(self,port=8080): def run(self,port=8080):
...@@ -117,11 +117,11 @@ def validate(schema=None,**vKwargs): ...@@ -117,11 +117,11 @@ def validate(schema=None,**vKwargs):
try: try:
schema.to_python(kwargs) schema.to_python(kwargs)
except Invalid as ex: except Invalid as ex:
for arg, error in ex.error_dict.items(): for arg, error in list(ex.error_dict.items()):
errors.append("%s: %s ('%s')" % (arg,error.msg,error.value)) errors.append("%s: %s ('%s')" % (arg,error.msg,error.value))
# custom validators # custom validators
for arg in vKwargs.keys(): for arg in list(vKwargs.keys()):
validator = vKwargs[arg] validator = vKwargs[arg]
if arg in kwargs: if arg in kwargs:
val = kwargs[arg] val = kwargs[arg]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment