
    PIiM                     0    d dl mZ d dlmZ  G d d      Zy)    )FacebookBadObjectError)AbstractObjectc                   .    e Zd ZdZ	 	 	 	 ddZddZd Zy)ObjectParserz!
    Parser for API response
    Nc                 r    t        ||du|g      st        d      || _        || _        || _        || _        y)a   Initialize an ObjectParser.
        To Initialize, you need to provide either a reuse_object, target_class,
        or an custom_parse_method.
        Args:
            api: FacebookAdsApi object.
            target_class (optional): The expected return object type.
            reuse_object (optional): Reuse existing object to populate response.
            custom_parse_method (optional): Custom parsing method.
        NPMust specify either target class calling objector custom parse method for parser)anyr   _reuse_object_target_class_custom_parse_method_api)selfapitarget_classreuse_objectcustom_parse_methods        v/var/www/webhook.estador.de/web/meta/bot/venv/lib/python3.12/site-packages/facebook_business/adobjects/objectparser.py__init__zObjectParser.__init__   sL      L,d":<OPQ(45 5 *)$7!	    c                    | j                   | j                  || j                        S ddlm} ddlm} ddlm} ddlm	} |}d|v rt        |d   t              r|d   }n-d|v r)t        |d   t              s|d   j                         \  }}d|fd	|fd
|fd|ff}	|	D ]4  \  }
}|
|vr||
   d   D cg c]  }| j                  ||       c}||
<   6 d|v r|d= |xs | j                  }| j                   '| j                   j#                  |       | j                   S | j                  !t%        j&                  | j                  ||      S t)        d      c c}w )N   )Ad)	AdPreview)AdSet)Campaigndataimages	campaignsadsetsadspreviews)override_target_classsuccessr   )r   r   adr   	adpreviewr   adsetr   campaignr   
isinstancedictlistpopitemparse_singler   r
   	_set_datar   create_objectr   )r   responser"   r   r   r   r   r   _	subfieldssubfield_classitemr   s                 r   r,   zObjectParser.parse_single+   s   $$0,,XtyyAA( &X*Xf-=t"DF#D!*T(^T*J8n,,.GAt (#uBK#	
	 !* 	Hft#
 #8nV4  !! " DN		 Y,B0B0B)((.%%%+!//		40<> > )45 5%s   2Ec                 n   d|v ryt        |d   t              rfg }t        |d   t              r,|d   D ]"  }|j                  | j                  |             $ |S |j                  | j                  |d                |S d|v r|d   n|}t	        j
                  | j                  || j                        g}|S )Nr   )r(   r*   appendr,   r   r.   r   r   )r   r/   retjson_objr   s        r   parse_multiplezObjectParser.parse_multipleZ   s    X*Xf-=t"DC(6*D1 ( 0 <HJJt00:;< 
 

4,,Xf-=>? 
	 (.'98F#xD!//		4040B0BD EC 
r   )NNNN)N)__name__
__module____qualname____doc__r   r,   r9    r   r   r   r      s%      2-5^r   r   N)facebook_business.exceptionsr   *facebook_business.adobjects.abstractobjectr   r   r>   r   r   <module>rA      s    FZ Zr   