spdx_tools.spdx.validation.external_document_ref_validator
1# SPDX-FileCopyrightText: 2022 spdx contributors 2# 3# SPDX-License-Identifier: Apache-2.0 4 5from beartype.typing import List 6 7from spdx_tools.spdx.model import ExternalDocumentRef 8from spdx_tools.spdx.validation.checksum_validator import validate_checksum 9from spdx_tools.spdx.validation.spdx_id_validators import is_valid_external_doc_ref_id 10from spdx_tools.spdx.validation.uri_validators import validate_uri 11from spdx_tools.spdx.validation.validation_message import SpdxElementType, ValidationContext, ValidationMessage 12 13 14def validate_external_document_refs( 15 external_document_refs: List[ExternalDocumentRef], parent_id: str, spdx_version: str 16) -> List[ValidationMessage]: 17 validation_messages = [] 18 for external_document_ref in external_document_refs: 19 validation_messages.extend(validate_external_document_ref(external_document_ref, parent_id, spdx_version)) 20 21 return validation_messages 22 23 24def validate_external_document_ref( 25 external_document_ref: ExternalDocumentRef, parent_id: str, spdx_version: str 26) -> List[ValidationMessage]: 27 validation_messages = [] 28 context = ValidationContext( 29 parent_id=parent_id, element_type=SpdxElementType.EXTERNAL_DOCUMENT_REF, full_element=external_document_ref 30 ) 31 32 if not is_valid_external_doc_ref_id(external_document_ref.document_ref_id): 33 validation_messages.append( 34 ValidationMessage( 35 f'document_ref_id must only contain letters, numbers, ".", "-" and "+" and must begin with ' 36 f'"DocumentRef-", but is: {external_document_ref.document_ref_id}', 37 context, 38 ) 39 ) 40 41 for message in validate_uri(external_document_ref.document_uri): 42 validation_messages.append(ValidationMessage("document_uri " + message, context)) 43 44 validation_messages.extend(validate_checksum(external_document_ref.checksum, parent_id, spdx_version)) 45 46 return validation_messages
def
validate_external_document_refs( external_document_refs: list[spdx_tools.spdx.model.external_document_ref.ExternalDocumentRef], parent_id: str, spdx_version: str) -> list[spdx_tools.spdx.validation.validation_message.ValidationMessage]:
15def validate_external_document_refs( 16 external_document_refs: List[ExternalDocumentRef], parent_id: str, spdx_version: str 17) -> List[ValidationMessage]: 18 validation_messages = [] 19 for external_document_ref in external_document_refs: 20 validation_messages.extend(validate_external_document_ref(external_document_ref, parent_id, spdx_version)) 21 22 return validation_messages
def
validate_external_document_ref( external_document_ref: spdx_tools.spdx.model.external_document_ref.ExternalDocumentRef, parent_id: str, spdx_version: str) -> list[spdx_tools.spdx.validation.validation_message.ValidationMessage]:
25def validate_external_document_ref( 26 external_document_ref: ExternalDocumentRef, parent_id: str, spdx_version: str 27) -> List[ValidationMessage]: 28 validation_messages = [] 29 context = ValidationContext( 30 parent_id=parent_id, element_type=SpdxElementType.EXTERNAL_DOCUMENT_REF, full_element=external_document_ref 31 ) 32 33 if not is_valid_external_doc_ref_id(external_document_ref.document_ref_id): 34 validation_messages.append( 35 ValidationMessage( 36 f'document_ref_id must only contain letters, numbers, ".", "-" and "+" and must begin with ' 37 f'"DocumentRef-", but is: {external_document_ref.document_ref_id}', 38 context, 39 ) 40 ) 41 42 for message in validate_uri(external_document_ref.document_uri): 43 validation_messages.append(ValidationMessage("document_uri " + message, context)) 44 45 validation_messages.extend(validate_checksum(external_document_ref.checksum, parent_id, spdx_version)) 46 47 return validation_messages