Skip to content

Commit bbb4f28

Browse files
authored
Merge pull request #754 from planetlabs/headers-fix-739
Add identification headers to SDK communication with servers
2 parents bd45cc3 + 2a13a07 commit bbb4f28

File tree

9 files changed

+278
-446
lines changed

9 files changed

+278
-446
lines changed

planet/auth.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import httpx
2525
import jwt
2626

27-
from . import http, models
27+
from . import http
2828
from .constants import PLANET_BASE_URL, SECRET_FILE_PATH
2929
from .exceptions import AuthException
3030
from typing import Optional
@@ -177,10 +177,8 @@ def login(self, email: str, password: str) -> dict:
177177
data = {'email': email, 'password': password}
178178

179179
sess = http.AuthSession()
180-
req = models.Request(url, method='POST', json=data)
181-
resp = sess.request(req)
182-
auth_data = self.decode_response(resp)
183-
return auth_data
180+
resp = sess.request(url=url, method='POST', json=data)
181+
return self.decode_response(resp)
184182

185183
@staticmethod
186184
def decode_response(response):

planet/clients/data.py

Lines changed: 32 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from .. import exceptions
2323
from ..constants import PLANET_BASE_URL
2424
from ..http import Session
25-
from ..models import Paged, Request, Response, StreamingBody
25+
from ..models import Paged, StreamingBody
2626

2727
BASE_URL = f'{PLANET_BASE_URL}/data/v1/'
2828
SEARCHES_PATH = '/searches'
@@ -93,17 +93,6 @@ def _searches_url(self):
9393
def _item_url(self, item_type, item_id):
9494
return f'{self._base_url}/item-types/{item_type}/items/{item_id}'
9595

96-
def _request(self, url, method, data=None, params=None, json=None):
97-
return Request(url, method=method, data=data, params=params, json=json)
98-
99-
async def _do_request(self, request: Request) -> Response:
100-
"""Submit a request and get response.
101-
102-
Parameters:
103-
request: request to submit
104-
"""
105-
return await self._session.request(request)
106-
10796
async def search(self,
10897
item_types: List[str],
10998
search_filter: dict,
@@ -185,11 +174,11 @@ async def search(self,
185174
f'{sort} must be one of {SEARCH_SORT}')
186175
params['_sort'] = sort
187176

188-
request = self._request(url,
189-
method='POST',
190-
json=request_json,
191-
params=params)
192-
return Items(request, self._do_request, limit=limit)
177+
response = await self._session.request(method='POST',
178+
url=url,
179+
json=request_json,
180+
params=params)
181+
return Items(response, self._session.request, limit=limit)
193182

194183
async def create_search(self,
195184
name: str,
@@ -229,15 +218,16 @@ async def create_search(self,
229218
url = self._searches_url()
230219

231220
# TODO: validate item_types
232-
request_json = {
221+
request = {
233222
'name': name,
234223
'filter': search_filter,
235224
'item_types': item_types,
236225
'__daily_email_enabled': enable_email
237226
}
238227

239-
request = self._request(url, method='POST', json=request_json)
240-
response = await self._do_request(request)
228+
response = await self._session.request(method='POST',
229+
url=url,
230+
json=request)
241231
return response.json()
242232

243233
async def update_search(self,
@@ -260,15 +250,16 @@ async def update_search(self,
260250
"""
261251
url = f'{self._searches_url()}/{search_id}'
262252

263-
request_json = {
253+
request = {
264254
'name': name,
265255
'filter': search_filter,
266256
'item_types': item_types,
267257
'__daily_email_enabled': enable_email
268258
}
269259

270-
request = self._request(url, method='PUT', json=request_json)
271-
response = await self._do_request(request)
260+
response = await self._session.request(method='PUT',
261+
url=url,
262+
json=request)
272263
return response.json()
273264

274265
async def list_searches(self,
@@ -307,8 +298,9 @@ async def list_searches(self,
307298
f'{search_type} must be one of {LIST_SEARCH_TYPE}')
308299

309300
url = f'{self._searches_url()}'
310-
request = self._request(url, method='GET')
311-
return Searches(request, self._do_request, limit=limit)
301+
302+
response = await self._session.request(method='GET', url=url)
303+
return Searches(response, self._session.request, limit=limit)
312304

313305
async def delete_search(self, search_id: str):
314306
"""Delete an existing saved search.
@@ -321,8 +313,7 @@ async def delete_search(self, search_id: str):
321313
"""
322314
url = f'{self._searches_url()}/{search_id}'
323315

324-
request = self._request(url, method='DELETE')
325-
await self._do_request(request)
316+
await self._session.request(method='DELETE', url=url)
326317

327318
async def get_search(self, search_id: str) -> dict:
328319
"""Get a saved search by id.
@@ -337,9 +328,9 @@ async def get_search(self, search_id: str) -> dict:
337328
planet.exceptions.APIError: On API error.
338329
"""
339330
url = f'{self._searches_url()}/{search_id}'
340-
req = self._request(url, method='GET')
341-
resp = await self._do_request(req)
342-
return resp.json()
331+
332+
response = await self._session.request(method='GET', url=url)
333+
return response.json()
343334

344335
async def run_search(self,
345336
search_id: str,
@@ -359,8 +350,8 @@ async def run_search(self,
359350
"""
360351
url = f'{self._searches_url()}/{search_id}/results'
361352

362-
request = self._request(url, method='GET')
363-
return Items(request, self._do_request, limit=limit)
353+
response = await self._session.request(method='GET', url=url)
354+
return Items(response, self._session.request, limit=limit)
364355

365356
async def get_stats(self,
366357
item_types: List[str],
@@ -388,14 +379,15 @@ async def get_stats(self,
388379

389380
url = f'{self._base_url}{STATS_PATH}'
390381

391-
request_json = {
382+
request = {
392383
'interval': interval,
393384
'filter': search_filter,
394385
'item_types': item_types
395386
}
396387

397-
request = self._request(url, method='POST', json=request_json)
398-
response = await self._do_request(request)
388+
response = await self._session.request(method='POST',
389+
url=url,
390+
json=request)
399391
return response.json()
400392

401393
async def list_asset_types(self) -> List[dict]:
@@ -500,8 +492,8 @@ async def list_item_assets(self, item_type_id: str, item_id: str) -> dict:
500492
planet.exceptions.APIError: On API error.
501493
"""
502494
url = f'{self._item_url(item_type_id, item_id)}/assets'
503-
request = self._request(url, method='GET')
504-
response = await self._do_request(request)
495+
496+
response = await self._session.request(method='GET', url=url)
505497
return response.json()
506498

507499
async def get_asset(self,
@@ -558,9 +550,8 @@ async def activate_asset(self, asset: dict):
558550

559551
# lets not try to activate an asset already activating or active
560552
if status == 'inactive':
561-
request = self._request(url, method='GET')
562553
# no response is returned
563-
await self._do_request(request)
554+
await self._session.request(method='GET', url=url)
564555

565556
return
566557

@@ -623,8 +614,7 @@ async def wait_asset(
623614
raise exceptions.ClientError(
624615
'asset missing ["_links"]["_self"] entry.')
625616

626-
request = self._request(asset_url, method='GET')
627-
response = await self._do_request(request)
617+
response = await self._session.request(method='GET', url=asset_url)
628618
asset = response.json()
629619

630620
if max_attempts and num_attempts >= max_attempts:
@@ -669,9 +659,7 @@ async def download_asset(self,
669659
raise exceptions.ClientError(
670660
'asset missing ["location"] entry. Is asset active?')
671661

672-
req = self._request(location, method='GET')
673-
674-
async with self._session.stream(req) as resp:
662+
async with self._session.stream(method='GET', url=location) as resp:
675663
body = StreamingBody(resp)
676664
dl_path = Path(directory, filename or body.name)
677665
dl_path.parent.mkdir(exist_ok=True, parents=True)

planet/clients/orders.py

Lines changed: 21 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
from .. import exceptions
2626
from ..constants import PLANET_BASE_URL
2727
from ..http import Session
28-
from ..models import Paged, Request, Response, StreamingBody
28+
from ..models import Paged, StreamingBody
2929

3030
BASE_URL = f'{PLANET_BASE_URL}/compute/ops'
3131
STATS_PATH = '/stats/orders/v2'
@@ -112,17 +112,6 @@ def _orders_url(self):
112112
def _stats_url(self):
113113
return f'{self._base_url}{STATS_PATH}'
114114

115-
def _request(self, url, method, data=None, params=None, json=None):
116-
return Request(url, method=method, data=data, params=params, json=json)
117-
118-
async def _do_request(self, request: Request) -> Response:
119-
'''Submit a request and get response.
120-
121-
Parameters:
122-
request: request to submit
123-
'''
124-
return await self._session.request(request)
125-
126115
async def create_order(self, request: dict) -> dict:
127116
'''Create an order request.
128117
@@ -156,10 +145,10 @@ async def create_order(self, request: dict) -> dict:
156145
planet.exceptions.APIError: On API error.
157146
'''
158147
url = self._orders_url()
159-
160-
req = self._request(url, method='POST', json=request)
161-
resp = await self._do_request(req)
162-
return resp.json()
148+
response = await self._session.request(method='POST',
149+
url=url,
150+
json=request)
151+
return response.json()
163152

164153
async def get_order(self, order_id: str) -> dict:
165154
'''Get order details by Order ID.
@@ -177,9 +166,8 @@ async def get_order(self, order_id: str) -> dict:
177166
self._check_order_id(order_id)
178167
url = f'{self._orders_url()}/{order_id}'
179168

180-
req = self._request(url, method='GET')
181-
resp = await self._do_request(req)
182-
return resp.json()
169+
response = await self._session.request(method='GET', url=url)
170+
return response.json()
183171

184172
async def cancel_order(self, order_id: str) -> dict:
185173
'''Cancel a queued order.
@@ -197,9 +185,8 @@ async def cancel_order(self, order_id: str) -> dict:
197185
self._check_order_id(order_id)
198186
url = f'{self._orders_url()}/{order_id}'
199187

200-
req = self._request(url, method='PUT')
201-
resp = await self._do_request(req)
202-
return resp.json()
188+
response = await self._session.request(method='PUT', url=url)
189+
return response.json()
203190

204191
async def cancel_orders(self,
205192
order_ids: Optional[List[str]] = None) -> dict:
@@ -224,9 +211,11 @@ async def cancel_orders(self,
224211
self._check_order_id(oid)
225212
cancel_body['order_ids'] = order_ids
226213

227-
req = self._request(url, method='POST', json=cancel_body)
228-
resp = await self._do_request(req)
229-
return resp.json()
214+
response = await self._session.request(method='POST',
215+
url=url,
216+
json=cancel_body)
217+
218+
return response.json()
230219

231220
async def aggregated_order_stats(self) -> dict:
232221
'''Get aggregated counts of active orders.
@@ -238,9 +227,8 @@ async def aggregated_order_stats(self) -> dict:
238227
planet.exceptions.APIError: On API error.
239228
'''
240229
url = self._stats_url()
241-
req = self._request(url, method='GET')
242-
resp = await self._do_request(req)
243-
return resp.json()
230+
response = await self._session.request(method='GET', url=url)
231+
return response.json()
244232

245233
async def download_asset(self,
246234
location: str,
@@ -264,9 +252,7 @@ async def download_asset(self,
264252
Raises:
265253
planet.exceptions.APIError: On API error.
266254
"""
267-
req = self._request(location, method='GET')
268-
269-
async with self._session.stream(req) as resp:
255+
async with self._session.stream(method='GET', url=location) as resp:
270256
body = StreamingBody(resp)
271257
dl_path = Path(directory, filename or body.name)
272258
dl_path.parent.mkdir(exist_ok=True, parents=True)
@@ -505,5 +491,7 @@ async def list_orders(self,
505491
else:
506492
params = None
507493

508-
request = self._request(url, 'GET', params=params)
509-
return Orders(request, self._do_request, limit=limit)
494+
response = await self._session.request(method='GET',
495+
url=url,
496+
params=params)
497+
return Orders(response, self._session.request, limit=limit)

0 commit comments

Comments
 (0)