o
    i                     @  sH   d Z ddlmZ ddlmZ edddG dd dZG dd	 d	Zd
S )zMap external platform routes to existing app modules.

This router keeps app resolution outside ``/apps`` so the existing applications
do not need tenant-awareness or gateway-specific code.
    )annotations)	dataclassT)frozenslotsc                   @  s6   e Zd ZU dZded< ded< ded< dZded< dS )	AppRoutez+A platform route entry for an existing app.strapp_idimport_path
url_prefix descriptionN)__name__
__module____qualname____doc____annotations__r    r   r   platform/routing/app_router.pyr      s   
 r   c                   @  s.   e Zd ZdZdddZdd	d
ZdddZdS )	AppRouterzDRoute ``/api/v1/{app}/{action}`` requests to registered app modules.returnNonec              	   C  sH   t dddt dddt ddd	t d
ddt dddt dddd| _d S )Nwp_invoiceszapps.wp_invoicesz/api/v1/wp_invoiceswp_invoices_mail_appzapps.wp_invoices_mail_appz/api/v1/wp_invoices_mail_apparoflo_connector_appzapps.aroflo_connector_appz/api/v1/aroflo_connector_appleave_form_appzapps.leave_form_appz/api/v1/leave_form_appabn_lookup_appzapps.abn_lookup_appz/api/v1/abn_lookup_appvoiceordering_appzapps.voiceordering_appz/api/v1/voiceordering_app)r   r   r   r   r   r   )r   routes)selfr   r   r   __init__   s   





zAppRouter.__init__pathr   
str | Nonec                 C  sH   dd |pd dD }t|dkr"|d dkr"|d d	kr"|d
 S d S )Nc                 S  s   g | ]}|r|qS r   r   ).0partr   r   r   
<listcomp>$   s    z,AppRouter.resolve_app_id.<locals>.<listcomp>r   /   r   api   v1   )splitlen)r   r    partsr   r   r   resolve_app_id#   s   $zAppRouter.resolve_app_idr   AppRoute | Nonec                 C  s   | j |S )N)r   get)r   r   r   r   r   	get_route)   s   zAppRouter.get_routeN)r   r   )r    r   r   r!   )r   r   r   r/   )r   r   r   r   r   r.   r1   r   r   r   r   r      s
    


r   N)r   
__future__r   dataclassesr   r   r   r   r   r   r   <module>   s    
	