Skip to content

rs_server_common/stac_sortables.md

<< Back to index

Sortables extension for RS-Server.

RSSortablesClient

Bases: BaseSortablesClient

Sortables exposed by RS-Server.

Source code in docs/rs-server/services/common/rs_server_common/stac_sortables.py
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
class RSSortablesClient(BaseSortablesClient):
    """Sortables exposed by RS-Server."""

    SCHEMA_URL = "https://json-schema.org/draft/2020-12/schema"
    SCHEMA_TITLE = "Sortables"
    SORTABLES_BASE_URL = "https://example.org"

    COMMON_PROPERTIES = {
        "id": {
            "title": "Identifier",
            "type": "string",
        },
        "file:size": {
            "title": "File size",
            "type": "number",
        },
        "type": {
            "title": "Type",
            "type": "string",
        },
        "eviction_datetime": {
            "title": "Eviction datetime",
            "type": "string",
            "format": "date-time",
        },
        "created": {
            "title": "Created",
            "type": "string",
            "format": "date-time",
        },
        "start_datetime": {
            "title": "Start datetime",
            "type": "string",
            "format": "date-time",
        },
        "end_datetime": {
            "title": "End datetime",
            "type": "string",
            "format": "date-time",
        },
    }

    PROPERTIES = {
        "cadip": {
            "id": {
                "title": "Identifier",
                "type": "string",
            },
            "datetime": {
                "title": "Datetime",
                "type": "string",
                "format": "date-time",
            },
            "published": {
                "title": "Published",
                "type": "string",
                "format": "date-time",
            },
        },
        "auxip": {
            **COMMON_PROPERTIES,
        },
        "prip": {
            **COMMON_PROPERTIES,
            "published": {
                "title": "Published",
                "type": "string",
                "format": "date-time",
            },
        },
    }

    def __init__(self, router_prefix: str):
        self.router_prefix = router_prefix.strip("/")

    def _build_schema(self, path: str) -> dict[str, Any]:
        """Build a Sortables JSON Schema."""
        return {
            "$id": f"{self.SORTABLES_BASE_URL}/{path}",
            "$schema": self.SCHEMA_URL,
            "type": "object",
            "title": self.SCHEMA_TITLE,
            "properties": self.PROPERTIES.get(self.router_prefix, {}),
        }

    # pylint: disable = unused-argument
    def get_sortables(
        self,
        request=None,
        **kwargs: Any,
    ) -> dict[str, Any]:
        """Return sortables for the /search endpoint."""
        return self._build_schema(
            f"{self.router_prefix}/sortables",
        )

    # pylint: disable = unused-argument
    def get_collection_sortables(
        self,
        collection_id: str,
        request=None,
        **kwargs: Any,
    ) -> dict[str, Any]:
        """Return sortables for the /collections/{collection_id}/items endpoint."""
        return self._build_schema(
            f"{self.router_prefix}/collections/{collection_id}/sortables",
        )

get_collection_sortables(collection_id, request=None, **kwargs)

Return sortables for the /collections/{collection_id}/items endpoint.

Source code in docs/rs-server/services/common/rs_server_common/stac_sortables.py
119
120
121
122
123
124
125
126
127
128
def get_collection_sortables(
    self,
    collection_id: str,
    request=None,
    **kwargs: Any,
) -> dict[str, Any]:
    """Return sortables for the /collections/{collection_id}/items endpoint."""
    return self._build_schema(
        f"{self.router_prefix}/collections/{collection_id}/sortables",
    )

get_sortables(request=None, **kwargs)

Return sortables for the /search endpoint.

Source code in docs/rs-server/services/common/rs_server_common/stac_sortables.py
108
109
110
111
112
113
114
115
116
def get_sortables(
    self,
    request=None,
    **kwargs: Any,
) -> dict[str, Any]:
    """Return sortables for the /search endpoint."""
    return self._build_schema(
        f"{self.router_prefix}/sortables",
    )