
    g/                     N    d Z ddlZddlZddlmZ d	dZ G d d      Zd
dZd Zy)z8
Authentication utilities to accompany `twitterclient`.
    N)Twythonc                 :    t               j                  | ||      S )z1
    Convenience function for authentication
    
creds_filesubdirverbose)Authenticate
load_credsr   s      F/var/www/openai/venv/lib/python3.12/site-packages/nltk/twitter/util.pycredsfromfiler      s%     >$$fg %      c                   &    e Zd ZdZd ZddZddZy)r	   z2
    Methods for authenticating with Twitter.
    c                     d| _         d | _        i | _        	 t        j                  d   | _        | j
                  | _        y # t        $ r d | _        d | _        Y y w xY w)Nzcredentials.txtTWITTER)r   creds_fullpathoauthosenvirontwitter_dircreds_subdirKeyError)selfs    r   __init__zAuthenticate.__init__!   s[    +"
	%!zz)4D $ 0 0D 	%#D $D	%s   )A AANc                    ||| _         || j                  d}t        |      || _        t        j                  j                  t        j                  j                  | j                  | j                               | _        t        j                  j                  | j                        st        d| j                         t        | j                        5 }|rt        d| j                          |D ]G  }d|v s|j                  dd      \  }}|j                         | j                  |j                         <   I 	 ddd       | j                  |       | j                  S # 1 sw Y   'xY w)a  
        Read OAuth credentials from a text file.

        File format for OAuth 1::

           app_key=YOUR_APP_KEY
           app_secret=YOUR_APP_SECRET
           oauth_token=OAUTH_TOKEN
           oauth_token_secret=OAUTH_TOKEN_SECRET


        File format for OAuth 2::

           app_key=YOUR_APP_KEY
           app_secret=YOUR_APP_SECRET
           access_token=ACCESS_TOKEN

        :param str file_name: File containing credentials. ``None`` (default) reads
            data from `TWITTER/'credentials.txt'`
        NzQSupply a value to the 'subdir' parameter or set the TWITTER environment variable.zCannot find file zReading credentials file =   )r   )r   r   
ValueErrorr   pathnormpathjoinr   isfileOSErroropenprintsplitstripr   _validate_creds_file)	r   r   r   r   msginfilelinenamevalues	            r   r
   zAuthenticate.load_creds-   s9   * !(DO>  (?  !o% &D gg..GGLL**DOO<
 ww~~d112-d.A.A-BCDD$%%&&1$2E2E1FGH$;"&**S!"4KD%/4{{}DJJtzz|, 	 ' 	!!'!2zz '&s   $E&=AE&&E/c                 2    d}g d}d}g d}t         fd|D              rd}nt         fd|D              rd}|s?|s=d j                   d}|t        j                   j                        z  }t        |      |rt        d	 j                   d
       yy)z%Check validity of a credentials file.F)app_key
app_secretoauth_tokenoauth_token_secret)r.   r/   access_tokenc              3   :   K   | ]  }|j                   v   y wNr   .0kr   s     r   	<genexpr>z4Authenticate._validate_creds_file.<locals>.<genexpr>i   s     41qDJJ   Tc              3   :   K   | ]  }|j                   v   y wr4   r5   r6   s     r   r9   z4Authenticate._validate_creds_file.<locals>.<genexpr>k   s     6+Qdjj+r:   z Missing or incorrect entries in 
zCredentials file "z" looks goodN)allr   pprintpformatr   r   r$   )r   r   oauth1oauth1_keysoauth2oauth2_keysr(   s   `      r   r'   z!Authenticate._validate_creds_filec   s    T?444F6+66F&4T__4ERHC6>>$**--CS/!&t&7|DE r   NNF)F)__name__
__module____qualname____doc__r   r
   r'    r   r   r	   r	      s    
%4lFr   r	   c                 ^   | Ct         j                  j                  t              }t         j                  j	                  |d      } t        |       }|d   }|d   }t        ||d      }|j                         }d| d	}t        | d
      5 }t        ||       ddd       y# 1 sw Y   yxY w)zc
    For OAuth 2, retrieve an access token for an app and append it to a
    credentials file.
    Nzcredentials2.txt)r   r.   r/      )oauth_versionzaccess_token=r<   a)file)
r   r   dirname__file__r    r   r   obtain_access_tokenr#   r$   )	r   r   rB   r.   r/   twitterr2   tokr)   s	            r   add_access_tokenrT   v   s    
 wwx(WW\\$(:;
j1FYG%Jgz;G..0L,r
*C	j#	&c 
		s   B##B,c                     t         j                  j                  |       r| S t         j                  j                  t         j                  j	                  d|             S )z
    If the path is not absolute, guess that it is a subdirectory of the
    user's home directory.

    :param str pth: The pathname of the directory where files of tweets should be written
    ~)r   r   isabs
expanduserr    )pths    r   
guess_pathrZ      s=     
ww}}S
ww!!"'',,sC"899r   rD   r4   )	rH   r   r>   twythonr   r   r	   rT   rZ   rI   r   r   <module>r\      s3    
  WF WFt &
:r   