
    %fjp                        d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ g d	Zd
dhZddZdddZddddZ  e             Z!dS )    )annotationsN)urlparse)FastAPIRequest)CORSMiddleware)JSONResponse)budgetcashcryptocrypto_traderequityhealthmarketoverview	positionsreportssystem)WRITE_METHODSis_write_request_allowedresolve_write_mode)zhttp://localhost:5173zhttp://127.0.0.1:5173zhttp://100.85.29.67:5173z#http://agent.tailbd371b.ts.net:5173zhttp://localhost:8503zhttp://127.0.0.1:8503z /api/portfolio/ingestion/previewz/api/portfolio/policy/previeworiginstrreturnboolc                    t          |           }|j        dk    s|j        r|j        sdS |j                                        }|dv rdS |                    d          rdS |                    d          rdS dS )NhttpF>   	127.0.0.1	localhostTz100.z.ts.net)r   schemehostnameportlower
startswithendswith)r   parsedr    s      f/home/agent/.hermes/worktrees/FinanceManager-sprint10-portfolio-go-live/src/jarvis_finance/api/main.py_is_safe_local_originr'      s    fF}foV[u$$&&H---t6"" t## t5    environdict[str, str] | None	list[str]c                D   | pt           j        }t          t                    }|                    dd                              d          D ]S}|                                                    d          }|r(t          |          r||vr|	                    |           T|S )NJARVIS_FINANCE_CORS_ORIGINS ,/)
osr)   listLOCAL_ORIGINSgetsplitstriprstripr'   append)r)   envorigins
raw_originr   s        r&   build_local_originsr<   &   s    

RZC=!!Ggg;R@@FFsKK # #
!!##**3// 	#+F33 	#g8M8MNN6"""Nr(   )
write_moder=   
str | Noner   c                >   t          |           t          ddd          }|                    t          t	                      ddk    rddgng d	d
g           |                    d          dfd            }|j        _        t          j	        t          j	        t          j	        t          j	        t          j	        t          j	        t          j	        t           j	        t"          j	        t$          j	        t&          j	        fD ]}|                    |d           |S )NzJARVIS Finance APIz0.1.0z@Read-only FastAPI v0 skeleton for the future Vue User Dashboard.)titleversiondescriptionFdisabledGETPOST)rD   rE   PUTPATCHDELETE*)allow_originsallow_credentialsallow_methodsallow_headersr   requestr   c                   K   | j         dk    o| j        j        t          v }| j         t          v r%|s#t          |           st          dddi          S  ||            d {V S )NrE   i  detailwrite_operations_disabled)status_codecontent)methodurlpathREAD_ONLY_POST_PATHSr   r   r   )rN   	call_nextread_only_postactive_write_modes      r&   block_untrusted_writesz*create_app.<locals>.block_untrusted_writes?   s       61^gk6FJ^6^>]**>*Jbcjl}J~J~*C(D_9`aaaaYw'''''''''r(   z/api)prefix)rN   r   )r   r   add_middlewarer   r<   
middlewarestater=   r   routerr   r   r   r   r
   r   r   r	   r   r   include_router)r=   appr[   r`   rZ   s       @r&   
create_apprc   0   sS   *:66
"V  C
 )++):j)H)HufooNwNwNwe     	^^F( ( ( ( ( ( -CI=(/6=-BVX^Xegkgrt{  uC  EN  EU  W]  Wd  fl  fs  u{  uB  C 2 26&1111Jr(   )r   r   r   r   )N)r)   r*   r   r+   )r=   r>   r   r   )"
__future__r   r1   urllib.parser   fastapir   r   fastapi.middleware.corsr   fastapi.responsesr   jarvis_finance.api.routersr	   r
   r   r   r   r   r   r   r   r   r   jarvis_finance.api.securityr   r   r   r3   rW   r'   r<   rc   rb    r(   r&   <module>rl      s   " " " " " " 				 ! ! ! ! ! ! $ $ $ $ $ $ $ $ 2 2 2 2 2 2 * * * * * * I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I  I c c c c c c c c c c   ;<[\         ,0      8 jllr(   