Skip to content

Commit 6f95df6

Browse files
authored
Merge pull request #1018 from planetlabs/path-prefix-1017
Add path_prefix to Subscriptions API request builder
2 parents 4873a48 + 4c63cc9 commit 6f95df6

File tree

2 files changed

+99
-4
lines changed

2 files changed

+99
-4
lines changed

planet/subscription_request.py

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -371,14 +371,16 @@ def _delivery(type: str, parameters: dict) -> dict:
371371
def amazon_s3(aws_access_key_id: str,
372372
aws_secret_access_key: str,
373373
bucket: str,
374-
aws_region: str) -> dict:
374+
aws_region: str,
375+
path_prefix: Optional[str] = None) -> dict:
375376
"""Delivery to Amazon S3.
376377
377378
Parameters:
378379
aws_access_key_id: S3 account access key.
379380
aws_secret_access_key: S3 account secret key.
380381
bucket: The name of the bucket that will receive the order output.
381382
aws_region: The region where the bucket lives in AWS.
383+
path_prefix: Path prefix for deliveries.
382384
"""
383385
parameters = {
384386
'aws_access_key_id': aws_access_key_id,
@@ -387,13 +389,17 @@ def amazon_s3(aws_access_key_id: str,
387389
'aws_region': aws_region,
388390
}
389391

392+
if path_prefix:
393+
parameters['path_prefix'] = path_prefix
394+
390395
return _delivery('amazon_s3', parameters)
391396

392397

393398
def azure_blob_storage(account: str,
394399
container: str,
395400
sas_token: str,
396-
storage_endpoint_suffix: Optional[str] = None) -> dict:
401+
storage_endpoint_suffix: Optional[str] = None,
402+
path_prefix: Optional[str] = None) -> dict:
397403
"""Delivery to Azure Blob Storage.
398404
399405
Parameters:
@@ -403,6 +409,7 @@ def azure_blob_storage(account: str,
403409
without a leading '?'.
404410
storage_endpoint_suffix: Deliver order to a sovereign cloud. The
405411
default is "core.windows.net".
412+
path_prefix: Path prefix for deliveries.
406413
"""
407414
parameters = {
408415
'account': account,
@@ -413,29 +420,39 @@ def azure_blob_storage(account: str,
413420
if storage_endpoint_suffix:
414421
parameters['storage_endpoint_suffix'] = storage_endpoint_suffix
415422

423+
if path_prefix:
424+
parameters['path_prefix'] = path_prefix
425+
416426
return _delivery('azure_blob_storage', parameters)
417427

418428

419-
def google_cloud_storage(credentials: str, bucket: str) -> dict:
429+
def google_cloud_storage(credentials: str,
430+
bucket: str,
431+
path_prefix: Optional[str] = None) -> dict:
420432
"""Delivery to Google Cloud Storage.
421433
422434
Parameters:
423435
credentials: JSON-string of service account for bucket.
424436
bucket: GCS bucket name.
437+
path_prefix: Path prefix for deliveries.
425438
"""
426439
parameters = {
427440
'bucket': bucket,
428441
'credentials': credentials,
429442
}
430443

444+
if path_prefix:
445+
parameters['path_prefix'] = path_prefix
446+
431447
return _delivery('google_cloud_storage', parameters)
432448

433449

434450
def oracle_cloud_storage(customer_access_key_id: str,
435451
customer_secret_key: str,
436452
bucket: str,
437453
region: str,
438-
namespace: str) -> dict:
454+
namespace: str,
455+
path_prefix: Optional[str] = None) -> dict:
439456
"""Delivery to Oracle Cloud Storage.
440457
441458
Parameters:
@@ -444,6 +461,7 @@ def oracle_cloud_storage(customer_access_key_id: str,
444461
bucket: The name of the bucket that will receive the order output.
445462
region: The region where the bucket lives in Oracle.
446463
namespace: Object Storage namespace name.
464+
path_prefix: Path prefix for deliveries.
447465
"""
448466
parameters = {
449467
'customer_access_key_id': customer_access_key_id,
@@ -453,6 +471,9 @@ def oracle_cloud_storage(customer_access_key_id: str,
453471
'namespace': namespace
454472
}
455473

474+
if path_prefix:
475+
parameters['path_prefix'] = path_prefix
476+
456477
return _delivery('oracle_cloud_storage', parameters)
457478

458479

tests/unit/test_subscription_request.py

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,25 @@ def test_amazon_s3_success():
197197
}
198198

199199

200+
def test_amazon_s3_path_prefix_success():
201+
res = subscription_request.amazon_s3(aws_access_key_id='keyid',
202+
aws_secret_access_key='accesskey',
203+
bucket='bucket',
204+
aws_region='region',
205+
path_prefix="prefix")
206+
207+
assert res == {
208+
"type": "amazon_s3",
209+
"parameters": {
210+
"aws_access_key_id": "keyid",
211+
"aws_secret_access_key": "accesskey",
212+
"bucket": "bucket",
213+
"aws_region": "region",
214+
"path_prefix": "prefix"
215+
}
216+
}
217+
218+
200219
def test_azure_blob_storage_success():
201220
res = subscription_request.azure_blob_storage(
202221
account='act',
@@ -215,6 +234,26 @@ def test_azure_blob_storage_success():
215234
}
216235

217236

237+
def test_azure_blob_storage_path_prefix_success():
238+
res = subscription_request.azure_blob_storage(
239+
account='act',
240+
container='container',
241+
sas_token='sastoken',
242+
storage_endpoint_suffix='suffix',
243+
path_prefix="prefix")
244+
245+
assert res == {
246+
"type": "azure_blob_storage",
247+
"parameters": {
248+
"account": "act",
249+
"container": "container",
250+
"sas_token": "sastoken",
251+
"storage_endpoint_suffix": "suffix",
252+
"path_prefix": "prefix"
253+
}
254+
}
255+
256+
218257
def test_google_cloud_storage_success():
219258
res = subscription_request.google_cloud_storage(credentials='cred',
220259
bucket='bucket')
@@ -227,6 +266,19 @@ def test_google_cloud_storage_success():
227266
}
228267

229268

269+
def test_google_cloud_storage_path_prefix_success():
270+
res = subscription_request.google_cloud_storage(credentials='cred',
271+
bucket='bucket',
272+
path_prefix="prefix")
273+
274+
assert res == {
275+
"type": "google_cloud_storage",
276+
"parameters": {
277+
"bucket": "bucket", "credentials": "cred", "path_prefix": "prefix"
278+
}
279+
}
280+
281+
230282
def test_oracle_cloud_storage_success():
231283
res = subscription_request.oracle_cloud_storage(
232284
customer_access_key_id='keyid',
@@ -247,6 +299,28 @@ def test_oracle_cloud_storage_success():
247299
}
248300

249301

302+
def test_oracle_cloud_storage_path_prefix_success():
303+
res = subscription_request.oracle_cloud_storage(
304+
customer_access_key_id='keyid',
305+
customer_secret_key='secretkey',
306+
bucket='bucket',
307+
region='region',
308+
namespace='namespace',
309+
path_prefix="prefix")
310+
311+
assert res == {
312+
"type": "oracle_cloud_storage",
313+
"parameters": {
314+
"customer_access_key_id": "keyid",
315+
"customer_secret_key": "secretkey",
316+
"bucket": "bucket",
317+
"region": "region",
318+
"namespace": "namespace",
319+
"path_prefix": "prefix"
320+
}
321+
}
322+
323+
250324
def test_notifications_success():
251325
topics = ['delivery.success']
252326
notifications_config = subscription_request.notifications(url='url',

0 commit comments

Comments
 (0)