
    PIi!                     <    d dl mZ d dlZd dlZd dlZ G d d      Zy)    )FacebookBadObjectErrorNc                   z    e Zd Z G d de      Ze	 	 	 	 d
d       Zedd       Z	 	 	 	 d
dZ	 	 	 	 d
dZ	d Z
d	 Zy)CustomAudienceMixinc                   2    e Zd ZdZdZdZdZ G d de      Zy)CustomAudienceMixin.SchemaUIDEMAIL_SHA256PHONE_SHA256MOBILE_ADVERTISER_IDc                   L    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZy))CustomAudienceMixin.Schema.MultiKeySchema	EXTERN_IDEMAILPHONEGENDOBYDOBMDOBDLNFNFICTSTZIPMADIDCOUNTRYAPPUIDN)__name__
__module____qualname__	extern_idemailphonegendobydobmdobdlnfnfictstzipmadidcountryappuid     /var/www/webhook.estador.de/web/meta/bot/venv/lib/python3.12/site-packages/facebook_business/adobjects/helpers/customaudiencemixin.pyMultiKeySchemar      sR    #IEECDDDBBBBBCEGFr2   r4   N)	r   r   r    uid
email_hash
phone_hashmobile_advertiser_idobjectr4   r1   r2   r3   Schemar      s#    #
#
5	V 	r2   r:   Nc                    g }|| j                   j                  | j                   j                  | j                   j                  fv r|D ]  }|| j                   j                  k(  r|j	                  d      j                         }t        |t        j                        r,|s*|| j                   j                  k7  r|j                  d      }|s|| j                   j                  k(  r|j                  |       |j                  t        j                  |      j                                 n@t        |t              r/|st        d      |D ]  }t!        |      t!        |      k7  rt        d      |r|j                  |       :d}	g }
|D ]  }|j	                  d      j                         }| j#                  ||	   t%        |            }||	   | j                   j&                  j(                  k7  rNt        |t        j                        r|j                  d      }t        j                  |      j                         }|	dz   }	|
j                  |        |j                  |
        |||xs |d}|| j                   j*                  k(  r'|s%t        d| j                   j*                  z   d	z         |r||d
<   d|i}|r||d<   |S )Nz 	
 .utf8zfPlease send single PIIs i.e. is_raw should be true. The combining of the keys will be done internally.z[Number of keys in each list in the data should match the number of keys specified in schemer      )schemais_rawdatazCustom Audiences with type zrequire at least one app_idapp_idspayloadsession)r:   r7   r6   r8   striplower
isinstancesix	text_typeencodeappendhashlibsha256	hexdigestlistr   lennormalize_keystrr4   r!   r5   )clsr>   usersr?   rA   
pre_hashedrC   hashed_usersusercounterhashed_userkeyrB   paramss                 r3   format_paramsz!CustomAudienceMixin.format_params'   s    cjj++jj++jj557 7  	JSZZ222::&67==?DdCMM2:6UXU_U_UtUtKt;;v.D3::+J+J!J ''- ''t(<(F(F(HI	J %,I 
  5v;#d)+0G   ''-G"$K# 
0!ii(89??A!//w;>s8E!'? #

 9 9 C CD)#s}}=&)jj&8").."5"?"?"AC")A+#**3/
0 !''4358  )E
 SZZ^^#,1CJJNNB12 
 !(GI w
  'F9r2   c                    ||S || j                   j                  j                  k(  si|| j                   j                  j                  k(  sF|| j                   j                  j                  k(  s#|| j                   j                  j
                  k(  r|S || j                   j                  j                  k(  rt        j                  dd|      }|S || j                   j                  j                  k(  r|j                         dd }|S || j                   j                  j                  k(  rt        j                  dd|      }|S || j                   j                  j                  k(  s#|| j                   j                  j                  k(  r,t        j                  dd|      }t        |      dk(  rd|z   }|S || j                   j                  j                  k(  s|| j                   j                  j                   k(  si|| j                   j                  j"                  k(  sF|| j                   j                  j$                  k(  s#|| j                   j                  j&                  k(  rt        j                  dd|      }|S || j                   j                  j(                  k(  rt        j*                  d|      d   }|S || j                   j                  j,                  k(  rt        j                  dd|      dd	 }|S y)
z:
            Normalize the value based on the key
        Nz[^0-9] r=   0z	[^a-zA-Z]-r      )r:   r4   r!   r"   r.   r0   r#   resubr$   rD   r%   r&   r'   rO   r(   r)   r+   r*   r,   r-   splitr/   )rR   key_name	key_values      r3   rP   z!CustomAudienceMixin.normalize_keyw   sc   
 szz00:::szz00666szz00666szz00777szz00666y"i8Iszz00444!)"1-Iszz00555y"i8Iszz00555szz00555y"i8I9~")O	szz00333szz00333szz00333szz00333szz00333|R;Iszz00444i03Iszz00888|R;BQ?I 9r2   c                     | j                         j                  d| j                         df| j                  ||||||            S )a1  Adds users to this CustomAudience.

        Args:
            schema: A CustomAudience.Schema value specifying the type of values
                in the users list.
            users: A list of identities respecting the schema specified.

        Returns:
            The FacebookResponse object.
        POSTrS   rZ   get_api_assuredcallget_id_assuredr[   selfr>   rS   r?   rA   rT   rC   s          r3   	add_userszCustomAudienceMixin.add_users   sY    " ##%**  "G,%% + 
 	
r2   c                     | j                         j                  d| j                         df| j                  ||||||            S )a6  Deletes users from this CustomAudience.

        Args:
            schema: A CustomAudience.Schema value specifying the type of values
                in the users list.
            users: A list of identities respecting the schema specified.

        Returns:
            The FacebookResponse object.
        DELETErS   rh   ri   rm   s          r3   remove_usersz CustomAudienceMixin.remove_users   sY    " ##%**  "G,%% + 
 	
r2   c                 j    | j                         j                  d| j                         dfd|i      S )zShares this CustomAudience with the specified account_ids.

        Args:
            account_ids: A list of account ids.

        Returns:
            The FacebookResponse object.
        rg   
adaccountsrh   rj   rk   rl   rn   account_idss     r3   share_audiencez"CustomAudienceMixin.share_audience   sA     ##%**  "L1 +. + 
 	
r2   c                 j    | j                         j                  d| j                         dfd|i      S )zUnshares this CustomAudience with the specified account_ids.

        Args:
            account_ids: A list of account ids.

        Returns:
            The FacebookResponse object.
        rq   rt   rh   ru   rv   s     r3   unshare_audiencez$CustomAudienceMixin.unshare_audience   sA     ##%**  "L1 +. + 
 	
r2   )FNNN)N)r   r   r    r9   r:   classmethodr[   rP   ro   rr   rx   rz   r1   r2   r3   r   r      sy     0  #"!%"M M^ / /h !
B "! $!
<

r2   r   )facebook_business.exceptionsr   rK   rG   ra   r   r1   r2   r3   <module>r}      s     @  
 	t
 t
r2   