示例#1
0
    def createType(self, qi_type):
        if qi_type is None:
            return

        if not isinstance(qi_type, QiType):
            return

        conn = http.HTTPConnection(self.url)
        conn.request("POST", self.__typesBase, qi_type.toString(),
                     self.__qi_headers())
        response = conn.getresponse()

        if response.status == 302:  # Found
            url = urlparse(response.getheader("Location"))
            conn = http.HTTPConnection(self.url)
            conn.request("GET", url.path, headers=self.__qi_headers())
            response = conn.getresponse()

        if response.status == 200 or response.status == 201:
            type = QiType.fromString(response.read().decode())
            conn.close()
            return type
        else:
            conn.close()
            raise QiError("Failed to create type. {status}:{reason}".format(
                status=response.status, reason=response.reason))
示例#2
0
 def createType(self, tenant_id, namespace_id, qi_type):
     if qi_type is None:
         return
    
     if not isinstance(qi_type, QiType):
         return
     
     self.__getToken()
     
     conn = http.HTTPSConnection(self.url)
     
     conn.request("POST", self.__typesBase.format(tenant_id = tenant_id, namespace_id = namespace_id), qi_type.toString(), self.__qi_headers())
     response = conn.getresponse()
     
     if response.status == 302: # Found                      
         url = urlparse(response.getheader("Location"))
         conn = http.HTTPSConnection(self.url)
         conn.request("GET", url.path, headers = self.__qi_headers())            
         response = conn.getresponse()
     
     if response.status == 200 or response.status == 201:
         type = QiType.fromString(response.read().decode())
         conn.close()
         return type
     else:
         conn.close()
         raise QiError("Failed to create type. {status}:{reason}".format(status = response.status, reason = response.reason))
示例#3
0
    def getOrCreateType(self, namespace_id, type):
        """Tells Qi Service to create a type based on local 'type' or get if existing type matches"""
        if namespace_id is None:
            raise TypeError
        if type is None or not isinstance(type, QiType):
            raise TypeError

        response = requests.post(
            self.__url + self.__typesPath.format(tenant_id=self.__tenant,
                                                 namespace_id=namespace_id,
                                                 type_id=type.Id),
            data=type.toJson(),
            headers=self.__qiHeaders())
        if response.status_code < 200 or response.status_code >= 300:
            response.close()
            raise QiError(
                "Failed to create type, {type_id}. {status}:{reason}".format(
                    type_id=type.Id,
                    status=response.status_code,
                    reason=response.text))

        # Orig
        # type = QiType.fromJson(json.loads(response.content))

        # New
        content_str = str(response.content)
        content = json.loads(content_str)
        type = QiType.fromJson(content)
        #

        response.close()
        return type
示例#4
0
 def getType(self, type_id):
     conn = http.HTTPConnection(self.url)
     
     conn.request("GET", "/qi/types/" + type_id, headers = self.__qi_headers())
     response = conn.getresponse()
     if response.status != 200:            
         conn.close()
         raise QiError("Failed to get QiType, {type_id}. {status}:{reason}".
                       format(type_id = type_id, status = response.status, reason = response.reason))
     
     typesresponse = response.read().decode()
     conn.close()
     return QiType.fromString(typesresponse)        
示例#5
0
 def getType(self, tenant_id, namespace_id, type_id):
     self.__getToken()
     conn = http.HTTPSConnection(self.url)
     
     conn.request("GET", self.__typesBase.format(tenant_id = tenant_id, namespace_id = namespace_id) + '/' + type_id, headers = self.__qi_headers())
     response = conn.getresponse()
     if response.status != 200:            
         conn.close()
         raise QiError("Failed to get QiType, {type_id}. {status}:{reason}".
                       format(type_id = type_id, status = response.status, reason = response.reason))
     
     typesresponse = response.read().decode()
     conn.close()
     return QiType.fromString(typesresponse)        
示例#6
0
    def getTypes(self):
        conn = http.HTTPConnection(self.url)

        conn.request("GET", self.__typesBase, headers=self.__qi_headers())
        response = conn.getresponse()

        if response.status != 200:
            conn.close()
            raise QiError("Failed to get QiTypes {status}:{reason}".format(
                status=response.status, reason=response.reason))
        typesresponse = response.read().decode()
        conn.close()
        typeslist = json.loads(typesresponse)
        returnlist = []
        for typedict in typeslist:
            returnlist.append(QiType.fromDictionary(typedict))

        return returnlist
示例#7
0
 def getTypes(self):
     conn = http.HTTPConnection(self.url)
     
     conn.request("GET", self.__typesBase, headers = self.__qi_headers())
     response = conn.getresponse()
     
     if response.status != 200:            
         conn.close()
         raise QiError("Failed to get QiTypes {status}:{reason}".
                       format(status = response.status, reason = response.reason))
     typesresponse = response.read().decode()
     conn.close()
     typeslist = json.loads(typesresponse)
     returnlist = []
     for typedict in typeslist:
         returnlist.append(QiType.fromDictionary(typedict))
     
     return returnlist
示例#8
0
    def getStreamType(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) + "/Type", 
            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))

        type = QiType.fromJson(json.loads(response.content))
        response.close()
        return type
示例#9
0
    def getTypes(self, namespace_id, skip=0, count=100):
        """Retrieves a list of types associated with the specified 'namespace_id' under the current tenant"""
        if namespace_id is None:
            raise TypeError

        response = requests.get(
            self.__url + self.__getTypesPath.format(tenant_id=self.__tenant, namespace_id=namespace_id, 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 QiTypes. {status}:{reason}".
                          format(status=response.status_code, reason=response.text))

        types = json.loads(response.content)
        results = []
        for t in types:
            results.append(QiType.fromJson(t))
        response.close()
        return results
示例#10
0
    def getType(self, namespace_id, type_id):
        """Retrieves the type specified by 'type_id' from Qi Service"""
        if namespace_id is None:
            raise TypeError
        if type_id is None:
            raise TypeError

        response = requests.get(
            self.__url + self.__typesPath.format(tenant_id=self.__tenant, namespace_id=namespace_id, type_id=type_id),
            headers=self.__qiHeaders())

        if response.status_code == 200:
            print("Succeeded in getting type")
        else:
            response.close()
            raise QiError("Failed to get QiType, {type_id}. {status}:{reason}".
                          format(type_id=type_id, status=response.status_code, reason=response.text))

        type = QiType.fromJson(json.loads(response.content))
        response.close()
        return type
示例#11
0
    def createType(self, namespace_id, type):
        """Tells Qi Service to create a type based on local 'type' object"""
        if namespace_id is None:
            raise TypeError
        if type is None or not isinstance(type, QiType):
            raise TypeError

        response = requests.post(
            self.__url + self.__typesPath.format(tenant_id=self.__tenant, namespace_id=namespace_id),
            data=type.toJsonString(), headers=self.__qiHeaders())

        if response.status_code == 200 or response.status_code == 201:
            print("Succeeded in creating type")
        else:
            response.close()
            raise QiError(
                "Failed to create type, {type_id}. {status}:{reason}".format(type_id=type.Id, status=response.status_code, reason=response.text))

        type = QiType.fromJson(json.loads(response.content))
        response.close()
        return type