U
    ô‰Vb  ã                   @   sÚ   d Z dZdZddlmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZ dd	lmZ zdd
lmZmZ dZW n6 ek
r¦   ddlmZmZ dZedœdd„ZY nX ddlmZ eeedœdd„ZG dd„ deƒZdS )zCopyright 2022, 3LizzGPL version 3zinfo@3liz.orgé    )ÚUnion)ÚQgis©ÚQRegularExpression)ÚQgsServerOgcApiÚQgsServerOgcApiHandler)ÚServiceError)Úcheck_environment_variable)Úplugin_listÚplugin_metadataT)ÚpluginMetadataÚserver_active_pluginsF©Úreturnc                   C   s   t S )z To match Py-QGIS-Server API.)r   © r   r   ú=/var/qgis-server/plugins/lizmap/server/server_info_handler.pyr
      s    r
   )Úto_bool)ÚnameÚkeyr   c                 C   s>   d}t r t| ƒ}|d  ||¡S t| |ƒ}|dkr6|S |S dS )z( Return the version for a given plugin. ÚunknownÚgeneral)Ú	__error__Ú N)ÚIS_PY_QGIS_SERVERr   Úgetr   )r   r   r   ÚmetadataÚvaluer   r   r   Úplugin_metadata_key   s    
r   c                   @   sb   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	e
def dœdd„Zdd„ ZdS )ÚServerInfoHandlerc                 C   s   t dƒS )Nzserver.jsonr   ©Úselfr   r   r   Úpath.   s    zServerInfoHandler.pathc                 C   s   dS )NzServer informationr   r   r   r   r   Úsummary1   s    zServerInfoHandler.summaryc                 C   s   dS )Nz&Get info about the current QGIS serverr   r   r   r   r   Údescription4   s    zServerInfoHandler.descriptionc                 C   s   dS )NÚserverr   r   r   r   r   ÚoperationId7   s    zServerInfoHandler.operationIdc                 C   s   dS )NzHandler Lizmap API server infor   r   r   r   r   Ú	linkTitle:   s    zServerInfoHandler.linkTitlec                 C   s   t jS )N)r   Údatar   r   r   r   ÚlinkType=   s    zServerInfoHandler.linkTypec                 C   s  t ƒ stdddƒ‚d}tƒ }tƒ D ]*}tƒ ||< |D ]}t||ƒ|| |< q4q"d}|D ]}|| ¡ krVddi||< qVtj d¡}g }	d	}
|
D ] }| 	¡  
¡  |¡rŒ|	 |¡ qŒtjd
krÎt ¡ dkrÎt ¡ }nd}d|d |d |tjtdœ|	|dœi}|  ||¡ d S )NzBad request errorzInvalid requesti”  )ÚversionZcommitNumberZ
commitSha1ZdateTime)ÚwfsOutputExtensionZcadastreÚlizmapÚ
atlasprintr)   z	not foundú-)ÚWMSÚWFSÚWCSÚWMTSÚATLASÚCADASTREÚ
EXPRESSIONÚLIZMAPiày  Zexportedr   Zqgis_serverr   é   )r)   r   Ú	commit_idÚversion_intZpy_qgis_server)r   ÚservicesÚplugins)r	   r   Údictr
   r   Úkeysr   ÚQGIS_VERSIONÚsplitÚserverInterfaceÚserviceRegistryÚ
getServiceÚappendÚQGIS_VERSION_INTÚ
devVersionr   Úwrite)r    Úcontextr<   r:   Úpluginr   Zexpected_listZexpectedÚqgis_version_splitZservices_availableZexpected_servicesÚservicer7   r'   r   r   r   ÚhandleRequest@   sB    



ûöÿzServerInfoHandler.handleRequestNr   c                 C   s<   |   ¡  ¡ }| ¡ }t| d¡ƒs&dS | ¡ }| d¡dk	S )zõ Check if this QGIS Server supports custom headers.

         Returns None if the check is not requested with the GET parameter CHECK_CUSTOM_HEADERS

         If requested, returns boolean if X-Check-Custom-Headers is found in headers.
         ÚCHECK_CUSTOM_HEADERSNzX-Check-Custom-Headers)ÚserverIfaceÚrequestHandlerÚparameterMapr   r   ÚrequestHeaders)r    ÚhandlerÚparamsÚheadersr   r   r   Úsupport_custom_headersv   s    z(ServerInfoHandler.support_custom_headersc                 C   s    ddl m} |dd|jjdƒgS )Nr   )ÚQgsServerQueryStringParameterrK   FzIf we check custom headers)Úqgis.serverrT   ÚTypeÚString)r    rF   rT   r   r   r   Ú
parameters†   s    üÿzServerInfoHandler.parameters)Ú__name__Ú
__module__Ú__qualname__r!   r"   r#   r%   r&   r(   rJ   r   ÚboolrS   rX   r   r   r   r   r   ,   s   6r   N)Ú__copyright__Ú__license__Ú	__email__Útypingr   Ú	qgis.corer   Zqgis.PyQt.QtCorer   rU   r   r   Úlizmap.server.exceptionr   Úlizmap.server.toolsr	   Zpyqgisserver.pluginsr
   r   r   ÚImportErrorÚ
qgis.utilsr   r   Úlistr   Ústrr   r   r   r   r   r   Ú<module>   s$   