Module livechat.customer.rtm.base

Customer RTM client implementation.

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

# pylint: disable=C0103,R0903,R0913,W0107,W0231,W0613,W0622

from typing import Callable, Union

from livechat.config import CONFIG
from livechat.customer.rtm.api.v33 import CustomerRtmV33
from livechat.customer.rtm.api.v34 import CustomerRtmV34
from livechat.customer.rtm.api.v35 import CustomerRtmV35
from livechat.customer.rtm.api.v36 import CustomerRtmV36

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


class CustomerRTM:
    ''' Main class that gets specific client. '''
    @staticmethod
    def get_client(
        version: str = stable_version,
        base_url: str = api_url,
        license_id: int = None,
        organization_id: str = None,
        header: Union[list, dict, Callable, None] = None,
    ) -> Union[CustomerRtmV33, CustomerRtmV34, CustomerRtmV35, CustomerRtmV36]:
        ''' Returns client for specific Customer 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.
                license_id (int): License ID. Required to use for API version <= 3.3.
                organization_id (str): Organization ID, replaced license ID in v3.4.
                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': CustomerRtmV33,
            '3.4': CustomerRtmV34,
            '3.5': CustomerRtmV35,
            '3.6': CustomerRtmV36,
        }.get(version)
        client_kwargs = {
            '3.3': {
                'license_id': license_id,
                'base_url': base_url
            },
            '3.4': {
                'organization_id': organization_id,
                'base_url': base_url
            },
            '3.5': {
                'organization_id': organization_id,
                'base_url': base_url
            },
            '3.6': {
                'organization_id': organization_id,
                'base_url': base_url
            },
        }.get(version)
        if client:
            return client(**client_kwargs, header=header)
        raise ValueError('Provided version does not exist.')

Classes

class CustomerRTM

Main class that gets specific client.

Expand source code
class CustomerRTM:
    ''' Main class that gets specific client. '''
    @staticmethod
    def get_client(
        version: str = stable_version,
        base_url: str = api_url,
        license_id: int = None,
        organization_id: str = None,
        header: Union[list, dict, Callable, None] = None,
    ) -> Union[CustomerRtmV33, CustomerRtmV34, CustomerRtmV35, CustomerRtmV36]:
        ''' Returns client for specific Customer 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.
                license_id (int): License ID. Required to use for API version <= 3.3.
                organization_id (str): Organization ID, replaced license ID in v3.4.
                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': CustomerRtmV33,
            '3.4': CustomerRtmV34,
            '3.5': CustomerRtmV35,
            '3.6': CustomerRtmV36,
        }.get(version)
        client_kwargs = {
            '3.3': {
                'license_id': license_id,
                'base_url': base_url
            },
            '3.4': {
                'organization_id': organization_id,
                'base_url': base_url
            },
            '3.5': {
                'organization_id': organization_id,
                'base_url': base_url
            },
            '3.6': {
                'organization_id': organization_id,
                'base_url': base_url
            },
        }.get(version)
        if client:
            return client(**client_kwargs, header=header)
        raise ValueError('Provided version does not exist.')

Static methods

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

Returns client for specific Customer 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.
license_id : int
License ID. Required to use for API version <= 3.3.
organization_id : str
Organization ID, replaced license ID in v3.4.
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,
    license_id: int = None,
    organization_id: str = None,
    header: Union[list, dict, Callable, None] = None,
) -> Union[CustomerRtmV33, CustomerRtmV34, CustomerRtmV35, CustomerRtmV36]:
    ''' Returns client for specific Customer 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.
            license_id (int): License ID. Required to use for API version <= 3.3.
            organization_id (str): Organization ID, replaced license ID in v3.4.
            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': CustomerRtmV33,
        '3.4': CustomerRtmV34,
        '3.5': CustomerRtmV35,
        '3.6': CustomerRtmV36,
    }.get(version)
    client_kwargs = {
        '3.3': {
            'license_id': license_id,
            'base_url': base_url
        },
        '3.4': {
            'organization_id': organization_id,
            'base_url': base_url
        },
        '3.5': {
            'organization_id': organization_id,
            'base_url': base_url
        },
        '3.6': {
            'organization_id': organization_id,
            'base_url': base_url
        },
    }.get(version)
    if client:
        return client(**client_kwargs, header=header)
    raise ValueError('Provided version does not exist.')