Skip to content

Commit 828d69e

Browse files
Merge pull request #215 from dvonthenen/issue212-custom-params
Custom Query Parameters on URL for API Calls
2 parents c488adc + 7cb97f1 commit 828d69e

File tree

9 files changed

+667
-270
lines changed

9 files changed

+667
-270
lines changed

deepgram/clients/abstract_async_client.py

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,33 +33,62 @@ def __init__(self, config: DeepgramClientOptions):
3333
self.config = config
3434
self.client = httpx.AsyncClient()
3535

36-
async def get(self, url: str, options=None):
36+
async def get(self, url: str, options=None, addons=None, **kwargs):
3737
return await self._handle_request(
38-
"GET", url, params=options, headers=self.config.headers
38+
"GET",
39+
url,
40+
params=options,
41+
addons=addons,
42+
headers=self.config.headers,
43+
**kwargs
3944
)
4045

41-
async def post(self, url: str, options=None, **kwargs):
46+
async def post(self, url: str, options=None, addons=None, **kwargs):
4247
return await self._handle_request(
43-
"POST", url, params=options, headers=self.config.headers, **kwargs
48+
"POST",
49+
url,
50+
params=options,
51+
addons=addons,
52+
headers=self.config.headers,
53+
**kwargs
4454
)
4555

46-
async def put(self, url: str, options=None, **kwargs):
56+
async def put(self, url: str, options=None, addons=None, **kwargs):
4757
return await self._handle_request(
48-
"PUT", url, params=options, headers=self.config.headers, **kwargs
58+
"PUT",
59+
url,
60+
params=options,
61+
addons=addons,
62+
headers=self.config.headers,
63+
**kwargs
4964
)
5065

51-
async def patch(self, url: str, options=None, **kwargs):
66+
async def patch(self, url: str, options=None, addons=None, **kwargs):
5267
return await self._handle_request(
53-
"PATCH", url, params=options, headers=self.config.headers, **kwargs
68+
"PATCH",
69+
url,
70+
params=options,
71+
addons=addons,
72+
headers=self.config.headers,
73+
**kwargs
5474
)
5575

56-
async def delete(self, url: str, options=None):
57-
return await self._handle_request("DELETE", url, params=options, headers=self.config.headers)
76+
async def delete(self, url: str, options=None, addons=None, **kwargs):
77+
return await self._handle_request(
78+
"DELETE",
79+
url,
80+
params=options,
81+
addons=addons,
82+
headers=self.config.headers,
83+
**kwargs
84+
)
5885

59-
async def _handle_request(self, method, url, params, headers, **kwargs):
86+
async def _handle_request(self, method, url, params, addons, headers, **kwargs):
6087
new_url = url
6188
if params is not None:
6289
new_url = append_query_params(new_url, params)
90+
if addons is not None:
91+
new_url = append_query_params(new_url, addons)
6392

6493
try:
6594
with httpx.Client() as client:

deepgram/clients/abstract_sync_client.py

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,33 +34,67 @@ def __init__(self, config: DeepgramClientOptions):
3434

3535
self.config = config
3636

37-
def get(self, url: str, options=None, timeout=None):
37+
def get(self, url: str, options=None, addons=None, timeout=None, **kwargs):
3838
return self._handle_request(
39-
"GET", url, params=options, headers=self.config.headers, timeout=timeout
39+
"GET",
40+
url,
41+
params=options,
42+
addons=addons,
43+
headers=self.config.headers,
44+
timeout=timeout,
45+
**kwargs
4046
)
4147

42-
def post(self, url: str, options=None, timeout=None, **kwargs):
48+
def post(self, url: str, options=None, addons=None, timeout=None, **kwargs):
4349
return self._handle_request(
44-
"POST", url, params=options, headers=self.config.headers, timeout=timeout, **kwargs
50+
"POST",
51+
url,
52+
params=options,
53+
addons=addons,
54+
headers=self.config.headers,
55+
timeout=timeout,
56+
**kwargs
4557
)
4658

47-
def put(self, url: str, options=None, timeout=None, **kwargs):
59+
def put(self, url: str, options=None, addons=None, timeout=None, **kwargs):
4860
return self._handle_request(
49-
"PUT", url, params=options, headers=self.config.headers, timeout=timeout, **kwargs
61+
"PUT",
62+
url,
63+
params=options,
64+
addons=addons,
65+
headers=self.config.headers,
66+
timeout=timeout,
67+
**kwargs
5068
)
5169

52-
def patch(self, url: str, options=None, timeout=None, **kwargs):
70+
def patch(self, url: str, options=None, addons=None, timeout=None, **kwargs):
5371
return self._handle_request(
54-
"PATCH", url, params=options, headers=self.config.headers, timeout=timeout, **kwargs
72+
"PATCH",
73+
url,
74+
params=options,
75+
addons=addons,
76+
headers=self.config.headers,
77+
timeout=timeout,
78+
**kwargs
5579
)
5680

57-
def delete(self, url: str, options=None, timeout=None):
58-
return self._handle_request("DELETE", url, params=options, headers=self.config.headers, timeout=timeout)
81+
def delete(self, url: str, options=None, addons=None, timeout=None, **kwargs):
82+
return self._handle_request(
83+
"DELETE",
84+
url,
85+
params=options,
86+
addons=addons,
87+
headers=self.config.headers,
88+
timeout=timeout,
89+
**kwargs
90+
)
5991

60-
def _handle_request(self, method, url, params, headers, timeout, **kwargs):
92+
def _handle_request(self, method, url, params, addons, headers, timeout, **kwargs):
6193
new_url = url
6294
if params is not None:
63-
new_url = append_query_params(url, params)
95+
new_url = append_query_params(new_url, params)
96+
if addons is not None:
97+
new_url = append_query_params(new_url, addons)
6498

6599
if timeout is None:
66100
timeout = httpx.Timeout(10.0, connect=10.0)

deepgram/clients/live/v1/async_client.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,19 @@ def __init__(self, config: DeepgramClientOptions):
3939
self._event_handlers = {event: [] for event in LiveTranscriptionEvents}
4040
self.websocket_url = convert_to_websocket_url(self.config.url, self.endpoint)
4141

42-
async def start(self, options: LiveOptions = None, **kwargs):
42+
async def start(self, options: LiveOptions = None, addons: dict = None, **kwargs):
4343
self.logger.debug("AsyncLiveClient.start ENTER")
4444
self.logger.info("kwargs: %s", options)
45+
self.logger.info("addons: %s", addons)
4546
self.logger.info("options: %s", kwargs)
4647

4748
self.options = options
48-
self.kwargs = kwargs
49+
if addons is not None:
50+
self.__dict__.update(addons)
51+
if kwargs is not None:
52+
self.kwargs = kwargs
53+
else:
54+
self.kwargs = dict()
4955

5056
if isinstance(options, LiveOptions):
5157
self.logger.info("LiveOptions switching class -> json")
@@ -93,7 +99,7 @@ async def _start(self) -> None:
9399
await self._emit(
94100
LiveTranscriptionEvents.Transcript,
95101
result=result,
96-
kwargs=self.kwargs,
102+
**dict(self.kwargs),
97103
)
98104
case LiveTranscriptionEvents.Metadata.value:
99105
self.logger.debug(
@@ -103,7 +109,7 @@ async def _start(self) -> None:
103109
await self._emit(
104110
LiveTranscriptionEvents.Metadata,
105111
metadata=result,
106-
kwargs=self.kwargs,
112+
**dict(self.kwargs),
107113
)
108114
case LiveTranscriptionEvents.Error.value:
109115
self.logger.debug(
@@ -113,7 +119,7 @@ async def _start(self) -> None:
113119
await self._emit(
114120
LiveTranscriptionEvents.Error,
115121
error=result,
116-
kwargs=self.kwargs,
122+
**dict(self.kwargs),
117123
)
118124
case _:
119125
self.logger.error(

deepgram/clients/live/v1/client.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,22 @@ def __init__(self, config: DeepgramClientOptions):
4343
self._event_handlers = {event: [] for event in LiveTranscriptionEvents}
4444
self.websocket_url = convert_to_websocket_url(self.config.url, self.endpoint)
4545

46-
def start(self, options: LiveOptions = None, **kwargs):
46+
def start(self, options: LiveOptions = None, addons: dict = None, **kwargs):
4747
"""
4848
Starts the WebSocket connection for live transcription.
4949
"""
5050
self.logger.debug("LiveClient.start ENTER")
5151
self.logger.info("kwargs: %s", options)
52+
self.logger.info("addon: %s", addons)
5253
self.logger.info("options: %s", kwargs)
5354

5455
self.options = options
55-
self.kwargs = kwargs
56+
if addons is not None:
57+
self.__dict__.update(addons)
58+
if kwargs is not None:
59+
self.kwargs = kwargs
60+
else:
61+
self.kwargs = dict()
5662

5763
if isinstance(options, LiveOptions):
5864
self.logger.info("LiveOptions switching class -> json")
@@ -127,7 +133,7 @@ def _listening(self) -> None:
127133
self._emit(
128134
LiveTranscriptionEvents.Transcript,
129135
result=result,
130-
kwargs=self.kwargs,
136+
**dict(self.kwargs),
131137
)
132138
case LiveTranscriptionEvents.Metadata.value:
133139
self.logger.debug(
@@ -137,7 +143,7 @@ def _listening(self) -> None:
137143
self._emit(
138144
LiveTranscriptionEvents.Metadata,
139145
metadata=result,
140-
kwargs=self.kwargs,
146+
**dict(self.kwargs),
141147
)
142148
case LiveTranscriptionEvents.Error.value:
143149
self.logger.debug(
@@ -147,7 +153,7 @@ def _listening(self) -> None:
147153
self._emit(
148154
LiveTranscriptionEvents.Error,
149155
error=result,
150-
kwargs=self.kwargs,
156+
**dict(self.kwargs),
151157
)
152158
case _:
153159
self.logger.error(
@@ -225,7 +231,7 @@ def send(self, data) -> int:
225231
ret = self._socket.send(data)
226232
self.lock_send.release()
227233

228-
self.logger.spam("send bytes: %d", ret)
234+
self.logger.spam(f"send bytes: {ret}")
229235
self.logger.spam("LiveClient.send LEAVE")
230236
return ret
231237

@@ -259,7 +265,7 @@ def finish(self):
259265
self.listening = None
260266
self.logger.notice("listening thread joined")
261267

262-
if self._socket:
268+
if self._socket is not None:
263269
self.logger.notice("closing socket...")
264270
self._socket.close()
265271

0 commit comments

Comments
 (0)