B
    d                 @   s   d Z ddlmZ ddlmZ dZdZdd Zedd	 Zed
d Z	edddZ
edd Zedd Zedd ZedddZdS )zAPI URL implementation for GWDataFind.

The functions in this module return URL paths to request on a given host
to execute various GWDataFind queries.
    )wraps)basenamez(Duncan Macleod <duncan.macleod@ligo.org>zLDR/services/data/v1c                s   t   fdd}|S )zzWrap ``func`` to prepend the path prefix automatically.

    This just simplifies the functional constructions below.
    c                 s"   | dt} | |}d||S )Nprefixz{}/{})popDEFAULT_SERVICE_PREFIXformat)argskwargsr   suffix)func [/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/gwdatafind/api.pywrapped%   s    
z_prefix.<locals>.wrapped)r   )r   r   r   )r   r   _prefix    s    r   c               C   s   dS )z,Return the API path to ping the server.
    zgwf/H/R/1,2r   r   r   r   r   	ping_path.   s    r   c               C   s   dS )z8Return the API path to query for all observatories.
    zgwf.jsonr   r   r   r   r   find_observatories_path5   s    r   Nc             C   s   | rdj | dS dS )zDReturn the API path to query for datasets for one or all sites.
    zgwf/{site[0]}.json)sitezgwf/all.json)r   )r   r   r   r   find_types_path<   s    r   c             C   s0   |dkr|dkrdj | |dS dj | |||dS )zAReturn the API path to query for data availability segments.
    Nzgwf/{site}/{type}/segments.json)r   typez-gwf/{site}/{type}/segments/{start},{end}.json)r   r   startend)r   )r   	frametyper   r   r   r   r   find_times_pathE   s    r   c             C   s*   t | }|dd\}}}dj|||dS )zEReturn the API path to query for the URL of a specific filename.
    -   z!gwf/{site}/{type}/{filename}.json)r   r   filename)r   splitr   )Z	framefiler   r   r   _r   r   r   find_url_pathV   s    r   c             C   s(   dj | |d}|r dj ||dS |d S )zCReturn the API path to query for the latest file in a dataset.
    zgwf/{site}/{type}/latest)r   r   z{stub}/{urltype}.json)stuburltypez.json)r   )r   r   r    r   r   r   r   find_latest_pathc   s    r!   c             C   sD   dj | |||d}|r&dj ||d}n|d }|r@|d |7 }|S )zLReturn the API path to query for all URLs for a dataset in an interval.
    zgwf/{site}/{type}/{start},{end})r   r   r   r   z{stub}/{urltype}.json)r   r    z.jsonz
?match={0})r   )r   r   r   r   r    matchr   pathr   r   r   find_urls_pathp   s    r$   )N)NN)__doc__	functoolsr   os.pathr   
__author__r   r   r   r   r   r   r   r!   r$   r   r   r   r   <module>   s   