redvox.tests.cloud.cloud_test_utils API documentation

# Module `redvox.tests.cloud.cloud_test_utils`

Expand source code

    import os
    from typing import Optional, Callable, TypeVar, Union

    from redvox.cloud.client import CloudClient

    T = TypeVar('T')

    def throwing_getenv(key: str,
                        default: Optional[str] = None,
                        transform: Optional[Callable[[str], T]] = None) -> Union[str, T]:
        res: Optional[str] = os.getenv(key, default)

        if res:
            return transform(res) if transform else res

        raise EnvironmentError(f"{key} is not in the environment and a default was not provided")

    class CloudEnvKeys:
        USERNAME: str = "REDVOX_SDK_CLOUD_USER"
        PASSWORD: str = "REDVOX_SDK_CLOUD_PASS"
        SECRET: str = "REDVOX_SDK_CLOUD_SECRET"
        PROTOCOL: str = "REDVOX_SDK_CLOUD_PROTOCOL"
        HOST: str = "REDVOX_SDK_CLOUD_HOST"
        PORT: str = "REDVOX_SDK_CLOUD_PORT"

    def cloud_credentials_provided() -> bool:
        try:
            throwing_getenv(CloudEnvKeys.USERNAME)
            throwing_getenv(CloudEnvKeys.PASSWORD)
            throwing_getenv(CloudEnvKeys.SECRET)
            return True
        except EnvironmentError:
            return False

    def client_from_credentials() -> CloudClient:
        return CloudClient(
            throwing_getenv(CloudEnvKeys.USERNAME),
            throwing_getenv(CloudEnvKeys.PASSWORD),
            ApiConfig(
                throwing_getenv(CloudEnvKeys.PROTOCOL, "https"),
                throwing_getenv(CloudEnvKeys.HOST, "redvox.io"),
                throwing_getenv(CloudEnvKeys.PORT, "8080", int),
            ),
            throwing_getenv(CloudEnvKeys.SECRET)
        )

    def cloud_env_template() -> str:
        return f"{CloudEnvKeys.USERNAME}= {CloudEnvKeys.PASSWORD}= {CloudEnvKeys.SECRET}= {CloudEnvKeys.PROTOCOL}= " \
               f"{CloudEnvKeys.HOST}= {CloudEnvKeys.PORT}="

## Functions

`def client_from_credentials() ‑> CloudClient`
  Expand source code

      def client_from_credentials() -> CloudClient:
          return CloudClient(
              throwing_getenv(CloudEnvKeys.USERNAME),
              throwing_getenv(CloudEnvKeys.PASSWORD),
              ApiConfig(
                  throwing_getenv(CloudEnvKeys.PROTOCOL, "https"),
                  throwing_getenv(CloudEnvKeys.HOST, "redvox.io"),
                  throwing_getenv(CloudEnvKeys.PORT, "8080", int),
              ),
              throwing_getenv(CloudEnvKeys.SECRET)
          )

`def cloud_credentials_provided() ‑> bool`
  Expand source code

      def cloud_credentials_provided() -> bool:
          try:
              throwing_getenv(CloudEnvKeys.USERNAME)
              throwing_getenv(CloudEnvKeys.PASSWORD)
              throwing_getenv(CloudEnvKeys.SECRET)
              return True
          except EnvironmentError:
              return False

`def cloud_env_template() ‑> str`
  Expand source code

      def cloud_env_template() -> str:
          return f"{CloudEnvKeys.USERNAME}= {CloudEnvKeys.PASSWORD}= {CloudEnvKeys.SECRET}= {CloudEnvKeys.PROTOCOL}= " \
                 f"{CloudEnvKeys.HOST}= {CloudEnvKeys.PORT}="

`def throwing_getenv(key: str, default: Optional[str] = None, transform: Optional[Callable[[str], ~T]] = None) ‑> Union[str, ~T]`
  Expand source code

      def throwing_getenv(key: str,
                          default: Optional[str] = None,
                          transform: Optional[Callable[[str], T]] = None) -> Union[str, T]:
          res: Optional[str] = os.getenv(key, default)

          if res:
              return transform(res) if transform else res

          raise EnvironmentError(f"{key} is not in the environment and a default was not provided")

## Classes

`class CloudEnvKeys`
  Expand source code

      class CloudEnvKeys:
          USERNAME: str = "REDVOX_SDK_CLOUD_USER"
          PASSWORD: str = "REDVOX_SDK_CLOUD_PASS"
          SECRET: str = "REDVOX_SDK_CLOUD_SECRET"
          PROTOCOL: str = "REDVOX_SDK_CLOUD_PROTOCOL"
          HOST: str = "REDVOX_SDK_CLOUD_HOST"
          PORT: str = "REDVOX_SDK_CLOUD_PORT"

  ### Class variables

  `var HOST : str`
  `var PASSWORD : str`
  `var PORT : str`
  `var PROTOCOL : str`
  `var SECRET : str`
  `var USERNAME : str`