Skip to content

Commit 93ca4c9

Browse files
authored
Add support for proxying requests
1 parent 3f1e8dd commit 93ca4c9

File tree

4 files changed

+55
-7
lines changed

4 files changed

+55
-7
lines changed

pyixapi/core/api.py

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ def __init__(
4848
access_token="",
4949
refresh_token="",
5050
user_agent=f"pyixapi/{__version__}",
51+
proxies=None,
5152
):
5253
self.url = url.rstrip("/")
5354
self.key = key
@@ -56,6 +57,7 @@ def __init__(
5657
self.refresh_token = Token.from_jwt(refresh_token) if refresh_token else None
5758
self.http_session = requests.Session()
5859
self.user_agent = user_agent
60+
self.proxies = proxies
5961

6062
self.auth = Endpoint(self, "auth")
6163
self.connections = Endpoint(self, "connections", model=Connection)
@@ -84,7 +86,13 @@ def version(self):
8486
"""
8587
Get the API version of IX-API.
8688
"""
87-
return Request(base=self.url, token=self.access_token, http_session=self.http_session).get_version()
89+
return Request(
90+
base=self.url,
91+
token=self.access_token,
92+
http_session=self.http_session,
93+
user_agent=self.user_agent,
94+
proxies=self.proxies,
95+
).get_version()
8896

8997
@property
9098
def accounts(self):
@@ -116,9 +124,12 @@ def authenticate(self):
116124
if self.refresh_token and not self.refresh_token.is_expired:
117125
return self.refresh_authentication()
118126

119-
r = Request(cat(self.url, "auth", "token"), http_session=self.http_session).post(
120-
data={"api_key": self.key, "api_secret": self.secret}
121-
)
127+
r = Request(
128+
cat(self.url, "auth", "token"),
129+
http_session=self.http_session,
130+
user_agent=self.user_agent,
131+
proxies=self.proxies,
132+
).post(data={"api_key": self.key, "api_secret": self.secret})
122133

123134
self.access_token = Token.from_jwt(r["access_token"])
124135
self.refresh_token = Token.from_jwt(r["refresh_token"])
@@ -133,6 +144,8 @@ def refresh_authentication(self):
133144
cat(self.url, "auth", "refresh"),
134145
token=self.refresh_token.encoded,
135146
http_session=self.http_session,
147+
user_agent=self.user_agent,
148+
proxies=self.proxies,
136149
).post(data={"refresh_token": self.refresh_token.encoded})
137150

138151
self.access_token = Token.from_jwt(r["access_token"])
@@ -149,4 +162,10 @@ def health(self):
149162
if self.version == 1:
150163
return {}
151164

152-
return Request(base=self.url, token=self.access_token, http_session=self.http_session).get_health()
165+
return Request(
166+
base=self.url,
167+
token=self.access_token,
168+
http_session=self.http_session,
169+
user_agent=self.user_agent,
170+
proxies=self.proxies,
171+
).get_health()

pyixapi/core/endpoint.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ def all(self):
2828
base=self.url,
2929
token=self.api.access_token,
3030
http_session=self.api.http_session,
31+
user_agent=self.user_agent,
32+
proxies=self.api.proxies,
3133
)
3234
return RecordSet(self, r)
3335

@@ -41,6 +43,8 @@ def filter(self, *args, **kwargs):
4143
base=self.url,
4244
token=self.api.access_token,
4345
http_session=self.api.http_session,
46+
user_agent=self.user_agent,
47+
proxies=self.api.proxies,
4448
)
4549
return RecordSet(self, r)
4650

@@ -74,6 +78,8 @@ def get(self, *args, **kwargs):
7478
base=self.url,
7579
token=self.api.access_token,
7680
http_session=self.api.http_session,
81+
user_agent=self.user_agent,
82+
proxies=self.api.proxies,
7783
)
7884
try:
7985
return next(RecordSet(self, r), None)
@@ -94,6 +100,8 @@ def create(self, *args, **kwargs):
94100
base=self.url,
95101
token=self.api.access_token,
96102
http_session=self.api.http_session,
103+
user_agent=self.user_agent,
104+
proxies=self.api.proxies,
97105
).post(args[0] if args else kwargs)
98106

99107
return self.return_obj(req, self.api, self)

pyixapi/core/query.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,24 @@ class Request(object):
6161
dict.
6262
"""
6363

64-
def __init__(self, base, http_session, filters=None, key=None, token=None, user_agent=None):
64+
def __init__(
65+
self,
66+
base,
67+
http_session,
68+
filters=None,
69+
key=None,
70+
token=None,
71+
user_agent=None,
72+
proxies=None,
73+
):
6574
self.base = base
6675
self.filters = filters or None
6776
self.key = key
6877
self.token = token
6978
self.http_session = http_session
7079
self.url = self.base if not key else cat(self.base, key)
7180
self.user_agent = user_agent
81+
self.proxies = proxies
7282

7383
def get_openapi(self):
7484
"""
@@ -124,7 +134,14 @@ def _make_call(self, verb="get", url_override=None, add_params=None, data=None):
124134
if add_params:
125135
params.update(add_params)
126136

127-
r = getattr(self.http_session, verb)(url_override or self.url, headers=headers, params=params, json=data)
137+
r = getattr(self.http_session, verb)(
138+
url_override or self.url,
139+
headers=headers,
140+
params=params,
141+
json=data,
142+
user_agent=self.user_agent,
143+
proxies=self.proxies,
144+
)
128145

129146
if verb == "delete":
130147
if r.ok:

pyixapi/core/response.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,8 @@ def save(self):
290290
base=self.endpoint.url,
291291
token=self.api.access_token,
292292
http_session=self.api.http_session,
293+
user_agent=self.user_agent,
294+
proxies=self.api.proxies,
293295
)
294296
if r.patch(updates):
295297
return True
@@ -316,5 +318,7 @@ def delete(self):
316318
base=self.endpoint.url,
317319
token=self.api.access_token,
318320
http_session=self.api.http_session,
321+
user_agent=self.user_agent,
322+
proxies=self.api.proxies,
319323
)
320324
return True if r.delete() else False

0 commit comments

Comments
 (0)