def createStream(self, qi_stream): if qi_stream is None: return if not isinstance(qi_stream, QiStream): return conn = http.HTTPConnection(self.url) conn.request("POST", self.__streamsBase, qi_stream.toString(), self.__qi_headers()) response = conn.getresponse() if response.status == 302: url = urlparse(response.getheader("Location")) response.close() conn.request("GET", url.path, headers=self.__qi_headers()) response = conn.getresponse() if response.status == 200 or response.status == 201: stream = QiStream.fromString(response.read().decode()) conn.close() return stream else: conn.close() raise QiError( "Failed to create QiStream, {stream_id}. {status}:{reason}". format(stream_id=qi_stream.Id, status=response.status, reason=response.reason))
def getStreams(self, namespace_id, query="", skip=0, count=100): """Retrieves a list of streams associated with 'namespace_id' under the current tenant""" if namespace_id is None: raise TypeError if query is None: raise TypeError response = requests.get( self.__url + self.__getStreamsPath.format(tenant_id=self.__tenant, namespace_id=namespace_id, query=query, skip=skip, count=count), headers=self.__qiHeaders()) if response.status_code < 200 or response.status_code >= 300: response.close() raise QiError( "Failed to get all QiStreams. {status}:{reason}".format( status=response.status_code, reason=response.text)) content = json.loads(response.content) results = [] for item in content: results.append(QiStream.fromJson(item)) response.close() return results
def createStream(self, qi_stream): if qi_stream is None: return if not isinstance(qi_stream, QiStream): return conn = http.HTTPConnection(self.url) conn.request("POST", "/qi/streams", qi_stream.toString(), self.__qi_headers()) response = conn.getresponse() if response.status == 302: url = urlparse(response.getheader("Location")) response.close() conn.request("GET", url.path, headers = self.__qi_headers()) response = conn.getresponse() if response.status == 200 or response.status == 201: stream = QiStream.fromString(response.read().decode()) conn.close() return stream else: conn.close() raise QiError("Failed to create QiStream, {stream_id}. {status}:{reason}". format(stream_id = qi_stream.Id, status = response.status, reason = response.reason))
def getStreams(self, tenant_id, namespace_id): self.__getToken() conn = http.HTTPSConnection(self.url) conn.request( "GET", self.__streamsBase.format(tenant_id=tenant_id, namespace_id=namespace_id), headers=self.__qi_headers(), ) response = conn.getresponse() if response.status != 200: conn.close() raise QiError( "Failed to get QiStreams. {status}:{reason}".format(status=response.status, reason=response.reason) ) streamssresponse = response.read().decode() conn.close() streamsslist = json.loads(streamssresponse) returnlist = [] for streamdict in streamsslist: returnlist.append(QiStream.fromDictionary(streamdict)) return returnlist
def getStream(self, stream_id): conn = http.HTTPConnection(self.url) conn.request("GET", "/qi/streams/" + stream_id, headers = self.__qi_headers()) response = conn.getresponse() if response.status != 200: conn.close() raise QiError("Failed to get QiStream {stream_id}. {status}:{reason}". format(stream_id = stream_id, status = response.status, reason = response.reason)) streamResponse = response.read().decode() conn.close() return QiStream.fromDictionary(json.loads(streamResponse))
def getStream(self, tenant_id, namespace_id, stream_id): self.__getToken() conn = http.HTTPSConnection(self.url) conn.request("GET", self.__streamsBase.format(tenant_id = tenant_id, namespace_id = namespace_id) + '/' + stream_id, headers = self.__qi_headers()) response = conn.getresponse() if response.status != 200: conn.close() raise QiError("Failed to get QiStream {stream_id}. {status}:{reason}". format(stream_id = stream_id, status = response.status, reason = response.reason)) streamResponse = response.read().decode() conn.close() return QiStream.fromDictionary(json.loads(streamResponse))
def getStream(self, namespace_id, stream_id): """Retrieves a stream specified by 'stream_id' from the Qi Service""" if namespace_id is None: raise TypeError if stream_id is None: raise TypeError response = requests.get( self.__url + self.__streamsPath.format(tenant_id=self.__tenant, namespace_id=namespace_id, stream_id=stream_id), headers=self.__qiHeaders()) if response.status_code < 200 or response.status_code >= 300: response.close() raise QiError("Failed to get QiStream, {stream_id}. {status}:{reason}". format(stream_id=stream_id, status=response.status_code, reason=response.text)) stream = QiStream.fromJson(json.loads(response.content)) response.close() return stream
def getStreams(self): conn = http.HTTPConnection(self.url) conn.request("GET", self.__streamsBase, headers=self.__qi_headers()) response = conn.getresponse() if response.status != 200: conn.close() raise QiError("Failed to get QiStreams. {status}:{reason}".format( status=response.status, reason=response.reason)) streamssresponse = response.read().decode() conn.close() streamsslist = json.loads(streamssresponse) returnlist = [] for streamdict in streamsslist: returnlist.append(QiStream.fromDictionary(streamdict)) return returnlist
def getStreams(self): conn = http.HTTPConnection(self.url) conn.request("GET", "/qi/streams/", headers = self.__qi_headers()) response = conn.getresponse() if response.status != 200: conn.close() raise QiError("Failed to get QiStreams. {status}:{reason}". format(status = response.status, reason = response.reason)) streamssresponse = response.read().decode() conn.close() streamsslist = json.loads(streamssresponse) returnlist = [] for streamdict in streamsslist: returnlist.append(QiStream.fromDictionary(streamdict)) return returnlist
def getOrCreateStream(self, namespace_id, stream): """Tells Qi Service to create a stream based on the local 'stream' QiStream object""" if namespace_id is None: raise TypeError if stream is None or not isinstance(stream, QiStream): raise TypeError response = requests.post( self.__url + self.__streamsPath.format(tenant_id=self.__tenant, namespace_id=namespace_id, stream_id=stream.Id), data=stream.toJson(), headers=self.__qiHeaders()) if response.status_code < 200 or response.status_code >= 300: response.close() raise QiError("Failed to create QiStream, {stream_id}. {status}:{reason}". format(stream_id=stream.Id, status=response.status_code, reason=response.text)) stream = QiStream.fromJson(json.loads(response.content)) response.close() return stream
def getStreams(self, namespace_id, query): """Retrieves a list of streams associated with 'namespace_id' under the current tenant""" if namespace_id is None: raise TypeError if query is None: raise TypeError response = requests.get( self.__url + self.__streamsPath.format(tenant_id=self.__tenant, namespace_id=namespace_id), headers=self.__qiHeaders()) if response.status_code == 200: print("Succeeded in getting all streams") else: response.close() raise QiError("Failed to get all QiStreams. {status}:{reason}". format(status=response.status_code, reason=response.text)) content = json.loads(response.content) results = [] for item in content: results.append(QiStream.fromJson(item)) response.close() return results