Module livechat.agent.rtm.base

Agent RTM client implementation.

Expand source code
''' Agent RTM client implementation. '''

# pylint: disable=W0613,W0622,C0103,R0913,R0903,W0107,W0221
from __future__ import annotations

from typing import Callable, Union

from livechat.agent.rtm.api.v33 import AgentRtmV33
from livechat.agent.rtm.api.v34 import AgentRtmV34
from livechat.agent.rtm.api.v35 import AgentRtmV35
from livechat.agent.rtm.api.v36 import AgentRtmV36
from livechat.config import CONFIG

stable_version = CONFIG.get('stable')
api_url = CONFIG.get('url')


class AgentRTM:
    ''' Main class that gets specific client. '''
    @staticmethod
    def get_client(
        version: str = stable_version,
        base_url: str = api_url,
        header: Union[list, dict, Callable, None] = None,
    ) -> Union[AgentRtmV33, AgentRtmV34, AgentRtmV35, AgentRtmV36]:
        ''' Returns client for specific Agent RTM version.

            Args:
                version (str): API's version. Defaults to the stable version of API.
                base_url (str): API's base url. Defaults to API's production URL.
                header (Union[list, dict, Callable, None]): Custom header for websocket handshake.
                        If the parameter is a callable object, it is called just before the connection attempt.

            Returns:
                API client object for specified version.

            Raises:
                ValueError: If the specified version does not exist.
        '''
        client = {
            '3.3': AgentRtmV33,
            '3.4': AgentRtmV34,
            '3.5': AgentRtmV35,
            '3.6': AgentRtmV36,
        }.get(version)
        if not client:
            raise ValueError('Provided version does not exist.')
        return client(base_url, header)

Classes

class AgentRTM

Main class that gets specific client.

Expand source code
class AgentRTM:
    ''' Main class that gets specific client. '''
    @staticmethod
    def get_client(
        version: str = stable_version,
        base_url: str = api_url,
        header: Union[list, dict, Callable, None] = None,
    ) -> Union[AgentRtmV33, AgentRtmV34, AgentRtmV35, AgentRtmV36]:
        ''' Returns client for specific Agent RTM version.

            Args:
                version (str): API's version. Defaults to the stable version of API.
                base_url (str): API's base url. Defaults to API's production URL.
                header (Union[list, dict, Callable, None]): Custom header for websocket handshake.
                        If the parameter is a callable object, it is called just before the connection attempt.

            Returns:
                API client object for specified version.

            Raises:
                ValueError: If the specified version does not exist.
        '''
        client = {
            '3.3': AgentRtmV33,
            '3.4': AgentRtmV34,
            '3.5': AgentRtmV35,
            '3.6': AgentRtmV36,
        }.get(version)
        if not client:
            raise ValueError('Provided version does not exist.')
        return client(base_url, header)

Static methods

def get_client(version: str = '3.5', base_url: str = 'api.livechatinc.com', header: Union[list, dict, Callable, None] = None) ‑> Union[AgentRtmV33AgentRtmV34AgentRtmV35AgentRtmV36]

Returns client for specific Agent RTM version.

Args

version : str
API's version. Defaults to the stable version of API.
base_url : str
API's base url. Defaults to API's production URL.
header : Union[list, dict, Callable, None]
Custom header for websocket handshake. If the parameter is a callable object, it is called just before the connection attempt.

Returns

API client object for specified version.

Raises

ValueError
If the specified version does not exist.
Expand source code
@staticmethod
def get_client(
    version: str = stable_version,
    base_url: str = api_url,
    header: Union[list, dict, Callable, None] = None,
) -> Union[AgentRtmV33, AgentRtmV34, AgentRtmV35, AgentRtmV36]:
    ''' Returns client for specific Agent RTM version.

        Args:
            version (str): API's version. Defaults to the stable version of API.
            base_url (str): API's base url. Defaults to API's production URL.
            header (Union[list, dict, Callable, None]): Custom header for websocket handshake.
                    If the parameter is a callable object, it is called just before the connection attempt.

        Returns:
            API client object for specified version.

        Raises:
            ValueError: If the specified version does not exist.
    '''
    client = {
        '3.3': AgentRtmV33,
        '3.4': AgentRtmV34,
        '3.5': AgentRtmV35,
        '3.6': AgentRtmV36,
    }.get(version)
    if not client:
        raise ValueError('Provided version does not exist.')
    return client(base_url, header)