77"""
88
99from enum import Enum
10+ from bandwidth .api_helper import APIHelper
1011from bandwidth .http .requests_client import RequestsClient
1112
1213
1314class Environment (Enum ):
1415 """An enum for SDK environments"""
1516 PRODUCTION = 0
17+ CUSTOM = 1
1618
1719
1820class Server (Enum ):
@@ -48,6 +50,10 @@ def backoff_factor(self):
4850 def environment (self ):
4951 return self ._environment
5052
53+ @property
54+ def base_url (self ):
55+ return self ._base_url
56+
5157 @property
5258 def messaging_basic_auth_user_name (self ):
5359 return self ._messaging_basic_auth_user_name
@@ -82,6 +88,7 @@ def web_rtc_basic_auth_password(self):
8288
8389 def __init__ (self , timeout = 60 , max_retries = 3 , backoff_factor = 0 ,
8490 environment = Environment .PRODUCTION ,
91+ base_url = 'https://www.example.com' ,
8592 messaging_basic_auth_user_name = 'TODO: Replace' ,
8693 messaging_basic_auth_password = 'TODO: Replace' ,
8794 two_factor_auth_basic_auth_user_name = 'TODO: Replace' ,
@@ -104,6 +111,9 @@ def __init__(self, timeout=60, max_retries=3, backoff_factor=0,
104111 # Current API environment
105112 self ._environment = environment
106113
114+ # base_url value
115+ self ._base_url = base_url
116+
107117 # The username to use with basic authentication
108118 self ._messaging_basic_auth_user_name = messaging_basic_auth_user_name
109119
@@ -132,7 +142,8 @@ def __init__(self, timeout=60, max_retries=3, backoff_factor=0,
132142 self ._http_client = self .create_http_client ()
133143
134144 def clone_with (self , timeout = None , max_retries = None , backoff_factor = None ,
135- environment = None , messaging_basic_auth_user_name = None ,
145+ environment = None , base_url = None ,
146+ messaging_basic_auth_user_name = None ,
136147 messaging_basic_auth_password = None ,
137148 two_factor_auth_basic_auth_user_name = None ,
138149 two_factor_auth_basic_auth_password = None ,
@@ -144,6 +155,7 @@ def clone_with(self, timeout=None, max_retries=None, backoff_factor=None,
144155 max_retries = max_retries or self .max_retries
145156 backoff_factor = backoff_factor or self .backoff_factor
146157 environment = environment or self .environment
158+ base_url = base_url or self .base_url
147159 messaging_basic_auth_user_name = messaging_basic_auth_user_name or self .messaging_basic_auth_user_name
148160 messaging_basic_auth_password = messaging_basic_auth_password or self .messaging_basic_auth_password
149161 two_factor_auth_basic_auth_user_name = two_factor_auth_basic_auth_user_name or self .two_factor_auth_basic_auth_user_name
@@ -155,7 +167,7 @@ def clone_with(self, timeout=None, max_retries=None, backoff_factor=None,
155167
156168 return Configuration (
157169 timeout = timeout , max_retries = max_retries ,
158- backoff_factor = backoff_factor , environment = environment ,
170+ backoff_factor = backoff_factor , environment = environment , base_url = base_url ,
159171 messaging_basic_auth_user_name = messaging_basic_auth_user_name ,
160172 messaging_basic_auth_password = messaging_basic_auth_password ,
161173 two_factor_auth_basic_auth_user_name = two_factor_auth_basic_auth_user_name ,
@@ -179,6 +191,13 @@ def create_http_client(self):
179191 Server .TWOFACTORAUTHDEFAULT : 'https://mfa.bandwidth.com/api/v1/' ,
180192 Server .VOICEDEFAULT : 'https://voice.bandwidth.com' ,
181193 Server .WEBRTCDEFAULT : 'https://api.webrtc.bandwidth.com/v1'
194+ },
195+ Environment .CUSTOM : {
196+ Server .DEFAULT : '{base_url}' ,
197+ Server .MESSAGINGDEFAULT : '{base_url}' ,
198+ Server .TWOFACTORAUTHDEFAULT : '{base_url}' ,
199+ Server .VOICEDEFAULT : '{base_url}' ,
200+ Server .WEBRTCDEFAULT : '{base_url}'
182201 }
183202 }
184203
@@ -194,4 +213,10 @@ def get_base_uri(self, server=Server.DEFAULT):
194213 String: The base URI.
195214
196215 """
197- return self .environments [self .environment ][server ]
216+ parameters = {
217+ "base_url" : {'value' : self .base_url , 'encode' : False },
218+ }
219+
220+ return APIHelper .append_url_with_template_parameters (
221+ self .environments [self .environment ][server ], parameters
222+ )
0 commit comments