Source code for pyrfu.mms.list_files_ancillary_sdc

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Built-in imports
import warnings
from datetime import datetime, timedelta

# 3rd party imports
import numpy as np

# Local imports
from .list_files_sdc import _login_lasp

__author__ = "Louis Richard"
__email__ = "louisr@irfu.se"
__copyright__ = "Copyright 2020-2023"
__license__ = "MIT"
__version__ = "2.4.11"
__status__ = "Prototype"


def _construct_url_json_list(tint, mms_id, product, lasp_url):
    r"""Construct the url that return a json-formatted string of science
    filenames that are available for download according to:
    https://lasp.colorado.edu/mms/sdc/team/about/how-to/
    """

    tint = np.array(tint).astype("<M8[ns]").astype(str)
    tint = [datetime.strptime(t_[:-3], "%Y-%m-%dT%H:%M:%S.%f") for t_ in tint]
    start_date = (tint[0] - timedelta(days=1)).strftime("%Y-%m-%d")
    end_date = (tint[1] + timedelta(days=1)).strftime("%Y-%m-%d")

    url = f"{lasp_url}/file_info/ancillary"
    url = f"{url}?start_date={start_date}&end_date={end_date}&sc_id=mms{mms_id}"

    url = f"{url}&product={product}"

    return url


def _make_urls_ancillaries(lasp_url, files):
    for file in files:
        file["url"] = f"{lasp_url}download/ancillary?file={file['file_name']}"

    return files


[docs]def list_files_ancillary_sdc(tint, mms_id, product): r"""Find available ancillary files from LASP SDC for the target product type. Parameters ---------- tint : list of str Time interval mms_id : str or int Spacecraft index product : {"predatt", "predeph", "defatt", "defeph"} Ancillary type. Returns ------- file_names : list Ancillary files in interval. """ sdc_session, headers, lasp_url = _login_lasp() url_json_ancillaries = _construct_url_json_list(tint, mms_id, product, lasp_url) with warnings.catch_warnings(): warnings.simplefilter("ignore", category=ResourceWarning) response = sdc_session.get(url_json_ancillaries, verify=True, headers=headers) response.raise_for_status() # Raise an HTTPError for bad responses http_json = response.json() file_names = http_json["files"] sdc_session.close() file_names = _make_urls_ancillaries(lasp_url, file_names) return file_names