You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by ra...@apache.org on 2010/05/05 20:34:38 UTC
svn commit: r941418 - in /incubator/wookie/trunk/connector/python:
TestWookieService.py wookie/WookieConnectorService.py
wookie/WookieServerConnection.py wookie/widget/Instance.py
Author: raido
Date: Wed May 5 18:34:37 2010
New Revision: 941418
URL: http://svn.apache.org/viewvc?rev=941418&view=rev
Log:
Removed "maximize" attribute and methods
Add simple connection testing
Modified:
incubator/wookie/trunk/connector/python/TestWookieService.py
incubator/wookie/trunk/connector/python/wookie/WookieConnectorService.py
incubator/wookie/trunk/connector/python/wookie/WookieServerConnection.py
incubator/wookie/trunk/connector/python/wookie/widget/Instance.py
Modified: incubator/wookie/trunk/connector/python/TestWookieService.py
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/python/TestWookieService.py?rev=941418&r1=941417&r2=941418&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/python/TestWookieService.py (original)
+++ incubator/wookie/trunk/connector/python/TestWookieService.py Wed May 5 18:34:37 2010
@@ -16,7 +16,7 @@ from wookie.widget import Property
from wookie.widget import User
# @param host, path, api_key, shareddatakey
-WookieConn = WookieConnectorService.WookieConnectorService('localhost:8080', '/wookie', 'TEST','localhost_python')
+WookieConn = WookieConnectorService.WookieConnectorService('localhost:8081', '/wookie', 'TEST','localhost_python')
# set Widget user
WookieConn.setUser("demo_python", "demo_python_screenName")
@@ -27,49 +27,54 @@ print WookieConn.getCurrentUser().getScr
prop1 = Property.Property("test", "proov")
print prop1.getName()+":"+prop1.getValue()+":"+prop1.getIsPublic()
-# get available widgets
-widgetList = WookieConn.getAvailableWidgets()
+connectionAlive = WookieConn.getConnection().Test()
-a = widgetList[12]
-b = widgetList[11]
-#a = 'http://www.getwookie.org/widgets/weather'
-
-# create or get instances
-
-retrievedInstance = WookieConn.getOrCreateInstance(a)
-if retrievedInstance:
- print retrievedInstance.getTitle()+'\n'+retrievedInstance.getUrl()
- print retrievedInstance.getWidth()+'\n'+retrievedInstance.getHeight()
-
- # add participant, returns string "true" (if exists, or created) or "false"
- print WookieConn.addParticipant(retrievedInstance, User.User("ants_python", "ants_screenName"))
-
- # get participants, return list of participants
- users = WookieConn.getParticipants(retrievedInstance)
- print users[0].getLoginName()+":"+users[0].getScreenName()+":"+users[0].getThumbnail()
-
- # delete participant
- WookieConn.deleteParticipant(retrievedInstance, User.User("ants_python"));
-
- # add property
- # params: name, value, is_public
- prop2 = Property.Property("python_prop", "demo")
- WookieConn.setProperty(retrievedInstance, prop2)
-
- # get property, return property objec, if failed then "false"
- retrievedProp = WookieConn.getProperty(retrievedInstance, prop2)
- print retrievedProp.getValue()
-
- #delete property, returns "true" or "false"
- WookieConn.deleteProperty(retrievedInstance, prop2)
-
-retrievedInstance2 = WookieConn.getOrCreateInstance(b)
-if retrievedInstance2:
- print retrievedInstance2.getTitle()+'\n'+retrievedInstance2.getUrl()
- print retrievedInstance2.getWidth()+'\n'+retrievedInstance2.getHeight()
-
-
-retrievedInstance3 = WookieConn.getOrCreateInstance('http://www.getwookie.org/widgets/weather')
-if retrievedInstance3:
- print retrievedInstance3.getTitle()+'\n'+retrievedInstance3.getUrl()
- print retrievedInstance3.getWidth()+'\n'+retrievedInstance3.getHeight()
+print connectionAlive
+
+if connectionAlive:
+ # get available widgets
+ widgetList = WookieConn.getAvailableWidgets()
+
+ a = widgetList[12]
+ b = widgetList[11]
+ #a = 'http://www.getwookie.org/widgets/weather'
+
+ # create or get instances
+
+ retrievedInstance = WookieConn.getOrCreateInstance(a)
+ if retrievedInstance:
+ print retrievedInstance.getTitle()+'\n'+retrievedInstance.getUrl()
+ print retrievedInstance.getWidth()+'\n'+retrievedInstance.getHeight()
+
+ # add participant, returns string "true" (if exists, or created) or "false"
+ print WookieConn.addParticipant(retrievedInstance, User.User("ants_python", "ants_screenName"))
+
+ # get participants, return list of participants
+ users = WookieConn.getParticipants(retrievedInstance)
+ print users[0].getLoginName()+":"+users[0].getScreenName()+":"+users[0].getThumbnail()
+
+ # delete participant
+ WookieConn.deleteParticipant(retrievedInstance, User.User("ants_python"));
+
+ # add property
+ # params: name, value, is_public
+ prop2 = Property.Property("python_prop", "demo")
+ WookieConn.setProperty(retrievedInstance, prop2)
+
+ # get property, return property objec, if failed then "false"
+ retrievedProp = WookieConn.getProperty(retrievedInstance, prop2)
+ print retrievedProp.getValue()
+
+ #delete property, returns "true" or "false"
+ WookieConn.deleteProperty(retrievedInstance, prop2)
+
+ retrievedInstance2 = WookieConn.getOrCreateInstance(b)
+ if retrievedInstance2:
+ print retrievedInstance2.getTitle()+'\n'+retrievedInstance2.getUrl()
+ print retrievedInstance2.getWidth()+'\n'+retrievedInstance2.getHeight()
+
+
+ retrievedInstance3 = WookieConn.getOrCreateInstance('http://www.getwookie.org/widgets/weather')
+ if retrievedInstance3:
+ print retrievedInstance3.getTitle()+'\n'+retrievedInstance3.getUrl()
+ print retrievedInstance3.getWidth()+'\n'+retrievedInstance3.getHeight()
Modified: incubator/wookie/trunk/connector/python/wookie/WookieConnectorService.py
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/python/wookie/WookieConnectorService.py?rev=941418&r1=941417&r2=941418&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/python/wookie/WookieConnectorService.py (original)
+++ incubator/wookie/trunk/connector/python/wookie/WookieConnectorService.py Wed May 5 18:34:37 2010
@@ -47,13 +47,13 @@ class WookieConnectorService:
# get current connection object
# @return WookieServerConnection
-
+
def getConnection(self):
return self.__connection
-
+
# get all available widgets
# @return list of widgets
-
+
def getAvailableWidgets(self):
socket = httplib.HTTPConnection(self.getConnection().getUrl())
socket.request('GET', self.getConnection().getPath()+'/widgets?all=true')
@@ -64,26 +64,26 @@ class WookieConnectorService:
except Exception:
print 'Error getting widgets XML'
socket.close()
-
+
##define widgetList
widgetList = []
if xmldoc:
widgetsAvailable = xmldoc.getElementsByTagName('widget')
if widgetsAvailable:
for widget in widgetsAvailable:
-
+
##get widget title
widgetTitle = self.getText(widget.getElementsByTagName('title'));
-
+
##get widget url
widgetGuid = widget.getAttribute('identifier')
-
+
##get widget description
widgetDesc = self.getText(widget.getElementsByTagName('description'));
-
+
##get widget icon
widgetIcon = self.getText(widget.getElementsByTagName('icon'));
-
+
if widgetTitle and widgetGuid:
widgetList.append(Widget.Widget(widgetGuid, widgetTitle, widgetDesc, widgetIcon))
else:
@@ -128,7 +128,7 @@ class WookieConnectorService:
response = socket.getresponse()
except ResponseNotReady:
response = socket.getresponse()
-
+
if response.status == 201:
response = socket.getresponse()
instanceXml = response.read()
@@ -144,7 +144,7 @@ class WookieConnectorService:
# Parse widget instance XML
# @param xml, guid
# @return new widget instance
-
+
def parseInstance(self, xml, guid):
newInstance = ''
xmlDoc = ''
@@ -157,8 +157,7 @@ class WookieConnectorService:
title = self.getText(xmlDoc.getElementsByTagName('title'))
height = self.getText(xmlDoc.getElementsByTagName('height'))
width = self.getText(xmlDoc.getElementsByTagName('width'))
- isMaximizable = self.getText(xmlDoc.getElementsByTagName('maximize'))
- newInstance = Instance.Instance(url, guid, title, height, width, isMaximizable)
+ newInstance = Instance.Instance(url, guid, title, height, width)
return newInstance
# Get list of participants
@@ -174,7 +173,7 @@ class WookieConnectorService:
queryString += '&userid='+self.getCurrentUser().getLoginName()
queryString += '&shareddatakey='+self.getConnection().getSharedDataKey()
queryString += '&widgetid='+widgetInstance.getGuid()
-
+
socket = httplib.HTTPConnection(self.getConnection().getUrl())
socket.request('GET', self.getConnection().getPath()+'/participants'+queryString)
try:
@@ -197,7 +196,7 @@ class WookieConnectorService:
participantsList.append(newUser)
except Exception:
print "Could not parse participants XML"
-
+
return participantsList
if response.status != 200:
print "HTTP Status: "+response.status+"\nResponseText: "+response.read()
@@ -208,7 +207,7 @@ class WookieConnectorService:
# Add participant to current widget instance
# @param widgetInstance, userInstance
# @return true if added, false otherwise
-
+
def addParticipant(self, widgetInstance, userInstance):
params = urllib.urlencode({'api_key': self.getConnection().getApiKey(),
'userid': self.getCurrentUser().getLoginName(),
@@ -217,7 +216,7 @@ class WookieConnectorService:
'participant_id': userInstance.getLoginName(),
'participant_display_name': userInstance.getScreenName(),
'participant_thumbnail_url': userInstance.getThumbnail()})
-
+
headers = {"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/xml"}
socket = httplib.HTTPConnection(self.getConnection().getUrl())
@@ -248,7 +247,7 @@ class WookieConnectorService:
queryString += '&shareddatakey='+self.getConnection().getSharedDataKey()
queryString += '&widgetid='+widgetInstance.getGuid()
queryString += '&participant_id='+userInstance.getLoginName()
-
+
socket = httplib.HTTPConnection(self.getConnection().getUrl())
socket.request('DELETE', self.getConnection().getPath()+'/participants'+queryString)
try:
@@ -282,7 +281,7 @@ class WookieConnectorService:
'propertyname': propertyInstance.getName(),
'propertyvalue': propertyInstance.getValue(),
'is_public': propertyInstance.getIsPublic()})
-
+
headers = {"Content-type": "application/x-www-form-urlencoded",
"Accept": "text/plain"}
socket = httplib.HTTPConnection(self.getConnection().getUrl())
@@ -315,7 +314,7 @@ class WookieConnectorService:
queryString += '&shareddatakey='+self.getConnection().getSharedDataKey()
queryString += '&widgetid='+widgetInstance.getGuid()
queryString += '&propertyname='+propertyInstance.getName()
-
+
socket = httplib.HTTPConnection(self.getConnection().getUrl())
socket.request('DELETE', self.getConnection().getPath()+'/properties'+queryString)
try:
@@ -345,7 +344,7 @@ class WookieConnectorService:
queryString += '&shareddatakey='+self.getConnection().getSharedDataKey()
queryString += '&widgetid='+widgetInstance.getGuid()
queryString += '&propertyname='+propertyInstance.getName()
-
+
socket = httplib.HTTPConnection(self.getConnection().getUrl())
socket.request('GET', self.getConnection().getPath()+'/properties'+queryString)
try:
Modified: incubator/wookie/trunk/connector/python/wookie/WookieServerConnection.py
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/python/wookie/WookieServerConnection.py?rev=941418&r1=941417&r2=941418&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/python/wookie/WookieServerConnection.py (original)
+++ incubator/wookie/trunk/connector/python/wookie/WookieServerConnection.py Wed May 5 18:34:37 2010
@@ -11,12 +11,16 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+
+import httplib;
+from xml.dom import minidom
+
class WookieServerConnection:
__url = ''
__api_key = ''
__shareddatakey = ''
__wookiePath = '/wookie'
-
+
def __init__(self, wookieUrl, api_key, shareddatakey, wookiePath = ''):
self.__url = wookieUrl
self.__api_key = api_key
@@ -29,9 +33,24 @@ class WookieServerConnection:
def getPath(self):
return self.__wookiePath
-
+
def getApiKey(self):
return self.__api_key
-
+
def getSharedDataKey(self):
return self.__shareddatakey
+
+ def Test(self):
+ socket = httplib.HTTPConnection(self.getUrl())
+ socket.request('GET', self.getPath()+'/widgets?all=true')
+ response = socket.getresponse()
+ try:
+ xmlDoc = minidom.parseString(response.read())
+ anyWidgetsFound = xmlDoc.getElementsByTagName('widget')
+ if anyWidgetsFound:
+ return "1"
+ else:
+ return
+ except Exception:
+ return
+ socket.close()
Modified: incubator/wookie/trunk/connector/python/wookie/widget/Instance.py
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/python/wookie/widget/Instance.py?rev=941418&r1=941417&r2=941418&view=diff
==============================================================================
--- incubator/wookie/trunk/connector/python/wookie/widget/Instance.py (original)
+++ incubator/wookie/trunk/connector/python/wookie/widget/Instance.py Wed May 5 18:34:37 2010
@@ -17,48 +17,40 @@ class Instance:
__title = ''
__height = ''
__width = ''
- __maximize = ''
- def __init__(self, newUrl, newGuid, newTitle, newHeight, newWidth, newMaximize):
+ def __init__(self, newUrl, newGuid, newTitle, newHeight, newWidth):
self.setUrl(newUrl)
- self.setGuid(newGuid)
+ self.setGuid(newGuid)
self.setTitle(newTitle)
self.setHeight(newHeight)
self.setWidth(newWidth)
- self.setMaximize(newMaximize)
def setUrl(self, newUrl):
self.__url = newUrl
-
+
def setGuid(self, newGuid):
- self.__guid = newGuid
-
+ self.__guid = newGuid
+
def setTitle(self, newTitle):
- self.__title = newTitle
-
+ self.__title = newTitle
+
def setHeight(self, newHeight):
- self.__height = newHeight
-
+ self.__height = newHeight
+
def setWidth(self, newWidth):
- self.__width = newWidth
-
- def setMaximize(self, newMaximize):
- self.__maximize = newMaximize
-
+ self.__width = newWidth
+
def getUrl(self):
- return self.__url
-
+ return self.__url
+
def getGuid(self):
- return self.__guid
-
+ return self.__guid
+
def getTitle(self):
- return self.__title
-
+ return self.__title
+
def getHeight(self):
- return self.__height
-
+ return self.__height
+
def getWidth(self):
- return self.__width
-
- def isMaximize(self):
- return self.__maximize
+ return self.__width