Exemplo n.º 1
0
    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))
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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))
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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))        
Exemplo n.º 6
0
    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))        
Exemplo n.º 7
0
    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
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
    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
Exemplo n.º 10
0
    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
Exemplo n.º 11
0
    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