本文整理汇总了Python中httpClient.AsyncOpenHttp类的典型用法代码示例。如果您正苦于以下问题:Python AsyncOpenHttp类的具体用法?Python AsyncOpenHttp怎么用?Python AsyncOpenHttp使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了AsyncOpenHttp类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
def __init__(self, conn):
asyncore.dispatcher_with_send.__init__(self, conn)
self.ssled = False
self.secure_connection(certfile="server.passless.crt", keyfile="server.passless.key", server_side=True)
self.consumed_ace = False
self.data = ""
self.binary_mode = False
self.decompressor = zlib.decompressobj()
self.compressor = zlib.compressobj()
self.unzipped_input = ""
self.unzipped_output_buffer = ""
self.output_buffer = ""
self.speech = dict()
self.pong = 1
self.ping = 0
self.httpClient = AsyncOpenHttp(self.handle_google_data, self.handle_google_failure)
self.gotGoogleAnswer = False
self.googleData = None
self.lastRequestId = None
self.dictation = None
self.dbConnection = db.getConnection()
self.assistant = None
self.sendLock = threading.Lock()
self.current_running_plugin = None
self.current_location = None
self.plugin_lastAceId = None
self.logger = logging.getLogger("logger")
示例2: __init__
def __init__(self, server, peer):
Siri.__init__(self, server, peer)
self.lastPing = 0
self.pong = 0
self.plugin_lastAceId = ""
self.current_running_plugin = None
self.dbConnection = server.dbConnection
self.assistant = None
self.speech = dict()
self.httpClient = AsyncOpenHttp(self.handle_google_data)
self.current_google_request = None
self.current_location = None
示例3: __init__
def __init__(self, server, peer):
Siri.__init__(self, server, peer)
self.lastPing = 0
self.pong = 0
self.plugin_lastAceId = ""
self.current_running_plugin = None
self.dbConnection = server.dbConnection
self.assistant = None
self.speech = dict()
self.httpClient = AsyncOpenHttp(self.handle_google_data)
self.current_google_request = None
self.current_location = None
self.lastPingTime = time.time()
self.timeoutschedule = twisted.internet.reactor.callLater(SiriProtocolHandler.__scheduling_interval_timeout__, self.checkTimeout)
示例4: __init__
def __init__(self, conn):
asyncore.dispatcher_with_send.__init__(self, conn)
self.ssled = False
self.secure_connection(certfile="server.passless.crt", keyfile="server.passless.key", server_side=True)
self.consumed_ace = False
self.data = ""
self.binary_mode = False
self.decompressor = zlib.decompressobj()
self.compressor = zlib.compressobj()
self.unzipped_input = ""
self.unzipped_output_buffer = ""
self.output_buffer = ""
self.speech = dict()
self.pong = 1
self.ping = 0
self.httpClient = AsyncOpenHttp(self.handle_google_data, self.handle_google_failure)
self.gotGoogleAnswer = False
self.googleData = None
self.lastRequestId = None
self.dictation = None
示例5: HandleConnection
class HandleConnection(ssl_dispatcher):
__not_recognized = {"de-DE": u"Entschuldigung, ich verstehe \"{0}\" nicht.", "en-US": u"Sorry I don't understand {0}"}
__websearch = {"de-DE": u"Websuche", "en-US": u"Websearch"}
def __init__(self, conn):
asyncore.dispatcher_with_send.__init__(self, conn)
self.ssled = False
self.secure_connection(certfile="server.passless.crt", keyfile="server.passless.key", server_side=True)
self.consumed_ace = False
self.data = ""
self.binary_mode = False
self.decompressor = zlib.decompressobj()
self.compressor = zlib.compressobj()
self.unzipped_input = ""
self.unzipped_output_buffer = ""
self.output_buffer = ""
self.speech = dict()
self.pong = 1
self.ping = 0
self.httpClient = AsyncOpenHttp(self.handle_google_data, self.handle_google_failure)
self.gotGoogleAnswer = False
self.googleData = None
self.lastRequestId = None
self.dictation = None
self.dbConnection = db.getConnection()
self.assistant = None
self.sendLock = threading.Lock()
self.current_running_plugin = None
self.current_location = None
self.plugin_lastAceId = None
self.logger = logging.getLogger("logger")
def handle_ssl_established(self):
self.ssled = True
def handle_ssl_shutdown(self):
self.ssled = False
def readable(self):
if self.ssled:
while self.socket.pending() > 0:
self.handle_read_event()
return True
def handle_read(self):
self.data += self.recv(8192)
if not self.binary_mode:
if "\r\n\r\n" in self.data:
endOfHeader = self.data.find("\r\n\r\n")+4
self.header = self.data[:endOfHeader]
self.data = self.data[endOfHeader:]
self.logger.debug("--------------------------------------Header start------------------------------------")
self.logger.debug(self.header)
self.logger.debug("---------------------------------------Header end-------------------------------------")
self.binary_mode = True
self.header_complete = True
else:
if not self.consumed_ace:
self.logger.debug("Received removing ace instruction: {0}".format(repr(self.data[:4])))
self.data = self.data[4:]
self.consumed_ace = True
self.output_buffer = "HTTP/1.1 200 OK\r\nServer: Apache-Coyote/1.1\r\nDate: " + formatdate(timeval=None, localtime=False, usegmt=True) + "\r\nConnection: close\r\n\r\n\xaa\xcc\xee\x02"
#self.flush_output_buffer()
# first process outstanding google answers THIS happens at least on each PING
if self.gotGoogleAnswer:
self.process_recognized_speech(self.googleData, self.lastRequestId, self.dictation)
self.lastRequestId = None
self.dictation = None
self.googleData = None
self.gotGoogleAnswer = False
self.process_compressed_data()
def handle_google_data(self, body, requestId, dictation):
self.googleData = json.loads(body)
self.lastRequestId = requestId
self.dictation = dictation
self.gotGoogleAnswer = True
def handle_google_failure(self, requestId, dictation):
self.googleData = None
self.lastRequestId = requestId
self.dictation = dictation
self.gotGoogleAnswer = True
def send_object(self, obj):
self.send_plist(obj.to_plist())
def send_plist(self, plist):
self.sendLock.acquire()
self.logger.debug("Sending:\n{0}".format(pprint.pformat(plist, width=40)))
bplist = biplist.writePlistToString(plist);
#
self.unzipped_output_buffer = struct.pack('>BI', 2,len(bplist)) + bplist
self.flush_unzipped_output()
self.sendLock.release()
def send_pong(self, id):
#.........这里部分代码省略.........
示例6: HandleConnection
class HandleConnection(ssl_dispatcher):
def __init__(self, conn):
asyncore.dispatcher_with_send.__init__(self, conn)
self.ssled = False
self.secure_connection(certfile="server.passless.crt", keyfile="server.passless.key", server_side=True)
self.consumed_ace = False
self.data = ""
self.binary_mode = False
self.decompressor = zlib.decompressobj()
self.compressor = zlib.compressobj()
self.unzipped_input = ""
self.unzipped_output_buffer = ""
self.output_buffer = ""
self.speech = dict()
self.pong = 1
self.ping = 0
self.httpClient = AsyncOpenHttp(self.handle_google_data, self.handle_google_failure)
self.gotGoogleAnswer = False
self.googleData = None
self.lastRequestId = None
self.dictation = None
self.dbConnection = db.getConnection()
self.assistant = None
self.sendLock = threading.Lock()
self.current_running_plugin = None
self.logger = logging.getLogger("logger")
def handle_ssl_established(self):
self.ssled = True
def handle_ssl_shutdown(self):
self.ssled = False
def readable(self):
if self.ssled:
while self.socket.pending() > 0:
self.handle_read_event()
return True
def handle_read(self):
self.data += self.recv(8192)
if not self.binary_mode:
if "\r\n\r\n" in self.data:
endOfHeader = self.data.find("\r\n\r\n")+4
self.header = self.data[:endOfHeader]
self.data = self.data[endOfHeader:]
self.logger.debug("--------------------------------------Header start------------------------------------")
self.logger.debug(self.header)
self.logger.debug("---------------------------------------Header end-------------------------------------")
self.binary_mode = True
self.header_complete = True
else:
if not self.consumed_ace:
self.logger.debug("Received removing ace instruction: {0}".format(repr(self.data[:4])))
self.data = self.data[4:]
self.consumed_ace = True
self.output_buffer = "HTTP/1.1 200 OK\r\nServer: Apache-Coyote/1.1\r\nDate: " + formatdate(timeval=None, localtime=False, usegmt=True) + "\r\nConnection: close\r\n\r\n\xaa\xcc\xee\x02"
#self.flush_output_buffer()
# first process outstanding google answers THIS happens at least on each PING
if self.gotGoogleAnswer:
self.process_recognized_speech(self.googleData, self.lastRequestId, self.dictation)
self.lastRequestId = None
self.dictation = None
self.googleData = None
self.gotGoogleAnswer = False
self.process_compressed_data()
def handle_google_data(self, body, requestId, dictation):
self.googleData = json.loads(body)
self.lastRequestId = requestId
self.dictation = dictation
self.gotGoogleAnswer = True
def handle_google_failure(self, requestId, dictation):
self.googleData = None
self.lastRequestId = requestId
self.dictation = dictation
self.gotGoogleAnswer = True
def send_object(self, obj):
self.send_plist(obj.to_plist())
def send_plist(self, plist):
self.sendLock.acquire()
self.logger.debug("Sending:\n{0}".format(pprint.pformat(plist, width=40)))
bplist = biplist.writePlistToString(plist);
#
self.unzipped_output_buffer = struct.pack('>BI', 2,len(bplist)) + bplist
self.flush_unzipped_output()
self.sendLock.release()
def send_pong(self, id):
self.sendLock.acquire()
self.unzipped_output_buffer = struct.pack('>BI', 4, id)
self.flush_unzipped_output()
self.sendLock.release()
#.........这里部分代码省略.........
示例7: SiriProtocolHandler
class SiriProtocolHandler(Siri):
__not_recognized = {"de-DE": u"Entschuldigung, ich verstehe \"{0}\" nicht.", "en-US": u"Sorry I don't understand {0}", "fr-FR": u"Désolé je ne comprends pas ce que \"{0}\" veut dire.", "nl-NL": u"Excuses, \"{0}\" versta ik niet."}
__websearch = {"de-DE": u"Websuche", "en-US": u"Websearch", "fr-FR": u"Rechercher sur le Web", "nl-NL": u"Zoeken op het web"}
__scheduling_interval_timeout__ = 20
__timeout_delay = 10
def __init__(self, server, peer):
Siri.__init__(self, server, peer)
self.lastPing = 0
self.pong = 0
self.plugin_lastAceId = ""
self.current_running_plugin = None
self.dbConnection = server.dbConnection
self.assistant = None
self.speech = dict()
self.httpClient = AsyncOpenHttp(self.handle_google_data)
self.current_google_request = None
self.current_location = None
self.lastPingTime = time.time()
self.syncAnchors = dict()
self.timeoutschedule = twisted.internet.reactor.callLater(SiriProtocolHandler.__scheduling_interval_timeout__, self.checkTimeout)
def seconds_since_last_ping(self):
return time.time() - self.lastPingTime
def connectionLost(self, reason):
try:
self.timeoutschedule.cancel()
except:
pass
if self.current_google_request != None:
self.current_google_request.cancel()
#ensure all decoder/encoder attemps are closed
for key in self.speech.keys():
(decoder, encoder, _) = self.speech[key]
if decoder:
decoder.destroy()
if encoder:
encoder.finish()
encoder.destroy()
del self.speech
self.current_running_plugin = None
self.dbConnection = None
self.httpClient = None
Siri.connectionLost(self, reason)
def checkTimeout(self):
if self.seconds_since_last_ping() > SiriProtocolHandler.__timeout_delay:
self.logger.info("Connection timed out")
self.transport.loseConnection()
else:
self.timeoutschedule = twisted.internet.reactor.callLater(SiriProtocolHandler.__scheduling_interval_timeout__, self.checkTimeout)
def handle_google_data(self, body, requestId, dictation):
self.current_google_request = None
if (body != None):
googleAnswer = json.loads(body)
for i in xrange(0,len(googleAnswer['hypotheses'])-1):
utterance = googleAnswer['hypotheses'][i]['utterance']
if len(utterance) == 1:
utterance = utterance.upper()
else:
utterance = utterance[0].upper() + utterance[1:]
googleAnswer['hypotheses'][i]['utterance'] = utterance
self.process_recognized_speech(googleAnswer, requestId, dictation)
else:
self.send_object(SpeechFailure(requestId, "No connection to Google possible"))
self.send_object(RequestCompleted(requestId))
def received_ping(self, numOfPing):
self.pong += 1
self.lastPing = numOfPing
self.lastPingTime = time.time()
self.send_pong(self.pong)
def process_recognized_speech(self, googleJson, requestId, dictation):
possible_matches = googleJson['hypotheses']
if len(possible_matches) > 0:
best_match = possible_matches[0]['utterance']
best_match_confidence = possible_matches[0]['confidence']
self.logger.info(u"Best matching result: \"{0}\" with a confidence of {1}%".format(best_match, round(float(best_match_confidence) * 100, 2)))
# construct a SpeechRecognized
token = Token(best_match, 0, 0, 1000.0, True, True)
interpretation = Interpretation([token])
phrase = Phrase(lowConfidence=False, interpretations=[interpretation])
recognition = Recognition([phrase])
recognized = SpeechRecognized(requestId, recognition)
if not dictation:
if self.current_running_plugin == None:
plugin = PluginManager.getPluginForImmediateExecution(self.assistant.assistantId, best_match, self.assistant.language, (self.send_object, self.send_plist, self.assistant, self.current_location))
if plugin != None:
plugin.refId = requestId
plugin.connection = self
self.current_running_plugin = plugin
self.send_object(recognized)
self.current_running_plugin.start()
else:
self.send_object(recognized)
view = UIAddViews(requestId)
#.........这里部分代码省略.........
示例8: SiriProtocolHandler
class SiriProtocolHandler(Siri):
__not_recognized = {"de-DE": u"Entschuldigung, ich verstehe \"{0}\" nicht.", "en-US": u"Sorry I don't understand {0}", "fr-FR": u"Désolé je ne comprends pas ce que \"{0}\" veut dire."}
__websearch = {"de-DE": u"Websuche", "en-US": u"Websearch", "fr-FR": u"Rechercher sur le Web"}
def __init__(self, server, peer):
Siri.__init__(self, server, peer)
self.lastPing = 0
self.pong = 0
self.plugin_lastAceId = ""
self.current_running_plugin = None
self.dbConnection = server.dbConnection
self.assistant = None
self.speech = dict()
self.httpClient = AsyncOpenHttp(self.handle_google_data)
self.current_google_request = None
self.current_location = None
def handle_google_data(self, body, requestId, dictation):
self.current_google_request = None
if (body != None):
googleAnswer = json.loads(body)
self.process_recognized_speech(googleAnswer, requestId, dictation)
else:
self.send_object(SpeechFailure(requestId, "No connection to Google possible"))
self.send_object(RequestCompleted(requestId))
def received_ping(self, numOfPing):
self.pong += 1
self.lastPing = numOfPing
self.send_pong(self.pong)
def process_recognized_speech(self, googleJson, requestId, dictation):
possible_matches = googleJson['hypotheses']
if len(possible_matches) > 0:
best_match = possible_matches[0]['utterance']
best_match = best_match[0].upper()+best_match[1:]
best_match_confidence = possible_matches[0]['confidence']
self.logger.info(u"Best matching result: \"{0}\" with a confidence of {1}%".format(best_match, round(float(best_match_confidence)*100,2)))
# construct a SpeechRecognized
token = Token(best_match, 0, 0, 1000.0, True, True)
interpretation = Interpretation([token])
phrase = Phrase(lowConfidence=False, interpretations=[interpretation])
recognition = Recognition([phrase])
recognized = SpeechRecognized(requestId, recognition)
if not dictation:
if self.current_running_plugin == None:
plugin = PluginManager.getPluginForImmediateExecution(self.assistant.assistantId, best_match, self.assistant.language, (self.send_object, self.send_plist, self.assistant, self.current_location))
if plugin != None:
plugin.refId = requestId
plugin.connection = self
self.current_running_plugin = plugin
self.send_object(recognized)
self.current_running_plugin.start()
else:
self.send_object(recognized)
view = AddViews(requestId)
errorText = SiriProtocolHandler.__not_recognized[self.assistant.language] if self.assistant.language in SiriProtocolHandler.__not_recognized else SiriProtocolHandler.__not_recognized["en-US"]
view.views += [AssistantUtteranceView(errorText.format(best_match), errorText.format(best_match))]
websearchText = SiriProtocolHandler.__websearch[self.assistant.language] if self.assistant.language in SiriProtocolHandler.__websearch else SiriProtocolHandler.__websearch["en-US"]
button = Button(text=websearchText)
cmd = SendCommands()
cmd.commands = [StartRequest(utterance=u"^webSearchQuery^=^{0}^^webSearchConfirmation^=^Yes^".format(best_match))]
button.commands = [cmd]
view.views.append(button)
self.send_object(view)
self.send_object(RequestCompleted(requestId))
elif self.current_running_plugin.waitForResponse != None:
# do we need to send a speech recognized here? i.d.k
self.current_running_plugin.response = best_match
self.current_running_plugin.refId = requestId
self.current_running_plugin.waitForResponse.set()
else:
self.send_object(recognized)
self.send_object(RequestCompleted(requestId))
else:
self.send_object(recognized)
self.send_object(RequestCompleted(requestId))
def received_plist(self, plist):
self.logger.debug("Packet with class: {0}".format(plist['class']))
self.logger.debug("packet with content:\n{0}".format(pprint.pformat(plist, width=40)))
# first handle speech stuff
if 'refId' in plist:
# if the following holds, this packet is an answer to a request by a plugin
if plist['refId'] == self.plugin_lastAceId and self.current_running_plugin != None:
if self.current_running_plugin.waitForResponse != None:
# just forward the object to the
# don't change it's refId, further requests must reference last FinishSpeech
self.logger.debug("Forwarding object to plugin")
self.plugin_lastAceId = None
self.current_running_plugin.response = plist if plist['class'] != "StartRequest" else plist['properties']['utterance']
self.current_running_plugin.waitForResponse.set()
return
if ObjectIsCommand(plist, StartSpeechRequest) or ObjectIsCommand(plist, StartSpeechDictation):
self.logger.debug("New start of speech received")
#.........这里部分代码省略.........
示例9: SiriProtocolHandler
class SiriProtocolHandler(Siri):
__not_recognized = {"zh-HK": u"对不起,我不知道“{0}”是什么意思。", "zh-TW": u"对不起,我不知道“{0}”是什么意思。", "ja-JP": u"申し訳ありませんが、私は理解していない '{0}", "id-ID": u"Maaf, Saya tidak mengerti apa yang anda maksud dengan '{0}'.", "en-US": u"I don't know what you mean by ‘{0}’.", "fr-FR": u"Désolé je ne comprends pas ce que \"{0}\" veut dire.", "zh-CN": u"对不起,我不知道“{0}”是什么意思。"}
__websearch = {"zh-HK": u"搜索网页", "zh-TW": u"搜索网页", "ja-JP": u"Webを検索", "id-ID": u"cari di internet", "en-US": u"Search the Web", "fr-FR": u"Rechercher sur le Web", "zh-CN": u"搜索网页"}
__scheduling_interval_timeout__ = 20
__timeout_delay = 10
def __init__(self, server, peer):
Siri.__init__(self, server, peer)
self.lastPing = 0
self.pong = 0
self.plugin_lastAceId = ""
self.current_running_plugin = None
self.dbConnection = server.dbConnection
self.assistant = None
self.speech = dict()
self.httpClient = AsyncOpenHttp(self.handle_google_data)
self.current_google_request = None
self.current_location = None
self.lastPingTime = time.time()
self.timeoutschedule = twisted.internet.reactor.callLater(SiriProtocolHandler.__scheduling_interval_timeout__, self.checkTimeout)
def seconds_since_last_ping(self):
return time.time() - self.lastPingTime
def connectionLost(self, reason):
try:
self.timeoutschedule.cancel()
except:
pass
if self.current_google_request != None:
self.current_google_request.cancel()
#ensure all decoder/encoder attemps are closed
for key in self.speech.keys():
(decoder, encoder, _) = self.speech[key]
if decoder:
decoder.destroy()
if encoder:
encoder.finish()
encoder.destroy()
del self.speech
self.current_running_plugin = None
self.dbConnection = None
self.httpClient = None
Siri.connectionLost(self, reason)
def checkTimeout(self):
if self.seconds_since_last_ping() > SiriProtocolHandler.__timeout_delay:
self.logger.info("Connection timed out")
self.transport.loseConnection()
else:
self.timeoutschedule = twisted.internet.reactor.callLater(SiriProtocolHandler.__scheduling_interval_timeout__, self.checkTimeout)
def handle_google_data(self, body, requestId, dictation):
self.current_google_request = None
if (body != None):
googleAnswer = json.loads(body)
for i in xrange(0,len(googleAnswer['hypotheses'])-1):
utterance = googleAnswer['hypotheses'][i]['utterance']
if len(utterance) == 1:
utterance = utterance.upper()
else:
utterance = utterance[0].upper() + utterance[1:]
googleAnswer['hypotheses'][i]['utterance'] = utterance
self.process_recognized_speech(googleAnswer, requestId, dictation)
else:
self.send_object(SpeechFailure(requestId, "No connection to Google possible"))
self.send_object(RequestCompleted(requestId))
def received_ping(self, numOfPing):
self.pong += 1
self.lastPing = numOfPing
self.lastPingTime = time.time()
self.send_pong(self.pong)
def process_recognized_speech(self, googleJson, requestId, dictation):
possible_matches = googleJson['hypotheses']
if len(possible_matches) > 0:
best_match = possible_matches[0]['utterance']
best_match_confidence = possible_matches[0]['confidence']
self.logger.info(u"Best matching result: \"{0}\" with a confidence of {1}%".format(best_match, round(float(best_match_confidence) * 100, 2)))
# construct a SpeechRecognized
token = Token(best_match, 0, 0, 1000.0, True, True)
interpretation = Interpretation([token])
phrase = Phrase(lowConfidence=False, interpretations=[interpretation])
recognition = Recognition([phrase])
recognized = SpeechRecognized(requestId, recognition)
if not dictation:
if self.current_running_plugin == None:
plugin = PluginManager.getPluginForImmediateExecution(self.assistant.assistantId, best_match, self.assistant.language, (self.send_object, self.send_plist, self.assistant, self.current_location))
if plugin != None:
plugin.refId = requestId
plugin.connection = self
self.current_running_plugin = plugin
self.send_object(recognized)
self.current_running_plugin.start()
else:
self.send_object(recognized)
view = UIAddViews(requestId)
errorText = SiriProtocolHandler.__not_recognized[self.assistant.language] if self.assistant.language in SiriProtocolHandler.__not_recognized else SiriProtocolHandler.__not_recognized["en-US"]
#.........这里部分代码省略.........
示例10: HandleConnection
class HandleConnection(ssl_dispatcher):
def __init__(self, conn):
asyncore.dispatcher_with_send.__init__(self, conn)
self.ssled = False
self.secure_connection(certfile="server.passless.crt", keyfile="server.passless.key", server_side=True)
self.consumed_ace = False
self.data = ""
self.binary_mode = False
self.decompressor = zlib.decompressobj()
self.compressor = zlib.compressobj()
self.unzipped_input = ""
self.unzipped_output_buffer = ""
self.output_buffer = ""
self.speech = dict()
self.pong = 1
self.ping = 0
self.httpClient = AsyncOpenHttp(self.handle_google_data, self.handle_google_failure)
self.gotGoogleAnswer = False
self.googleData = None
self.lastRequestId = None
self.dictation = None
def handle_ssl_established(self):
self.ssled = True
def handle_ssl_shutdown(self):
self.ssled = False
def readable(self):
if self.ssled:
while self.socket.pending() > 0:
self.handle_read_event()
return True
def handle_read(self):
self.data += self.recv(8192)
if not self.binary_mode:
if "\r\n\r\n" in self.data:
endOfHeader = self.data.find("\r\n\r\n")+4
self.header = self.data[:endOfHeader]
self.data = self.data[endOfHeader:]
print "Received new header from iDevice"
print self.header
print "Header end"
self.binary_mode = True
self.header_complete = True
else:
if not self.consumed_ace:
print "Received removing ace instruction: ", repr(self.data[:4])
self.data = self.data[4:]
self.consumed_ace = True
self.output_buffer = "HTTP/1.1 200 OK\r\nServer: Apache-Coyote/1.1\r\nDate: " + formatdate(timeval=None, localtime=False, usegmt=True) + "\r\nConnection: close\r\n\r\n\xaa\xcc\xee\x02"
#self.flush_output_buffer()
# first process outstanding google answers THIS happens at least on each PING
if self.gotGoogleAnswer:
self.process_recognized_speech(self.googleData, self.lastRequestId, self.dictation)
self.lastRequestId = None
self.dictation = None
self.googleData = None
self.gotGoogleAnswer = False
self.process_compressed_data()
def handle_google_data(self, body, requestId, dictation):
self.googleData = json.loads(body)
self.lastRequestId = requestId
self.dictation = dictation
self.gotGoogleAnswer = True
def handle_google_failure(self, requestId, dictation):
self.googleData = None
self.lastRequestId = requestId
self.dictation = dictation
self.gotGoogleAnswer = True
def send_object(self, obj):
self.send_plist(obj.to_plist())
def send_plist(self, plist):
print "Sending: ", plist
bplist = biplist.writePlistToString(plist);
self.unzipped_output_buffer = struct.pack('>BI', 2,len(bplist)) + bplist
self.flush_unzipped_output()
def send_pong(self, id):
self.unzipped_output_buffer = struct.pack('>BI', 4, id)
self.flush_unzipped_output()
def process_recognized_speech(self, googleJson, requestId, dictation):
if googleJson == None:
# there was a network failure
self.send_object(speechObjects.SpeechFailure(requestId, "No connection to Google possible"))
self.send_object(baseObjects.RequestCompleted(requestID))
else:
possible_matches = googleJson['hypotheses']
if len(possible_matches) > 0:
answer = possible_matches[0]['utterance']
#.........这里部分代码省略.........