
´øYê	  ã               @   s¸   d  Z  d d l Z d d l Z d d l m Z m Z e j d e j ƒ Z d d „  Z	 d d	 „  Z
 e d
 d ƒ d d
 „  ƒ Z e d
 d e j d ƒ d d „  ƒ Z e d d „  ƒ Z d S)z
Bit.ly plugin for James
é    Né   )ÚcommandÚinitaH  (?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]+-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:/[^\s]*)?c          	   C   si   |  j  d d d } |  j  d d d } d } t j | d d | d | d	 | i ƒ} | j ƒ  d
 d S)z Shorten an url with bit.ly Úapiszbit.lyÚuserÚkeyz$https://api-ssl.bitly.com/v3/shortenÚparamsÚloginZapiKeyZlongurlÚdataÚurl)ÚconfigÚrequestsÚgetÚjson)Úbotr   r	   r   ZsurlZpage© r   ú./plugins/bitly.pyÚ_shorten
   s    r   c       	         sµ   t  j | ƒ } x" | D] } ˆ  j d j | ƒ q W| s> d  St | ƒ ‡  f d d †  | Dƒ } ‡  f d d †  t | ƒ Dƒ } ˆ  j j d ƒ } | j | ƒ } ˆ  j	 | | ƒ d  S)NÚ
urlhistoryc                s1   g  |  ]' } t  | ƒ d  k r t ˆ  | ƒ ‘ q S)éZ   )Úlenr   )Ú.0r   )r   r   r   ú
<listcomp>   s   	 zurlfinder.<locals>.<listcomp>c                sF   g  |  ]< \ } } d  ˆ  j  j d | ƒ ˆ  j  j d | ƒ f ‘ q S)z%s%sz(%d)ú )ÚstyleÚgreyÚlblue)r   Úir   )r   r   r   r      s   	z, )
Ú	URL_REGEXÚfindallr
   ÚappendÚprintÚ	enumerater   r   ÚjoinÚnotice)	r   ÚnickÚchanÚmsgZurlsr   Z
short_urlsÚ	separatorÚoutputr   )r   r   Ú	urlfinder   s    
r*   Úshortenz^(!|.)$name(?:$|\s\d+)c             C   sá   | d d k r |  j  } n	 |  j } | su t |  j d ƒ d k rq | | |  j j t |  |  j d d ƒ ƒ ƒ Sd St | ƒ } t |  j d ƒ | k  r³ | | |  j j d ƒ ƒ S| | |  j j t |  |  j d | ƒ ƒ ƒ S)z+ {!.}shorten [url|number] -> Shorten a URL r   Ú.r   r   NzError: n > URL history lengthéÿÿÿÿ)	r$   Ú_msgr   r
   r   r   r   ÚintÚred)r   r%   r&   ÚgrÚargÚmsgfnÚnr   r   r   r+   %   s    	'z^(!|.)$name\sú$c             C   sG   | d d k r |  j  } n	 |  j } | | |  j j t |  | ƒ ƒ ƒ S)z+ {!.}shorten [url|number] -> Shorten a URL r   r,   )r$   r.   r   r   r   )r   r%   r&   r1   r2   r3   r   r   r   Úshorten_url:   s
    	r6   c             C   s3   |  j  d ƒ r/ g  |  j d <|  j j j t ƒ d S)z Initialize this plugin. zbit.lyr   N)Úhas_apir
   ÚeventsÚMessageEventÚregisterr*   )r   r   r   r   Úplugin_initializerF   s    r;   )Ú__doc__r   ÚreZutil.decoratorsr   r   ÚcompileÚIr   r   r*   r+   Úpatternr6   r;   r   r   r   r   Ú<module>   s   &