o
    Gf                     @   s  d dl Z d dlZd dlZd dlZd dlmZ ejdd Z	dd Z
dd Zdd	 Zd%ddZejde dd Zejjejde	dd Zejjejdejdd Zejjejdejdd Zejjdd Zejjejdejdd Zejjejdejdd Zejjejdejdd Zejjejdejdd  Zejjejdej d!d" Z!ejjejdej"d#d$ Z#dS )&    NF)requires_tokenc                 C   sB   dD ]}|| v s
J q| j dsJ dD ]	}|| j v sJ qd S )N)attributionnamehttp)z{z}z{y}z{x})url
startswith)providerkeyoption r   l/home/deployuser/azure_apps/autowriter/venv/lib/python3.10/site-packages/xyzservices/tests/test_providers.pycheck_provider   s   r   c           	      C   s   |  dddgddgg}|d d |d d  d }|d d |d d  d }|  d	d|  d
d d }t|||}|j}|j}|j}|||fS )NboundsiLi   Z   r         min_zoommax_zoom   )get
mercantiletilezxy)	r   r   latlonzoomr   r   r   r   r   r   r   get_tile   s   
r   c                 C   sh   t  }t jjdd}|d| |d| z|j| dd}W |j	S  t jy3   td Y |j	S w )N   )max_retrieszhttp://zhttps://   )timeoutzTimeout.)
requestsSessionadaptersHTTPAdaptermountr   ConnectionErrorpytestxfailstatus_code)r   sarr   r   r   get_response    s   r0   Tc           	   
   C   s"  |  dr
td t| \}}}zt| j|||d}|tjjks$J W d S  t	y   |dkr;|r;td Y d S |dkrGtd Y d S |dkrStd	 Y d S |d
krg d}g }|D ]}|\}}}t| j|||d}|
| q_tdd |D std| Y d S td| w )NstatuszProvider is known to be broken.)r   r   r   i  z;Provider not available due to API restrictions (Error 403).i  z,Service temporarily unavailable (Error 503).i  zBad Gateway (Error 502).i  ))   ij  iS  )         )   i}  iY  )r   r   r   )r   r3      )r3   r5      )r3   r5       )r3   r5   !   )r3      r8   )r3   r;   r9   )r3   r;   r:   )r3      r8   )r3   r<   r9   )r3   r<   r:   )	   i     )r2   i  i  c                 s   s    | ]	}|t jjkV  qd S N)r$   codesok).0r   r   r   r   	<genexpr>Y   s    z"get_test_result.<locals>.<genexpr>zResponse code: )r   r*   r+   r   r0   	build_urlr$   r@   rA   AssertionErrorappendany
ValueError)	r   	allow_403r   r   r   r/   optionsresultsor   r   r   get_test_result,   s2   


rM   provider_namec                 C   s   t  |  }t| d S r?   )xyzflattenr   )rN   r   r   r   r   test_minimal_provider_metadata_   s   rQ   r   c                 C   s&   t |  }d| v rtd t| d S )NStadiaz1Stadia doesn't support tile download in this way.)	flat_freer*   skiprM   )r   r   r   r   r   test_free_providerse   s   
rU   c                 C   ^   zt jd }W n ty   td Y nw |dkrtd tj|  |d}t|dd d S )NTHUNDERFORESTMissing API token. Token empty.apikeyFrI   )osenvironKeyErrorr*   r+   rO   ThunderforestrM   rN   tokenr   r   r   r   test_thunderforests      
rd   c                 C   rV   )NJAWGrX   rY   rZ   accessTokenFr]   )r^   r_   r`   r*   r+   rO   JawgrM   rb   r   r   r   	test_jawg   re   rj   c                  C   sZ   zt jd } W n ty   td Y nw | dkrtd tj| d}t|dd d S )NMAPBOXrX   rY   rZ   rg   Fr]   )r^   r_   r`   r*   r+   rO   MapBoxrM   )rc   r   r   r   r   test_mapbox   s   
rm   c                 C   rV   )NMAPTILERrX   rY   rZ   r	   Fr]   )r^   r_   r`   r*   r+   rO   MapTilerrM   rb   r   r   r   test_maptiler   re   rq   c                 C   rV   )NTOMTOMrX   rY   rZ   r[   Fr]   )r^   r_   r`   r*   r+   rO   TomTomrM   rb   r   r   r   test_tomtom   re   rt   c                 C   rV   )NOPENWEATHERMAPrX   rY   rZ   apiKeyFr]   )r^   r_   r`   r*   r+   rO   OpenWeatherMaprM   rb   r   r   r   test_openweathermap   re   ry   c                 C   rV   )NHEREV3rX   rY   rZ   rv   Fr]   )r^   r_   r`   r*   r+   rO   HEREv3rM   rb   r   r   r   test_herev3   re   r|   c                 C   sn   zt jd }W n ty   td Y nw |dkrtd tj|  |d}|d d |d< t|dd	 d S )
NSTADIArX   rY   rZ   )api_keyr   z?api_key={api_key}Fr]   )r^   r_   r`   r*   r+   rO   rR   rM   rb   r   r   r   test_stadia   s   
r   c                 C   rV   )NORDNANCESURVEYrX   rY   rZ   ro   Fr]   )r^   r_   r`   r*   r+   rO   OrdnanceSurveyrM   rb   r   r   r   test_os   re   r   )T)$r^   r   r*   r$   xyzservices.providers	providersrO   filterrP   rS   r   r   r0   rM   markparametrizerQ   requestrU   ra   rd   ri   rj   rm   rp   rq   rs   rt   rx   ry   r{   r|   rR   r   r   r   r   r   r   r   <module>   sR    
3

