views:

106

answers:

1
import cherrypy
import os

PORT = 8080

class intelServ:
    def index(self, botkey = None, userkey = None, network = None, user = None, channel = None, msg = None, step = None, **args):

        # If any necessary parameters are missing, the bot should fail silently.
        #if not botkey or not userkey or not network or not user or not channel or not msg:
        #   return 'failing'

        chatLog = Chat()
        chatLog.genLogfile(botkey, userkey)

        return "You said: " + msg
    index.exposed = True


class Chat:
    def genLogfile(self, botkey, userkey):
        botHome = os.path.join(os.curdir, botkey)
        chatLog = os.path.join(botHome, userkey)
        print botHome
        print chatLog

        # check if bot has a home, if not make one
        if not os.path.exists(botHome):
            os.mkdir(botHome)

        # check if communication is already in progress, if not start it.
        if not os.path.exists(chatLog):
            FILE = open(chatLog, "w")
            FILE.close()
            FILE = open(chatLog+".step","w")
            FILE.close()

# configure and start our cherrypy server   
cherrypy.config.update({'server.socket_port': PORT, 'server.socket_host': '0.0.0.0'})
cherrypy.quickstart(intelServ())

This code returns the following traceback and I cannot figure out why:

> 500 Internal Server Error
> 
> The server encountered an unexpected
> condition which prevented it from
> fulfilling the request.
> 
> Traceback (most recent call last):  
> File
> "c:\python26\lib\site-packages\cherrypy\_cprequest.py",
> line 606, in respond
>     cherrypy.response.body = self.handler()   File
> "c:\python26\lib\site-packages\cherrypy\_cpdispatch.py",
> line 25, in __call__
>     return self.callable(*self.args, **self.kwargs)   File "D:\code\pycode\spam\chatbot.py",
> line 14, in index
>     chatLog.genLogfile(botkey, userkey)   File
> "D:\code\pycode\spampy\chatbot.py",
> line 22, in genLogfile
>     botHome = os.path.join(os.curdir, botkey)   File
> "c:\python26\lib\ntpath.py", line 73,
> in join
>     elif isabs(b):   File "c:\python26\lib\ntpath.py", line 57,
> in isabs
>     s = splitdrive(s)[1]   File "c:\python26\lib\ntpath.py", line 125,
> in splitdrive
>     if p[1:2] == ':': TypeError: 'NoneType' object is unsubscriptable
> 
> Powered by CherryPy 3.1.2
+1  A: 

It looks like the parameter botkey as supplied to intelServ.index() is None (hence the 'NoneType'). You should uncomment your input validation code.

quamrana