Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions hvpy/api_groups/movies/get_movie_status.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
from typing import Optional

from hvpy.io import HvpyParameters, OutputType


class getMovieStatusInputParameters(HvpyParameters):
"""
Handles the input parameters of the ``getMovieStatus`` API.

Attributes
----------
{Shared}
id
Unique movie identifier, returned as a response by the ``queueMovie`` endpoint request.
format
Movie format.
verbose
Optionally include extra metadata in the response.
Defaults to `False`.
callback
Wrap the response object in a function call of your choosing.
Default is `None` (no wrapping), optional.
token
API token.
Comment thread
akash5100 marked this conversation as resolved.
Defaults to `None`.

References
----------
* `<https://api.helioviewer.org/docs/v2/api/api_groups/movies.html#id8>`__
{Shared}
"""

id: str
format: str
verbose: Optional[bool] = False
callback: Optional[str] = None
token: Optional[str] = None

def get_output_type(self) -> OutputType:
"""
Returns the output type of the API call.
"""
if self.callback is not None:
return OutputType.STRING
return OutputType.JSON
32 changes: 32 additions & 0 deletions hvpy/api_groups/movies/re_queue_movie.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from typing import Optional

from hvpy.io import HvpyParameters, OutputType


class reQueueMovieInputParameters(HvpyParameters):
"""
Handles the input parameters of the ``reQueueMovie`` API.
Comment thread
nabobalis marked this conversation as resolved.

Attributes
----------
{Shared}
id
Unique movie identifier, returned as a response by the ``queueMovie`` endpoint request.
force
Boolean to force the re-queueing of the movie.
Defaults to `False`, optional.

References
----------
* `<https://api.helioviewer.org/docs/v2/api/api_groups/movies.html#id2>`__
{Shared}
"""

id: str
force: Optional[bool] = False

def get_output_type(self) -> OutputType:
"""
Returns the output type of the API call.
"""
return OutputType.JSON
48 changes: 48 additions & 0 deletions hvpy/api_groups/movies/tests/test_get_movie_status.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import pytest

from hvpy import getMovieStatus
from hvpy.api_groups.movies.get_movie_status import getMovieStatusInputParameters


def test_json_response():
response = getMovieStatus(
id="VXvX5",
format="mp4",
)
assert response["url"] is not None
assert response["status"] is not None


def test_str_response():
response = getMovieStatus(
id="VXvX5",
format="mp4",
callback="myCallback",
)
assert response.startswith("myCallback(")


def test_error_hanpytestdling():
with pytest.raises(TypeError, match="missing 1 required positional argument: 'id'"):
getMovieStatus(
format="mp4",
verbose=False,
callback=None,
token=None,
)

with pytest.raises(TypeError, match="missing 1 required positional argument: 'format'"):
getMovieStatus(
id="VXvX5",
verbose=False,
callback=None,
token=None,
)


def test_url_property():
params = getMovieStatusInputParameters(
id="VXvX5",
format="mp4",
)
assert params.url == "https://api.helioviewer.org/v2/getMovieStatus/"
22 changes: 22 additions & 0 deletions hvpy/api_groups/movies/tests/test_re_queue_movie.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import pytest

from hvpy import reQueueMovie
from hvpy.api_groups.movies.re_queue_movie import reQueueMovieInputParameters


def test_json_response():
response = reQueueMovie(id="gxRN5", force=True)
assert response["id"] is not None
assert response["eta"] is not None
assert response["queue"] is not None
assert response["token"] is not None


def test_error_handling():
with pytest.raises(TypeError, match="missing 1 required positional argument: 'id'"):
reQueueMovie()


def test_url_property():
params = reQueueMovieInputParameters(id="gxRN5")
assert params.url == "https://api.helioviewer.org/v2/reQueueMovie/"
56 changes: 56 additions & 0 deletions hvpy/facade.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
"takeScreenshot",
"downloadScreenshot",
"queueMovie",
"reQueueMovie",
"getMovieStatus",
]


Expand Down Expand Up @@ -382,3 +384,57 @@ def queueMovie(
reqObservationDate=reqObservationDate,
)
return execute_api_call(input_parameters=params)


@add_shared_docstring(reQueueMovieInputParameters)
def reQueueMovie(
id: str,
force: Optional[bool] = False,
) -> Union[bytes, str, Dict[str, Any]]:
"""
Re-generate a custom movie that is no longer cached on the server.

Parameters
----------
{Insert}
Examples
--------
>>> from hvpy import reQueueMovie
>>> reQueueMovie(id="gxRN5", force=True)
{'id': 'gxRN5', 'eta': 274, 'queue': 0, 'token': '...'}
Comment thread
nabobalis marked this conversation as resolved.
"""
params = reQueueMovieInputParameters(
id=id,
force=force,
)
return execute_api_call(input_parameters=params)


@add_shared_docstring(getMovieStatusInputParameters)
def getMovieStatus(
id: str,
format: str,
verbose: Optional[bool] = False,
callback: Optional[str] = None,
token: Optional[str] = None,
) -> Union[bytes, str, Dict[str, Any]]:
"""
Get the status of a movie.

Parameters
----------
{Insert}
Examples
--------
>>> from hvpy import getMovieStatus
>>> getMovieStatus(id="VXvX5", format="mp4")
Comment thread
nabobalis marked this conversation as resolved.
{'frameRate': 15, 'numFrames': 300, 'startDate': '2014-02-03 20:26:16', 'status': 2, 'endDate': '2014-02-05 20:16:40', 'width': 846, 'height': 820, 'title': 'SDO AIA 1600 (2014-02-03 20:26:16 - 20:16:40 UTC)', 'thumbnails': {'icon': '...', 'small': '...', 'medium': '...', 'large': '...', 'full': '...'}, 'url': '...', 'statusLabel': 'Completed'}
"""
params = getMovieStatusInputParameters(
id=id,
format=format,
verbose=verbose,
callback=callback,
token=token,
)
return execute_api_call(input_parameters=params)
4 changes: 4 additions & 0 deletions hvpy/parameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
from hvpy.api_groups.jpeg2000.get_jpx import getJPXInputParameters
from hvpy.api_groups.jpeg2000.get_jpx_closest_to_mid_point import getJPXClosestToMidPointInputParameters
from hvpy.api_groups.jpeg2000.get_status import getStatusInputParameters
from hvpy.api_groups.movies.get_movie_status import getMovieStatusInputParameters
from hvpy.api_groups.movies.queue_movie import queueMovieInputParameters
from hvpy.api_groups.movies.re_queue_movie import reQueueMovieInputParameters
from hvpy.api_groups.official_clients.get_closest_image import getClosestImageInputParameters
from hvpy.api_groups.official_clients.get_data_sources import getDataSourcesInputParameters
from hvpy.api_groups.screenshots.download_screenshot import downloadScreenshotInputParameters
Expand All @@ -20,4 +22,6 @@
"takeScreenshotInputParameters",
"downloadScreenshotInputParameters",
"queueMovieInputParameters",
"reQueueMovieInputParameters",
"getMovieStatusInputParameters",
]