
    Ai                        d dl mZ d dlZd dlmZ d dlmZ d dlZd dlm	Z	 d dl
mZ d dlmZ dZdd	Z ed
      dd       ZddZddZdd	 	 	 	 	 	 	 ddZy)    )annotationsN)	lru_cache)Path)Request)service_account)get_settingsz.https://www.googleapis.com/auth/cloud-platformc                     t               } | j                  xs dj                         }t        | j                  xr+ | j
                  xr |xr t        |      j                               S )N )r   'google_document_ai_service_account_filestripboolgoogle_document_ai_project_id#google_document_ai_ocr_processor_idr   exists)settingsservice_account_files     A/var/www/html/apps/backend-hub/app/services/google_document_ai.py is_google_document_ai_configuredr      si    ~H$LLRPRYY[.. 	088	0 	0 %&--/	        )maxsizec                N    t         j                  j                  | t        g      S )N)scopes)r   Credentialsfrom_service_account_fileGOOGLE_DOCUMENT_AI_SCOPE)r   s    r   _load_document_ai_credentialsr      s*    &&@@() A  r   c                 B   t               } | j                  xs dj                         }|st        d      t	        |      }|j
                  r|j                  s|j                  s|j                  t                      |j                  st        d      |j                  S )Nr
   z6Document AI non configurato: service account mancante.z5Document AI non ha restituito un access token valido.)
r   r   r   RuntimeErrorr   validexpiredtokenrefreshr   )r   r   credentialss      r   _get_document_ai_access_tokenr%   $   s    ~H$LLRPRYY[STT/0DEK 3 3;;L;LGI&RSSr   c                    |xs dj                         j                         }d}|r|dk7  rd| d}| d|  d| d| d	S )
Neuz$https://documentai.googleapis.com/v1uszhttps://z-documentai.googleapis.com/v1z
/projects/z/locations/z/processors/z:process)r   lower)
project_idlocationprocessor_idnormalized_locationhosts        r   _document_ai_process_endpointr/   1   sf    #+t224::<1D2d:-..KL&
:,k2E1FlS_R``hir   )r,   c                v   | r
t               sy t               }|j                  xs dj                         }|j                  xs dj                         j                         xs d}|xs |j                  xs dj                         }|r|sy t               }t        |||      }d|t        j                  |       j                  d      dd}	t        j                  |j                        5 }
|
j                  |d	| d
d|	      }|j!                          |j#                         }d d d        t%        t&              r|j)                  d      ni }t%        |t&              r,t+        |j)                  d      xs d      j                         nd}|sy |t%        |t&              r|ni ||dS # 1 sw Y   xY w)Nr
   r'   )r*   r+   r,   Tascii)mimeTypecontent)skipHumanReviewrawDocument)timeoutzBearer zapplication/json)AuthorizationzContent-Type)headersjsondocumenttext)r;   r:   r,   r+   )r   r   r   r   google_document_ai_locationr)   r   r%   r/   base64	b64encodedecodehttpxClient*google_document_ai_request_timeout_secondspostraise_for_statusr9   
isinstancedictgetstr)	raw_bytes	mime_typer,   r   r*   r+   selected_processor_idaccess_tokenendpointpayloadclientresponseparsedr:   r;   s                  r   !process_document_with_document_airR   ;   s    <>~H88>BEEGJ44<CCEKKMUQUH)_X-Y-Y_]_ffh202L,*H  !''	299'B
G 
hQQ	R 
!V\;;#*<.!9 2   
 	!!#
! *4FD)Avzz*%rH6@46P3x||F#)r*002VXD *8T :H-	 !
! 
!s   /;F//F8)returnr   )r   rH   rS   zservice_account.Credentials)rS   rH   )r*   rH   r+   rH   r,   rH   rS   rH   )rI   bytesrJ   rH   r,   z
str | NonerS   zdict[str, object] | None)
__future__r   r=   	functoolsr   pathlibr   r@   google.auth.transport.requestsr   google.oauth2r   app.core.configr   r   r   r   r%   r/   rR    r   r   <module>r\      s~    "     2 ) ( L  1 
  $	33 3 	3
 3r   