SF.net SVN: fclient: [273] trunk/sandbox/fcp2
Status: Pre-Alpha
Brought to you by:
jurner
|
From: <ju...@us...> - 2008-02-26 15:29:59
|
Revision: 273
http://fclient.svn.sourceforge.net/fclient/?rev=273&view=rev
Author: jurner
Date: 2008-02-26 07:30:00 -0800 (Tue, 26 Feb 2008)
Log Message:
-----------
renames
Added Paths:
-----------
trunk/sandbox/fcp2/fcparams.py
Removed Paths:
-------------
trunk/sandbox/fcp2/params.py
Copied: trunk/sandbox/fcp2/fcparams.py (from rev 257, trunk/sandbox/fcp2/params.py)
===================================================================
--- trunk/sandbox/fcp2/fcparams.py (rev 0)
+++ trunk/sandbox/fcp2/fcparams.py 2008-02-26 15:30:00 UTC (rev 273)
@@ -0,0 +1,154 @@
+"""Handling of persistent request parameters"""
+
+import sys, os
+import base64
+import time
+
+#--> rel import hack
+class _RelImportHack(object):
+ def __init__(self, n):
+ fpath = os.path.abspath(__file__)
+ for i in xrange(n): fpath = os.path.dirname(fpath)
+ sys.path.insert(0, fpath)
+ def __del__(self): sys.path.pop(0)
+hack = _RelImportHack(2)
+
+from fcp2.fcp_lib import uuid
+
+
+del hack
+#<-- rel import hack
+#*********************************************************************************************
+#
+#*********************************************************************************************
+def validateFcpBool(value):
+ if value in ('true', 'false'):
+ return str(value)
+ return None
+
+def validateFloat(value):
+ try:
+ return float(value)
+ except ValueError:
+ return None
+
+def validateInt(value):
+ try:
+ return int(value)
+ except ValueError:
+ return None
+
+#TODO: validate FcPersistentUserData... only ASCII (???) chars allowed
+def validateString(value):
+ try:
+ return str(value)
+ except UnicodeEncodeError:
+ return None
+
+
+def validateUuid(value):
+ result = uuid.UUID_EXACT_MATCH_PAT.match(value)
+ if result:
+ return str(result.group(0))
+ return None
+
+
+#*********************************************************************************************
+#
+#*********************************************************************************************
+FcParamsSep = '\x01'
+MAGIC = '{8a7808d0-3934-465a-b1b4-b7150ed109a5}' # magic string to identify our requests
+
+FcParams = (
+ ('FcRequestType', validateInt),
+ ('FcInitTime', validateFloat), # can not take it from uuid cos requests may be resend multiple times
+ ('FcFilenameCollision', validateInt),
+ ('FcPersistentUserData', validateString),
+ )
+
+IRequestType = 0
+IInitTime = 1
+IFilenameCollision = 2
+IPersistentUserData = 3
+
+def paramsFromRequest(msg):
+ """Extracts fclient parameters from the identifier of a request
+ @param msg: message to extract the parameters from
+ @return: (list) parameters or None if something went wrong
+
+ >>> params = [1, 123.456, 'false', 'false', uuid.uuid_time(), 123456789]
+ >>> identifier = FcParamsSep.join( [str(i) for i in params] )
+ >>> result = paramsFromRequest({'Identifier': identifier})
+ >>> result == params
+ True
+
+ """
+ userData = msg.get('ClientToken', None)
+ if userData is None:
+ return None
+
+ params = userData.split(FcParamsSep)
+ if len(params) != len(FcParams) +1:
+ return None
+
+ # validate and drop our magic string
+ uuid_ = params.pop(0)
+ result = validateUuid(uuid_)
+ if result is None:
+ return None
+ if result != MAGIC:
+ return None
+
+ for i, (paramName, paramValidator) in enumerate(FcParams):
+ result = paramValidator(params[i])
+ if result is None:
+ return None
+ params[i] = result
+
+ # decode user data
+ try:
+ params[IPersistentUserData] = base64.b64decode(params[IPersistentUserData])
+ except TypeError:
+ return None
+
+ return params
+
+
+def messageToParams(msg):
+ """Generates fc params from a message
+ @param msg: message to create the identifier from
+ @return: (str) params
+
+ """
+ params = []
+ for paramName, paramValidator in FcParams:
+ params.append( str(msg[paramName]) )
+
+ # encode user data
+ params[IPersistentUserData] = base64.b64encode(params[IPersistentUserData])
+ params.insert(0, MAGIC)
+
+ return FcParamsSep.join(params)
+
+
+def newUuid(uuids=None):
+ """Creates a new unique identifier
+ @param uuids: if desired any iterable containing uuids to enshure the identifier is unique in the iterable
+ @return: (str) uuid
+
+ """
+ uuid_ = uuid.uuid_time()
+ if uuids is not None:
+ while uuid_ in uuids:
+ uuid_ = uuid_time()
+ return uuid_
+
+
+#*********************************************************************************
+#
+#*********************************************************************************
+if __name__ == '__main__2':
+ import doctest
+ doctest.testmod()
+
+
Deleted: trunk/sandbox/fcp2/params.py
===================================================================
--- trunk/sandbox/fcp2/params.py 2008-02-26 15:18:18 UTC (rev 272)
+++ trunk/sandbox/fcp2/params.py 2008-02-26 15:30:00 UTC (rev 273)
@@ -1,154 +0,0 @@
-"""Handling of persistent request parameters"""
-
-import sys, os
-import base64
-import time
-
-#--> rel import hack
-class _RelImportHack(object):
- def __init__(self, n):
- fpath = os.path.abspath(__file__)
- for i in xrange(n): fpath = os.path.dirname(fpath)
- sys.path.insert(0, fpath)
- def __del__(self): sys.path.pop(0)
-hack = _RelImportHack(2)
-
-from fcp2.fcp_lib import uuid
-
-
-del hack
-#<-- rel import hack
-#*********************************************************************************************
-#
-#*********************************************************************************************
-def validateFcpBool(value):
- if value in ('true', 'false'):
- return str(value)
- return None
-
-def validateFloat(value):
- try:
- return float(value)
- except ValueError:
- return None
-
-def validateInt(value):
- try:
- return int(value)
- except ValueError:
- return None
-
-#TODO: validate FcPersistentUserData... only ASCII (???) chars allowed
-def validateString(value):
- try:
- return str(value)
- except UnicodeEncodeError:
- return None
-
-
-def validateUuid(value):
- result = uuid.UUID_EXACT_MATCH_PAT.match(value)
- if result:
- return str(result.group(0))
- return None
-
-
-#*********************************************************************************************
-#
-#*********************************************************************************************
-FcParamsSep = '\x01'
-MAGIC = '{8a7808d0-3934-465a-b1b4-b7150ed109a5}' # magic string to identify our requests
-
-FcParams = (
- ('FcRequestType', validateInt),
- ('FcInitTime', validateFloat), # can not take it from uuid cos requests may be resend multiple times
- ('FcFilenameCollision', validateInt),
- ('FcPersistentUserData', validateString),
- )
-
-IRequestType = 0
-IInitTime = 1
-IFilenameCollision = 2
-IPersistentUserData = 3
-
-def paramsFromRequest(msg):
- """Extracts fclient parameters from the identifier of a request
- @param msg: message to extract the parameters from
- @return: (list) parameters or None if something went wrong
-
- >>> params = [1, 123.456, 'false', 'false', uuid.uuid_time(), 123456789]
- >>> identifier = FcParamsSep.join( [str(i) for i in params] )
- >>> result = paramsFromRequest({'Identifier': identifier})
- >>> result == params
- True
-
- """
- userData = msg.get('ClientToken', None)
- if userData is None:
- return None
-
- params = userData.split(FcParamsSep)
- if len(params) != len(FcParams) +1:
- return None
-
- # validate and drop our magic string
- uuid_ = params.pop(0)
- result = validateUuid(uuid_)
- if result is None:
- return None
- if result != MAGIC:
- return None
-
- for i, (paramName, paramValidator) in enumerate(FcParams):
- result = paramValidator(params[i])
- if result is None:
- return None
- params[i] = result
-
- # decode user data
- try:
- params[IPersistentUserData] = base64.b64decode(params[IPersistentUserData])
- except TypeError:
- return None
-
- return params
-
-
-def messageToParams(msg):
- """Generates fc params from a message
- @param msg: message to create the identifier from
- @return: (str) params
-
- """
- params = []
- for paramName, paramValidator in FcParams:
- params.append( str(msg[paramName]) )
-
- # encode user data
- params[IPersistentUserData] = base64.b64encode(params[IPersistentUserData])
- params.insert(0, MAGIC)
-
- return FcParamsSep.join(params)
-
-
-def newUuid(uuids=None):
- """Creates a new unique identifier
- @param uuids: if desired any iterable containing uuids to enshure the identifier is unique in the iterable
- @return: (str) uuid
-
- """
- uuid_ = uuid.uuid_time()
- if uuids is not None:
- while uuid_ in uuids:
- uuid_ = uuid_time()
- return uuid_
-
-
-#*********************************************************************************
-#
-#*********************************************************************************
-if __name__ == '__main__2':
- import doctest
- doctest.testmod()
-
-
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|