Skip to content

service

Classes:

  • BaseService

    Base service which is inheritated by other services.

Classes

BaseService

BaseService(
    support_bbox: bool = False,
    support_limit: bool = False,
    support_offset: bool = False,
    support_convert: bool = False,
    support_booking: bool = False,
)

Base service which is inheritated by other services.

Warning

Do not use this directly.

The following attributes are used to define which paramets are supported by a service.

Attributes:

Examples:

Custom service base in BaseService. For this the two schemas MyHutSource and MyInfoHutConvert need to be defined as well.

from typing import Any
from hut_services.core.schema.geo import BBox
from hut_services import BaseService, HutSchema

# TODO: define this somewhere:
from my_service.schema import MyHutSource, MyInfoHutConvert

class MyService(BaseService[MyHutSource]):
    def __init__(self, request_url: str = "http://hut.info"):
        super().__init__(support_bbox=True,
                         support_limit=True,
                         support_offset=True,
                         support_convert=True)
        self.request_url = request_url

    def get_huts_from_source(
        self, bbox: BBox | None = None, limit: int = 1,
        offset: int = 0, **kwargs: Any
    ) -> list[MyHutSource]:
        src_huts = httpx.get(self.request_url)
        return [MyHutSource(**h) for h in src_huts]

    def convert(self, src: MyHutSource) -> HutSchema:
        return MyInfoHutConvert(source=src.source_data).get_hut()

Classes:

Methods:

Attributes:

Attributes

support_bbox class-attribute instance-attribute
support_bbox: bool = support_bbox
support_limit class-attribute instance-attribute
support_limit: bool = support_limit
support_offset class-attribute instance-attribute
support_offset: bool = support_offset
support_convert class-attribute instance-attribute
support_convert: bool = support_convert
support_booking class-attribute instance-attribute
support_booking: bool = support_booking

Classes

MethodNotImplementedError
MethodNotImplementedError(obj: BaseService, method: str)

Method is not implemented exception.

Parameters:

  • obj
    (BaseService) –

    Service object (e.g. MyService).

  • method
    (str) –

    Method which is not implemented.

Functions

Functions

clear_all_cache classmethod
clear_all_cache() -> None

Clears the cache of all services!

get_huts_from_source
get_huts_from_source(
    bbox: BBox | None = None,
    limit: int = 1,
    offset: int = 0,
    **kwargs: Any,
) -> list[THutSourceSchema]

Get all huts from source.

Parameters:

  • bbox
    (BBox | None, default: None ) –

    Boundary box.

  • limit
    (int, default: 1 ) –

    Limit (how many entries to retrieve).

  • offset
    (int, default: 0 ) –

    Offset of the request.

Returns:

  • list[THutSourceSchema]

    Huts from source.

convert
convert(
    src: Mapping | Any, include_photos: bool = True
) -> HutSchema

Convert one hut from source to HutSchema.

Parameters:

  • src
    (Mapping | Any) –

    Source schema.

  • include_photos
    (bool, default: True ) –

    Include photos, some service need additonal requests to get the photos.

Returns:

get_huts
get_huts(
    bbox: BBox | None = None,
    limit: int = 1,
    offset: int = 0,
    include_photos: bool = True,
    **kwargs: Any,
) -> list[HutSchema]

Get all huts form source and converts them. Calls get_huts_from_source() and convert().

Returns:

  • list[HutSchema]

    Converted huts from source.

get_bookings
get_bookings(
    date: datetime | date | Literal["now"] | None = None,
    days: int | None = None,
    source_ids: list[int | str] | None = None,
    lang: str = "de",
    request_interval: float | None = None,
) -> dict[int | str, HutBookingsSchema]

Get bookings for a list of huts.

Parameters:

  • date
    (datetime | date | Literal['now'] | None, default: None ) –

    Start daye for the bookings

  • days
    (int | None, default: None ) –

    Duration in days

  • source_ids
    (list[int | str] | None, default: None ) –

    A list of ids to return (source id, not the hut id), if set to None all are returned

  • lang
    (str, default: 'de' ) –

    Language for the response

  • request_interval
    (float | None, default: None ) –

    Interval between requests (if each huts needs a request)

Returns:

  • dict[int | str, HutBookingsSchema]

    A dictionary with the bookings (key = source id).