
    PIi
                     H    d dl mZ d dlmZ d dlmZ d dlmZ  G d d      Zy)    )	AdAccount)FacebookAdsApi)FacebookBadObjectError)AbstractCrudObjectc                   X    e Zd Zedd       Zd Zd Z	 	 	 	 	 	 d	dZd Z	 	 	 	 	 	 d	dZ	y)
AdImageMixinNc                    |xs t        j                         }t        |d      5 }|j                  d|| j	                         f||i      }d d d        j                         }g }|d   D ]q  } | |      }	|	j                  |d   |          |dd  d|d   |   | j                  j                     |	| j                  j                  <   |j                  |	       s |S # 1 sw Y   xY w)NrbPOST)filesimages)	parent_id   :)r   get_default_apiopencallget_endpointjsonupdateFieldhashidappend)
clsfilenamer   api	open_fileresponsedataobjsimage_filenameimages
             ~/var/www/webhook.estador.de/web/meta/bot/venv/lib/python3.12/site-packages/facebook_business/adobjects/helpers/adimagemixin.pyremote_create_from_zipz#AdImageMixin.remote_create_from_zip   s    5^335(D! 	YxxC,,./+   H	 }}"8n 	N),ELLh78!"X~.syy~~>#E#)),, KK	 %	 	s   'C!!C*c                 B    | j                         | j                         fS N)get_parent_id_assuredr   selfs    r$   get_node_pathzAdImageMixin.get_node_path$   s    **,d.?.?.ABB    c                    d|vrt        j                  | |      S |d   j                         \  }}t        t        |      D ]0  }||   | j
                  |<   | j                  j                  |d       2 | j                         dd d| | j                  j                     | j
                  | j                  j                  <   | S )a  
            `data` may have a different structure depending if you're creating
            new AdImages or iterating over existing ones using something like
            AdAccount.get_ad_images().
            While reading existing images, _set_data from AbstractCrudObject
            handles everything correctly, but we need to treat the
            remote_create case.
            remote_create sample response:
            {
              "images": {
                "8cf726a44ab7008c5cc6b4ebd2491234": {
                  "hash":"8cf726a44ab7008c5cc6b4ebd2491234",
                  "url":"https://fbcdn-photos-a.akamaihd.net/..."
                }
              }
            }
            Sample response when calling act_<ACT_ID>/adimages, used internally
            by AdAccount.get_ad_images():
            {
              "data": [
                {
                  "hash": "181b88e3cdf6464af7ed52fe488fe559",
                  "id": "1739564149602806:181b88e3cdf6464af7ed52fe488fe559"
                }
              ],
              "paging": {
                "cursors": {
                  "before": "MTczOTU2NDE0OTYwMjgwNjoxODFiODh==",
                  "after": "MTczOTU2NDE0OTYwMjgwNjoxODFiODhl=="
                }
              }
            }
        r   Nr   r   )r   	_set_datapopitemmapstr_data_changespopr(   r   r   r   )r*   r    _keys       r$   r.   zAdImageMixin._set_data'   s    F 4%//d;;x.((*4sD> 	)C"3iDJJsO MMc4(		) &&(,!%


4::==!
 r,   c           
          | | j                   j                     st        d      | | j                   j                     }t        |d      5 }t	        j
                  | ||i|||||      }	ddd       |	S # 1 sw Y   	S xY w)zUploads filename and creates the AdImage object from it.
        It has same arguments as AbstractCrudObject.remote_create except it
        does not have the files argument but requires the 'filename' property
        to be defined.
        z*AdImage required a filename to be defined.r
   )r   batchfailureparamssuccessapi_versionN)r   r   r   r   r   remote_create)
r*   r8   r9   r   r:   r;   r<   r   r   
return_vals
             r$   r=   zAdImageMixin.remote_create\   s     DJJ''((<  

++,(D! 		Y+99+'J		 		 s   
A33A=c                 4    | | j                   j                     S )z7Returns the image hash to which AdCreative's can refer.)r   r   r)   s    r$   get_hashzAdImageMixin.get_hash{   s    DJJOO$$r,   c                 \   | | j                   j                  j                     r| | j                   j                  j                     j                  d      \  }}t	        | j                               }	d|gi}|	j                  ||      }
|
r| j                  |
d   j                         y y y )Nr   )fbidhashes)fieldsr:   r   )		__class__r   r   splitr   r(   get_ad_imagesr.   r2   )r*   r8   r9   rD   r:   r;   r<   r5   
image_hashaccountr   s              r$   remote_readzAdImageMixin.remote_read   s     $$''( !5!5!8!89??DMAzT%?%?%ABGF
 **&*HFvay/  )r,   r'   )NNNNNN)
__name__
__module____qualname__classmethodr%   r+   r.   r=   r@   rJ    r,   r$   r   r      sW     ,C3n >% 0r,   r   N)	%facebook_business.adobjects.adaccountr   facebook_business.apir   facebook_business.exceptionsr   .facebook_business.adobjects.abstractcrudobjectr   r   rO   r,   r$   <module>rT      s    < 0 ? MF0 F0r,   