def processRequest(self): self.request.settimeout(None) if not self.checkAuthentication(): return self.requestAuthentication() self.path = uqot(self.path) # Added by Rgg to handle requests containing percent-encoded chars request = self.path.replace(self.server.context, "/").split('?') relativePath = request[0] if relativePath[0] == "/": relativePath = relativePath[1:] if relativePath == "webiopi" or relativePath == "webiopi/": self.send_response(301) self.send_header("Location", "/") self.end_headers() return params = {} if len(request) > 1: for s in request[1].split('&'): if s.find('=') > 0: (name, value) = s.split('=') params[name] = value else: params[s] = None compact = False if 'compact' in params: compact = str2bool(params['compact']) try: result = (None, None, None) if self.command == "GET": result = self.server.handler.do_GET(relativePath, compact) elif self.command == "POST": length = 0 length_header = 'content-length' if length_header in self.headers: length = int(self.headers[length_header]) result = self.server.handler.do_POST(relativePath, self.rfile.read(length), compact) else: result = (405, None, None) (code, body, contentType) = result if code > 0: self.sendResponse(code, body, contentType) else: if self.command == "GET": self.serveFile(relativePath) else: self.sendResponse(404) except (GPIO.InvalidDirectionException, GPIO.InvalidChannelException, GPIO.SetupException) as e: self.sendResponse(403, "%s" % e) except ValueError as e: self.sendResponse(403, "%s" % e) except Exception as e: self.sendResponse(500) raise e
def processRequest(self): self.request.settimeout(None) if not self.checkAuthentication(): return self.requestAuthentication() request = self.path.replace(self.server.context, "/").split('?') relativePath = request[0] if relativePath[0] == "/": relativePath = relativePath[1:] if relativePath == "webiopi" or relativePath == "webiopi/": self.send_response(301) self.send_header("Location", "/") self.end_headers() return params = {} if len(request) > 1: for s in request[1].split('&'): if s.find('=') > 0: (name, value) = s.split('=') params[name] = value else: params[s] = None compact = False if 'compact' in params: compact = str2bool(params['compact']) try: result = (None, None, None) if self.command == "GET": result = self.server.handler.do_GET(relativePath, compact) elif self.command == "POST": length = 0 length_header = 'content-length' if length_header in self.headers: length = int(self.headers[length_header]) result = self.server.handler.do_POST(relativePath, self.rfile.read(length), compact) else: result = (405, None, None) (code, body, contentType) = result if code > 0: self.sendResponse(code, body, contentType) else: if self.command == "GET": self.serveFile(relativePath) else: self.sendResponse(404) except (GPIO.InvalidDirectionException, GPIO.InvalidChannelException, GPIO.SetupException) as e: self.sendResponse(403, "%s" % e) except ValueError as e: self.sendResponse(403, "%s" % e) except Exception as e: self.sendResponse(500) raise e
def __init__(self, slave=0x20, invert_oe=False, outconf=0xFF): # Check parameter sanity oconf = toint(outconf) if oconf != 0xFF: if not oconf in range(0, 0xFF): raise ValueError("outconf value %d out of range [%d..%d]" % (oconf, 0x00, 0xFE)) # Go for it I2C.__init__(self, toint(slave)) GPIOPort.__init__(self, self.CHANNELS, self.BANKS) iv_oe = str2bool(invert_oe) if iv_oe: self.writeRegister(self.MODE, (self.VAL_MODEDEF | self.FLAG_OEPOLHI)) else: self.writeRegister(self.MODE, self.VAL_MODEDEF) self.writeRegister(self.OUTCONF, oconf) self.reset()
def extract(self, fmtArray, pathArray, args): if len(fmtArray) != len(pathArray): return False if len(fmtArray) == 0: return True fmt = fmtArray[0] path = pathArray[0] if fmt == path: return self.extract(fmtArray[1:], pathArray[1:], args) if fmt.startswith("%"): fmt = fmt[1:] t = 's' if fmt[0] == '(': if fmt[-1] == ')': name = fmt[1:-1] elif fmt[-2] == ')': name = fmt[1:-2] t = fmt[-1] else: raise Exception("Missing closing brace") else: name = fmt if t == 's': args[name] = path elif t == 'b': args[name] = types.str2bool(path) elif t == 'd': args[name] = types.toint(path) elif t == 'x': args[name] = int(path, 16) elif t == 'f': args[name] = float(path) else: raise Exception("Unknown format type : %s" % t) return self.extract(fmtArray[1:], pathArray[1:], args) return False
def enableBlinking(blinking="yes"): global BLINKING BLINKING = str2bool(blinking)