diff --git a/.fernignore b/.fernignore index 31954d1..0f8475a 100644 --- a/.fernignore +++ b/.fernignore @@ -3,6 +3,7 @@ src/murf/client.py src/murf/dubbing_client.py src/murf/utils.py +src/murf/region.py LICENSE README.md diff --git a/src/murf/client.py b/src/murf/client.py index 0f0a1ab..ac52c57 100644 --- a/src/murf/client.py +++ b/src/murf/client.py @@ -4,7 +4,7 @@ import os import httpx from .version import __version__ - +from .region import MurfRegion, region_environment_map class Murf(BaseClient): """ Use this class to access the different functions within the SDK. You can instantiate any number of clients with different configuration that will propagate to these functions. @@ -19,7 +19,8 @@ class Murf(BaseClient): Defaults to MurfEnvironment.DEFAULT - + region : MurfRegion + The region to use for requests from the client. Defaults to "default". api_key : typing.Optional[str] timeout : typing.Optional[float] @@ -43,7 +44,8 @@ class Murf(BaseClient): def __init__( self, *, - environment: MurfEnvironment = MurfEnvironment.DEFAULT, + environment: typing.Optional[MurfEnvironment] = None, + region: MurfRegion = MurfRegion.DEFAULT, api_key: typing.Optional[str] = os.getenv("MURF_API_KEY"), timeout: typing.Optional[float] = 60, follow_redirects: typing.Optional[bool] = True, @@ -53,6 +55,8 @@ def __init__( _defaulted_timeout = timeout if timeout is not None else 60 if httpx_client is None else None httpx_client=httpx_client if httpx_client is not None else httpx.Client(params=default_params, timeout=_defaulted_timeout, follow_redirects=follow_redirects) if follow_redirects is not None else httpx.Client(params=default_params, timeout=_defaulted_timeout) + environment = environment if environment is not None else region_environment_map.get(region, MurfEnvironment.DEFAULT) + super().__init__( environment=environment, api_key=api_key, @@ -77,7 +81,8 @@ class AsyncMurf(AsyncBaseClient): Defaults to MurfEnvironment.DEFAULT - + region : MurfRegion + The region to use for requests from the client. Defaults to "default". api_key : typing.Optional[str] timeout : typing.Optional[float] @@ -101,7 +106,8 @@ class AsyncMurf(AsyncBaseClient): def __init__( self, *, - environment: MurfEnvironment = MurfEnvironment.DEFAULT, + environment: typing.Optional[MurfEnvironment] = None, + region: MurfRegion = MurfRegion.DEFAULT, api_key: typing.Optional[str] = os.getenv("MURF_API_KEY"), timeout: typing.Optional[float] = 60, follow_redirects: typing.Optional[bool] = True, @@ -110,7 +116,9 @@ def __init__( default_params = {'origin': f'python_sdk_{__version__}'} _defaulted_timeout = timeout if timeout is not None else 60 if httpx_client is None else None httpx_client=httpx_client if httpx_client is not None else httpx.AsyncClient(params=default_params, timeout=_defaulted_timeout, follow_redirects=follow_redirects) if follow_redirects is not None else httpx.AsyncClient(params=default_params, timeout=_defaulted_timeout) - + + environment = environment if environment is not None else region_environment_map.get(region, MurfEnvironment.DEFAULT) + super().__init__( environment=environment, api_key=api_key, diff --git a/src/murf/region.py b/src/murf/region.py new file mode 100644 index 0000000..515737d --- /dev/null +++ b/src/murf/region.py @@ -0,0 +1,239 @@ +from __future__ import annotations +from .environment import MurfEnvironment +from enum import Enum + +class MurfRegion(Enum): + DEFAULT = "default" + GLOBAL = "global" + US_EAST = "us-east" + US_WEST = "us-west" + EU_CENTRAL = "eu-central" + IN = "in" + JP = "jp" + AU = "au" + KR = "kr" + ME = "me" + SA_EAST = "sa-east" + UK = "uk" + CA = "ca" + +global_environment = MurfEnvironment( + base="https://global.api.murf.ai", + production="wss://global.api.murf.ai/v1/speech", + global_router="https://global.api.murf.ai", + us_east="https://us-east.api.murf.ai", + us_west="https://us-west.api.murf.ai", + india="https://in.api.murf.ai", + canada="https://ca.api.murf.ai", + south_korea="https://kr.api.murf.ai", + uae="https://me.api.murf.ai", + japan="https://jp.api.murf.ai", + australia="https://au.api.murf.ai", + eu_central="https://eu-central.api.murf.ai", + uk="https://uk.api.murf.ai", + south_america="https://sa-east.api.murf.ai" +) + +us_east_environment = MurfEnvironment( + base="https://us-east.api.murf.ai", + production="wss://us-east.api.murf.ai/v1/speech", + global_router="https://global.api.murf.ai", + us_east="https://us-east.api.murf.ai", + us_west="https://us-west.api.murf.ai", + india="https://in.api.murf.ai", + canada="https://ca.api.murf.ai", + south_korea="https://kr.api.murf.ai", + uae="https://me.api.murf.ai", + japan="https://jp.api.murf.ai", + australia="https://au.api.murf.ai", + eu_central="https://eu-central.api.murf.ai", + uk="https://uk.api.murf.ai", + south_america="https://sa-east.api.murf.ai" +) + +us_west_environment = MurfEnvironment( + base="https://us-west.api.murf.ai", + production="wss://us-west.api.murf.ai/v1/speech", + global_router="https://global.api.murf.ai", + us_east="https://us-east.api.murf.ai", + us_west="https://us-west.api.murf.ai", + india="https://in.api.murf.ai", + canada="https://ca.api.murf.ai", + south_korea="https://kr.api.murf.ai", + uae="https://me.api.murf.ai", + japan="https://jp.api.murf.ai", + australia="https://au.api.murf.ai", + eu_central="https://eu-central.api.murf.ai", + uk="https://uk.api.murf.ai", + south_america="https://sa-east.api.murf.ai" +) + +eu_central_environment = MurfEnvironment( + base="https://eu-central.api.murf.ai", + production="wss://eu-central.api.murf.ai/v1/speech", + global_router="https://global.api.murf.ai", + us_east="https://us-east.api.murf.ai", + us_west="https://us-west.api.murf.ai", + india="https://in.api.murf.ai", + canada="https://ca.api.murf.ai", + south_korea="https://kr.api.murf.ai", + uae="https://me.api.murf.ai", + japan="https://jp.api.murf.ai", + australia="https://au.api.murf.ai", + eu_central="https://eu-central.api.murf.ai", + uk="https://uk.api.murf.ai", + south_america="https://sa-east.api.murf.ai" +) + +in_environment = MurfEnvironment( + base="https://in.api.murf.ai", + production="wss://in.api.murf.ai/v1/speech", + global_router="https://global.api.murf.ai", + us_east="https://us-east.api.murf.ai", + us_west="https://us-west.api.murf.ai", + india="https://in.api.murf.ai", + canada="https://ca.api.murf.ai", + south_korea="https://kr.api.murf.ai", + uae="https://me.api.murf.ai", + japan="https://jp.api.murf.ai", + australia="https://au.api.murf.ai", + eu_central="https://eu-central.api.murf.ai", + uk="https://uk.api.murf.ai", + south_america="https://sa-east.api.murf.ai" +) + +jp_environment = MurfEnvironment( + base="https://jp.api.murf.ai", + production="wss://jp.api.murf.ai/v1/speech", + global_router="https://global.api.murf.ai", + us_east="https://us-east.api.murf.ai", + us_west="https://us-west.api.murf.ai", + india="https://in.api.murf.ai", + canada="https://ca.api.murf.ai", + south_korea="https://kr.api.murf.ai", + uae="https://me.api.murf.ai", + japan="https://jp.api.murf.ai", + australia="https://au.api.murf.ai", + eu_central="https://eu-central.api.murf.ai", + uk="https://uk.api.murf.ai", + south_america="https://sa-east.api.murf.ai" +) + +au_environment = MurfEnvironment( + base="https://au.api.murf.ai", + production="wss://au.api.murf.ai/v1/speech", + global_router="https://global.api.murf.ai", + us_east="https://us-east.api.murf.ai", + us_west="https://us-west.api.murf.ai", + india="https://in.api.murf.ai", + canada="https://ca.api.murf.ai", + south_korea="https://kr.api.murf.ai", + uae="https://me.api.murf.ai", + japan="https://jp.api.murf.ai", + australia="https://au.api.murf.ai", + eu_central="https://eu-central.api.murf.ai", + uk="https://uk.api.murf.ai", + south_america="https://sa-east.api.murf.ai" +) + +kr_environment = MurfEnvironment( + base="https://kr.api.murf.ai", + production="wss://kr.api.murf.ai/v1/speech", + global_router="https://global.api.murf.ai", + us_east="https://us-east.api.murf.ai", + us_west="https://us-west.api.murf.ai", + india="https://in.api.murf.ai", + canada="https://ca.api.murf.ai", + south_korea="https://kr.api.murf.ai", + uae="https://me.api.murf.ai", + japan="https://jp.api.murf.ai", + australia="https://au.api.murf.ai", + eu_central="https://eu-central.api.murf.ai", + uk="https://uk.api.murf.ai", + south_america="https://sa-east.api.murf.ai" +) + +me_environment = MurfEnvironment( + base="https://me.api.murf.ai", + production="wss://me.api.murf.ai/v1/speech", + global_router="https://global.api.murf.ai", + us_east="https://us-east.api.murf.ai", + us_west="https://us-west.api.murf.ai", + india="https://in.api.murf.ai", + canada="https://ca.api.murf.ai", + south_korea="https://kr.api.murf.ai", + uae="https://me.api.murf.ai", + japan="https://jp.api.murf.ai", + australia="https://au.api.murf.ai", + eu_central="https://eu-central.api.murf.ai", + uk="https://uk.api.murf.ai", + south_america="https://sa-east.api.murf.ai" +) + +sa_east_environment = MurfEnvironment( + base="https://sa-east.api.murf.ai", + production="wss://sa-east.api.murf.ai/v1/speech", + global_router="https://global.api.murf.ai", + us_east="https://us-east.api.murf.ai", + us_west="https://us-west.api.murf.ai", + india="https://in.api.murf.ai", + canada="https://ca.api.murf.ai", + south_korea="https://kr.api.murf.ai", + uae="https://me.api.murf.ai", + japan="https://jp.api.murf.ai", + australia="https://au.api.murf.ai", + eu_central="https://eu-central.api.murf.ai", + uk="https://uk.api.murf.ai", + south_america="https://sa-east.api.murf.ai" +) + +uk_environment = MurfEnvironment( + base="https://uk.api.murf.ai", + production="wss://uk.api.murf.ai/v1/speech", + global_router="https://global.api.murf.ai", + us_east="https://us-east.api.murf.ai", + us_west="https://us-west.api.murf.ai", + india="https://in.api.murf.ai", + canada="https://ca.api.murf.ai", + south_korea="https://kr.api.murf.ai", + uae="https://me.api.murf.ai", + japan="https://jp.api.murf.ai", + australia="https://au.api.murf.ai", + eu_central="https://eu-central.api.murf.ai", + uk="https://uk.api.murf.ai", + south_america="https://sa-east.api.murf.ai" +) + +ca_environment = MurfEnvironment( + base="https://ca.api.murf.ai", + production="wss://ca.api.murf.ai/v1/speech", + global_router="https://global.api.murf.ai", + us_east="https://us-east.api.murf.ai", + us_west="https://us-west.api.murf.ai", + india="https://in.api.murf.ai", + canada="https://ca.api.murf.ai", + south_korea="https://kr.api.murf.ai", + uae="https://me.api.murf.ai", + japan="https://jp.api.murf.ai", + australia="https://au.api.murf.ai", + eu_central="https://eu-central.api.murf.ai", + uk="https://uk.api.murf.ai", + south_america="https://sa-east.api.murf.ai" +) + + +region_environment_map = { + MurfRegion.DEFAULT: MurfEnvironment.DEFAULT, + MurfRegion.GLOBAL: global_environment, + MurfRegion.US_EAST: us_east_environment, + MurfRegion.US_WEST: us_west_environment, + MurfRegion.EU_CENTRAL: eu_central_environment, + MurfRegion.IN: in_environment, + MurfRegion.JP: jp_environment, + MurfRegion.AU: au_environment, + MurfRegion.KR: kr_environment, + MurfRegion.ME: me_environment, + MurfRegion.SA_EAST: sa_east_environment, + MurfRegion.UK: uk_environment, + MurfRegion.CA: ca_environment, +} \ No newline at end of file