Skip to content

Commit f32e2a7

Browse files
committed
implement planet subscriptions request-catalog command
1 parent d85fd70 commit f32e2a7

File tree

2 files changed

+69
-2
lines changed

2 files changed

+69
-2
lines changed

planet/cli/subscriptions.py

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,5 +191,49 @@ def request(name, source, delivery, notifications, tools, pretty):
191191
echo_json(res, pretty)
192192

193193

194-
async def request_catalog():
195-
raise NotImplementedError
194+
@subscriptions.command()
195+
@click.option('--item-types',
196+
required=True,
197+
type=types.CommaSeparatedString(),
198+
help='One or more comma-separated item types.')
199+
@click.option('--asset-types',
200+
required=True,
201+
type=types.CommaSeparatedString(),
202+
help='One or more comma-separated asset types.')
203+
@click.option(
204+
'--geometry',
205+
required=True,
206+
type=types.JSON(),
207+
help="""Geometry of the area of interest of the subscription that will be
208+
used to determine matches. Can be a string, filename or - for stdin.""")
209+
@click.option('--start-time',
210+
required=True,
211+
type=types.DateTime(),
212+
help='Date and time to begin subscription.')
213+
@click.option('--end-time',
214+
type=types.DateTime(),
215+
help='Date and time to end subscription.')
216+
@click.option('--rrule',
217+
type=str,
218+
help='iCalendar recurrance rule to specify recurrances.')
219+
@click.option('--filter',
220+
type=types.JSON(),
221+
help='Search filter. Can be a string, filename or - for stdin.')
222+
@pretty
223+
def request_catalog(item_types,
224+
asset_types,
225+
geometry,
226+
start_time,
227+
end_time,
228+
rrule,
229+
filter,
230+
pretty):
231+
"""Generate a subscriptions request catalog source description."""
232+
res = subscription_request.catalog_source(item_types,
233+
asset_types,
234+
geometry,
235+
start_time,
236+
end_time=end_time,
237+
rrule=rrule,
238+
filter=filter)
239+
echo_json(res, pretty)

tests/integration/test_subscriptions_cli.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,3 +283,26 @@ def test_request_base_success(invoke, geom_geojson):
283283

284284
assert source in result.output
285285
assert result.exit_code == 0 # success.
286+
287+
288+
def test_request_catalog_success(invoke, geom_geojson):
289+
"""Request-catalog command succeeds"""
290+
source = {
291+
"type": "catalog",
292+
"parameters": {
293+
"geometry": geom_geojson,
294+
"start_time": "2021-03-01T00:00:00Z",
295+
"item_types": ["PSScene"],
296+
"asset_types": ["ortho_analytic_4b"]
297+
}
298+
}
299+
300+
result = invoke([
301+
'request-catalog',
302+
'--item-types=PSScene',
303+
'--asset-types=ortho_analytic_4b',
304+
f"--geometry={json.dumps(geom_geojson)}",
305+
'--start-time=2021-03-01T00:00:00'
306+
])
307+
assert json.loads(result.output) == source
308+
assert result.exit_code == 0 # success.

0 commit comments

Comments
 (0)