
    ڌh
                         d Z ddlmZmZ ddlZddlmZmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ 	 dd
lmZmZmZmZmZmZ eeef         Zn# e$ r Y nw xY wi Zd ZddZdS )z0Functions to interact with various web site APIs    )absolute_importunicode_literalsN)Requesturlopen)URLError)	urlencode)pformat   )logger)TextOptionalUnionListDictAnyc                 :    t                               |            d S )N)HEADERSupdateheaderss    m/Users/chudy/Library/Application Support/Kodi/addons/metadata.tvshows.themoviedb.org.python/libs/api_utils.pyset_headersr   %   s    NN7    jsonFc                    |r| dz   t          |          z   } t          j        d                    |                      t          r&t          j        t          t                               t          | t                    }	 t          |          }n# t          $ r}t          |d          r-t          j        d                    |j
                             n<t          |d          r,t          j        d                    |j                             d}Y d}~nd}~ww xY w||}n|                                d	k    rk	 t          j        |                                                    d
                    }nW# t          j        j        $ r t          j        d           |}Y n+w xY w|                                                    d
          }|r4t          j        d                    t'          |                               |S )a  
    Load info from external api

    :param url: API endpoint URL
    :param params: URL query params
    :default: object to return if there is an error
    :resp_type: what to return to the calling function
    :return: API response or default on error
    ?zCalling URL "{}"r   reasonz*failed to reach the remote site
Reason: {}codez8remote site unable to fulfill the request
Error code: {}Nr   zutf-8zremote site sent back bad JSONzthe api response:
{})r   r   debugformatr   strr   r   r   hasattrr   r   lowerr   loadsreaddecodedecoderJSONDecodeErrorr	   )	urlparamsdefault	resp_type
verboselogreqresponseeresps	            r   	load_infor2   *   s     ,Ci)F+++
L#**3//000 #S\\"""
#w
'
'
'C	3<<   1h 	\L=DDQXNNP P P PQ 	\LKRRSTSYZZ\ \ \ 			f	$	$	:hmmoo44W==>>DD|+ 	 	 	L9:::DDD	 }}%%g.. D,33GDMMBBCCCKs+   B 
D"A;DD"9E= =*F*)F*)NNr   F)__doc__
__future__r   r   r   urllib.requestr   r   urllib.errorr   urllib.parser   pprintr	   utilsr   typingr   r   r   r   r   r   InfoTypeImportErrorr   r   r2    r   r   <module>r>      s&  $ 7 6 8 8 8 8 8 8 8 8  + + + + + + + + ! ! ! ! ! ! " " " " " "            	================D#IHH 	 	 	D	   
' ' ' ' ' 's   A AA