Source code for swh.graphql.resolvers.content_data
from typing import Optional
from swh.graphql.server import get_config
from .base_node import BaseNode
from .content import BaseContentNode
[docs]
class ContentDataNode(BaseNode):
    obj: BaseContentNode
    @property
    def url(self) -> str:
        content_sha1 = self.obj.hashes["sha1"]
        archive_url = "https://archive.softwareheritage.org/api/1/"
        return f"{archive_url}content/sha1:{content_sha1}/raw/"
    @property
    def raw(self) -> Optional[bytes]:
        # Return content data as a binary string
        if self.obj.length <= get_config().get("max_raw_content_size", 10000):
            content_sha1 = self.obj.hashes["sha1"]
            return self.archive.get_content_data(content_sha1=content_sha1)
        return None
    def _get_node_data(self):
        # No new data to fetch: everything is either available
        # or can be computed from the parent (self.obj)
        # raw data is fetched from a property to avoid pre-loading
        return {}