Source code for luna_api.crutches_on_wheels.utils.rid
"""
Module realizes  getting and checking request id
Attributes:
    TIME_ZONE_DELTA: time zone of machine
"""
import os
import time
import uuid
from contextvars import ContextVar
from .regexps import REQUEST_ID_REGEXP
# var contains actual requst id
requestIdCtx = ContextVar("requestId", default=None)  # pylint: disable-msg=C0103
TIME_ZONE_DELTA = time.timezone  #: correction for getting timestamp in utc
[docs]def getLogTimestamp(timeIsLocal: bool) -> int:
    """
    Generate timestamp for logs
    Args:
        timeIsLocal: timestamp generate in localtime or not
    Returns:
        timestamp with
    """
    if timeIsLocal:
        timestamp = int(time.time() - TIME_ZONE_DELTA)
    else:
        timestamp = int(time.time())
    return timestamp 
def _getDefaultRequestId() -> str:
    """
    Get default request id for record which is initiated of the service.
    Format '{ts_start_service},00000000-0000-4000-a000-{pid}'
    Returns:
        request id
    """
    timestamp = getLogTimestamp(timeIsLocal=True)
    return f"{timestamp:08d},00000000-0000-4000-a000-{os.getpid():012d}"
DEFAULT_REQUEST_ID = _getDefaultRequestId()  #: request id for record which is initiated of the service
[docs]def generateRequestId(timeIsLocal: bool) -> str:
    """
    Generate correct request id.
    Args:
        timeIsLocal: timestamp generate in localtime or not
    Returns:
        standard request id string.
    """
    requestId = f"{getLogTimestamp(timeIsLocal)},{uuid.uuid4()}"
    return requestId 
[docs]def checkRequestId(requestId: str) -> bool:
    """
    Validate request id str
    Args:
        requestId: str for checking
    Returns:
        True if requestId match with REQUEST_ID_REGEXP otherwise False
    """
    match = REQUEST_ID_REGEXP.match(requestId)
    return match is not None