Exemplo n.º 1
0
    def _process_packagenode(self):
        logging.info("Processing package node")

        data_nodes = []
        for member in SpdxAnalyzer.__membersof(self.doc.package):
            value = self.doc.package.__getattribute__(member)
            if member == "license_declared":
                data_nodes.append(
                    InfoNode.DataNode(type=member, data=value.full_name))
                continue
            data_nodes.append(
                InfoNode.DataNode(type=member,
                                  data=SpdxAnalyzer.__stringify(value)))

        info_node = InfoNode(type="metadata", dataNodes=data_nodes)

        package_request = PackageRequest()

        package_node = self.cserv.GetPackageNode(package_request)

        info_nodes = []
        info_nodes.append(
            InfoNodeMessage(uid=package_node.uid,
                            token=self.token,
                            infonode=info_node))

        info_iterator = _generate_iterator(info_nodes)

        self.aserv.SendInfoNodes(info_iterator)
Exemplo n.º 2
0
    def _process_filenodes(self):

        stream_resp = self.aserv.GetSourceFileNodes(DummyRequest())

        for node in stream_resp:
            logging.info("Analyze node {}".format(node.path))
            filtered_files = list(filter(
                lambda f: node.path.endswith(f.name), self.doc.files))
            if not filtered_files:
                logging.warn(
                    "File {} not found in SPDX document".format(node.path))
                continue
            spdx_doc_file_info = filtered_files[0]

            info_nodes = []

            if isinstance(spdx_doc_file_info.conc_lics, License):
                data_nodes = []
                logging.info("Concluded license {}".format(
                    spdx_doc_file_info.conc_lics))
                data_nodes.append(
                    InfoNode.DataNode(
                        type="spdxIdentifier",
                        data=spdx_doc_file_info.conc_lics.identifier
                    )
                )
                data_nodes.append(
                    InfoNode.DataNode(
                        type="name",
                        data=spdx_doc_file_info.conc_lics.full_name
                    )
                )

                info_nodes.append(
                    InfoNode(
                        type="license",
                        dataNodes=data_nodes
                    )
                )

            if isinstance(spdx_doc_file_info.copyright, (str, SPDXNone, NoAssert)):
                data_nodes = []
                logging.info("Copyright text: {}".format(
                    spdx_doc_file_info.copyright))
                data_nodes.append(
                    InfoNode.DataNode(
                        type="text",
                        data=spdx_doc_file_info.copyright
                    )
                )

                info_nodes.append(
                    InfoNode(
                        type="copyright",
                        dataNodes=data_nodes
                    )
                )

            if info_nodes:
                self._send_infonodes(node.fileData.uid, info_nodes)
Exemplo n.º 3
0
    def _process_packagenode(self):
        package_name = self.doc.package.name
        logging.info("Processing package node {}".format(package_name))

        data_nodes = []
        for member in SpdxAnalyzer.__membersof(self.doc.package):
            value = self.doc.package.__getattribute__(member)
            if member == "license_declared":
                data_nodes.append(InfoNode.DataNode(
                    type=member,
                    data=value.full_name
                ))
                continue
            data_nodes.append(InfoNode.DataNode(
                type=member,
                data=SpdxAnalyzer.__stringify(value)
            ))

        package_request = PackageNode(
            name=package_name
        )

        package_stream = self.cserv.GetPackageNode(package_request)

        for package_node in package_stream:
            info_nodes = []
            info_nodes.append(InfoNode(
                type="metadata",
                dataNodes=data_nodes))

            self._send_infonodes(package_node.uid, info_nodes)
Exemplo n.º 4
0
    def _process_filenodes(self):
        const_type = "sourcecode"

        query_node = FileNode(type=const_type)

        stream_resp = self.cserv.GetFileNode(query_node)

        for node in stream_resp:
            logging.info("Analyze node {}".format(node.path))
            filtered_files = list(
                filter(lambda f: node.path.endswith(f.name), self.doc.files))
            if not filtered_files:
                logging.warn("File {} not found in SPDX document".format(
                    node.path))
                continue
            spdx_doc_file_info = filtered_files[0]
            if not isinstance(spdx_doc_file_info.conc_lics, License):
                continue

            data_nodes = []
            logging.info("Concluded license {}".format(
                spdx_doc_file_info.conc_lics))
            data_nodes.append(
                InfoNode.DataNode(
                    type="spdxIdentifier",
                    data=spdx_doc_file_info.conc_lics.identifier))
            data_nodes.append(
                InfoNode.DataNode(type="name",
                                  data=spdx_doc_file_info.conc_lics.full_name))

            info_node = InfoNode(type="license", dataNodes=data_nodes)

            info_nodes = []
            info_nodes.append(
                InfoNodeMessage(uid=node.uid,
                                token=self.token,
                                infonode=info_node))

            info_iterator = _generate_iterator(info_nodes)

            self.aserv.SendInfoNodes(info_iterator)