Ë
    îòºiŽ  ã                   óL   — d dl Z d dlZ ej                  e«      Z G d„ d«      Zy)é    Nc                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚJamfAPIc                 óT   — |r|j                  d«      nd| _        || _        || _        y )Nú/Ú )ÚrstripÚbase_urlÚ	client_idÚclient_secret)ÚselfÚurlr
   r   s       ú!/var/www/aura-ras/api/jamf_api.pyÚ__init__zJamfAPI.__init__   s$   € Ù+.˜Ÿ
™
 3œ°BˆŒØ"ˆŒØ*ˆÕó    c                 óH  — | j                   r| j                  r| j                  st        d«      ‚| j                   › d�}| j                  | j                  ddœ}ddi}t	        j
                  |||¬«      }|j                  «        |j                  «       j                  d«      S )	z;Requests an OAuth Bearer token using API Client Credentialsz<Jamf Integration is not fully configured in Global Settings.z/api/oauth/tokenÚclient_credentials)r
   r   Ú
grant_typezContent-Typez!application/x-www-form-urlencoded)ÚdataÚheadersÚaccess_token)	r	   r
   r   Ú
ValueErrorÚrequestsÚpostÚraise_for_statusÚjsonÚget)r   Úauth_urlÚpayloadr   Úresponses        r   Ú
_get_tokenzJamfAPI._get_token   s�   € à�}Š} D§N¢N¸$×:LÒ:LÜÐ[Ó\Ð\à—m‘m�_Ð$4Ð5ˆàŸ™Ø!×/Ñ/Ø.ñ
ˆð
 "Ð#FÐGˆä—=‘= °ÀÔIˆØ×!Ñ!Ô#Ø�}‰}‹×"Ñ" >Ó2Ð2r   c                 ó  — | j                  «       }| j                  › d|› �}d|› �ddœ}t        j                  ||¬«      }|j	                  «        |j                  «       }|j                  di «      j                  d«      S )zEFetches the unique Jamf Pro API Management ID for a specific computerz#/api/v1/computers-inventory-detail/úBearer úapplication/json©ÚAuthorizationÚAccept©r   ÚgeneralÚmanagementId©r    r	   r   r   r   r   )r   ÚjssidÚtokenr   r   r   r   s          r   Úget_management_idzJamfAPI.get_management_id   sx   € à—‘Ó!ˆØ—‘�ÐBÀ5À'ÐJˆØ&-¨e¨WÐ$5ÐASÑTˆä—<‘< ¨WÔ5ˆØ×!Ñ!Ô#Ø�}‰}‹ˆØ�x‰x˜	 2Ó&×*Ñ*¨>Ó:Ð:r   c                 ó:  — |sg S | j                  «       }| j                  › d|› d�}d|› �ddœ}	 t        j                  ||¬«      }|j                  dk(  r |j                  «       j                  dg «      S g S # t        j                  j                  $ r g cY S w xY w)	z2Fetches all configured LAPS accounts from Jamf Proú/api/v2/local-admin-password/z	/accountsr"   r#   r$   r'   éÈ   Úresults)r    r	   r   r   Ústatus_coder   Ú
exceptionsÚRequestException)r   Úmanagement_idr,   r   r   r   s         r   Úget_laps_accountszJamfAPI.get_laps_accounts(   s    € áØˆIØ—‘Ó!ˆØ—‘�Ð<¸]¸OÈ9ÐUˆØ&-¨e¨WÐ$5ÐASÑTˆð	Ü—|‘| C°Ô9ˆHØ×#Ñ# sÒ*Ø—}‘}“×*Ñ*¨9°bÓ9Ð9ØˆIøÜ×"Ñ"×3Ñ3ò 	ØŠIð	ús   °AA8 Á6A8 Á8BÂBc                 óè   — | j                  «       }| j                  › d|› d|› d�}d|› �ddœ}t        j                  ||¬«      }|j	                  «        |j                  «       j                  d«      S )	zRTriggers a viewing event and fetches the LAPS password for a specific account guidr/   z	/account/z	/passwordr"   r#   r$   r'   Úpasswordr*   )r   r5   Úguidr,   r   r   r   s          r   Úget_laps_passwordzJamfAPI.get_laps_password8   ss   € à—‘Ó!ˆØ—‘�Ð<¸]¸OÈ9ÐUYÐTZÐZcÐdˆØ&-¨e¨WÐ$5ÐASÑTˆä—<‘< ¨WÔ5ˆØ×!Ñ!Ô#Ø�}‰}‹×"Ñ" :Ó.Ð.r   c                 óÎ  — | j                  «       }| j                  › d|› �}d|› �ddœ}	 t        j                  ||¬«      }|j	                  «        |j                  «       j                  di «      j                  dg «      }|D ];  }t        |j                  d«      «      t        |«      k(  sŒ*|j                  d	«      c S  	 y
# t        j                  j                  $ r Y y
w xY w)zQFetches the macOSLAPS password stored in an Extension Attribute using Classic APIz/JSSResource/computers/id/r"   r#   r$   r'   ÚcomputerÚextension_attributesÚidÚvalueN)	r    r	   r   r   r   r   Ústrr3   r4   )	r   r+   Úea_idr,   r   r   r   ÚeasÚeas	            r   Úget_extension_attributezJamfAPI.get_extension_attributeB   sØ   € à—‘Ó!ˆØ—‘�Ð9¸%¸ÐAˆØ&-¨e¨WÐ$5ÐASÑTˆð		Ü—|‘| C°Ô9ˆHØ×%Ñ%Ô'à—-‘-“/×%Ñ% j°"Ó5×9Ñ9Ð:PÐRTÓUˆCØò +�Ü�r—v‘v˜d“|Ó$¬¨E«
Ó2ØŸ6™6 '›?Ò*ñ+ð
 øô ×"Ñ"×3Ñ3ò 	Ùð	ús   «BC Â.C ÃC ÃC$Ã#C$N)	Ú__name__Ú
__module__Ú__qualname__r   r    r-   r6   r:   rD   © r   r   r   r      s    „ ò+ò
3ò"	;òò /ór   r   )r   ÚloggingÚ	getLoggerrE   Úloggerr   rH   r   r   ú<module>rL      s)   ðÛ Û à	ˆ×	Ñ	˜8Ó	$€÷Lò Lr   