l
พ?Tc               @   sU  d  d l  Z  d  d l Z d  d l Z e  j d  d k Z y$ d  d l m Z d  d l m Z Wn2 e k
 r d  d l	 m
 Z d  d l	 m Z Yn Xy0 d  d l m Z d  d l m Z m Z m Z Wn> e k
 r d  d l m Z d  d l m Z m Z m Z Yn Xd	 Z d
 a d   Z Gd   d e  Z Gd   d e  Z d   Z d d d d  d  Z Gd   d e  Z Gd   d e  Z Gd   d e  Z Gd   d  Z Gd   d e  Z  Gd   d e  Z! e" d k rQe! d d  d
 Z# e# j$ d!  Z% e& e%  e# j' d"  Z( e& e(  e# j$ d! d#  Z) e& e)  e# j$ d$  Z* e& e*  n  d S(%   i    Ni   (   u   HTTPConnection(   u   HTTPSConnection(   u   HTTP(   u   HTTPS(   u   unquote(   u	   splithostu	   splittypeu	   splituseru   0.0.1i   c               C   s   t  d a  t  S(   Ni   (   u   ID(    (    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   _gen_id:   s    
c             B   s   |  Ee  Z d  Z d   Z d S(   u   Base class for client errors.c             C   s
   t  |   S(   N(   u   repr(   u   self(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   __str__H   s    N(   u   __name__u
   __module__u   __doc__u   __str__(   u
   __locals__(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   ErrorF   s   
u   Errorc             B   s&   |  Ee  Z d  Z d   Z d   Z d S(   u!   Indicates an HTTP protocol error.c             C   s>   t  j |   | |  _ | |  _ | |  _ | |  _ | |  _ d  S(   N(   u   Erroru   __init__u   urlu   errcodeu   errmsgu   headersu   response(   u   selfu   urlu   errcodeu   errmsgu   headersu   response(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   __init__Y   s    				c             C   s   d |  j  |  j |  j f S(   Nu   <ProtocolError for %s: %s %s>(   u   urlu   errcodeu   errmsg(   u   self(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   __repr__a   s    N(   u   __name__u
   __module__u   __doc__u   __init__u   __repr__(   u
   __locals__(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   ProtocolErrorV   s   
	u   ProtocolErrorc             C   s"   t  |   } t |  } | | f S(   N(   u   Unmarshalleru   Parser(   u   encodingu   unu   par(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu	   getparserh   s    c             C   s>   | r: i  } | | d <|  | d <t    | d <t j |  Sd  S(   Nu   methodu   paramsu   id(   u   _gen_idu   jsonu   dumps(   u   paramsu
   methodnameu   methodresponseu   encodingu
   allow_noneu   request(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   dumpsn   s    

c             B   s)   |  Ee  Z d    Z d   Z d   Z d S(   c             C   s   d  |  _ | |  _ d  S(   N(   u   Noneu   datau   encoding(   u   selfu   encoding(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   __init__z   s    	c             C   s/   |  j  d  k r | |  _  n |  j  | |  _  d  S(   N(   u   datau   None(   u   selfu   data(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   feed~   s    c             C   s   t  j |  j j |  j   S(   N(   u   jsonu   loadsu   datau   decodeu   encoding(   u   self(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   close   s    N(   u   __name__u
   __module__u   __init__u   feedu   close(   u
   __locals__(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   Unmarshallerx   s   
		u   Unmarshallerc             B   s)   |  Ee  Z d    Z d   Z d   Z d S(   c             C   s   | |  _  d  |  _ d  S(   N(   u   _targetu   Noneu   data(   u   selfu   unmarshaller(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   __init__   s    	c             C   s/   |  j  d  k r | |  _  n |  j  | |  _  d  S(   N(   u   datau   None(   u   selfu   data(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   feed   s    c             C   s   |  j  j |  j  d  S(   N(   u   _targetu   feedu   data(   u   self(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   close   s    N(   u   __name__u
   __module__u   __init__u   feedu   close(   u
   __locals__(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   Parser   s   
		u   Parserc             B   s)   |  Ee  Z d    Z d   Z d   Z d S(   c             C   s   | |  _  | |  _ d  S(   N(   u   _Method__sendu   _Method__name(   u   selfu   sendu   name(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   __init__   s    	c             C   s   t  |  j d |  j | f  S(   Nu   %s.%s(   u   _Methodu   _Method__sendu   _Method__name(   u   selfu   name(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   __getattr__ก   s    c             G   s   |  j  |  j |  S(   N(   u   _Method__sendu   _Method__name(   u   selfu   args(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   __call__ค   s    N(   u   __name__u
   __module__u   __init__u   __getattr__u   __call__(   u
   __locals__(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   _Method   s   
		u   _Methodc             B   s{   |  Ee  Z d  Z d e Z d d  Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d S(   u2   Handles an HTTP transaction to an JSON-RPC server.u    jsonlib.py/%s (by matt harrison)i    c             C   sP  |  j  |  } | r% | j d  n  |  j | | |  t sQ |  j | |  n  |  j |  |  j | |  y% | j   \ } } }	 | j   }
 Wn< t	 k
 rั | j
   }
 |
 j } |
 j } |
 j   }	 Yn X| d k r	|
 j   } t | | | | |	 |   n  | |  _ y | j j } Wn t	 k
 r<d  } Yn X|  j |
 | |  S(   Ni   iศ   (   u   make_connectionu   set_debuglevelu   send_requestu   PY3u	   send_hostu   send_user_agentu   send_contentu   getreplyu   getfileu   AttributeErroru   getresponseu   statusu   reasonu
   getheadersu   readu   ProtocolErroru   verboseu   _connu   socku   Noneu   _parse_response(   u   selfu   hostu   handleru   request_bodyu   encodingu   verboseu   hu   errcodeu   errmsgu   headersu   ru   responseu   sock(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   requestฝ   s:    			c             C   s
   t  |  S(   N(   u	   getparser(   u   selfu   encoding(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu	   getparser๊   s    c             C   s   i  } t  | t  r$ | \ } } n  t |  \ } } | r| t j t |   } d j | j    } d d | f g } n d  } | | | f S(   Nu    u   Authorizationu   Basic (	   u
   isinstanceu   tupleu	   splituseru   base64u   encodestringu   unquoteu   joinu   splitu   None(   u   selfu   hostu   x509u   authu   extra_headers(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   get_host_info๘   s    c             C   s"   |  j  |  \ } } } t |  S(   N(   u   get_host_infou   HTTPConnection(   u   selfu   hostu   extra_headersu   x509(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   make_connection  s    c             C   s   | j  d |  d  S(   Nu   POST(   u
   putrequest(   u   selfu
   connectionu   handleru   request_body(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   send_request  s    c             C   s   |  j  |  \ } } } | j d |  | r| t | t  rR t | j    } n  x' | D] \ } } | j | |  qY Wn  d  S(   Nu   Host(   u   get_host_infou	   putheaderu
   isinstanceu   dictu   listu   items(   u   selfu
   connectionu   hostu   extra_headersu   x509u   keyu   value(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu	   send_host&  s    c             C   s   | j  d |  j  d  S(   Nu
   User-Agent(   u	   putheaderu
   user_agent(   u   selfu
   connection(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   send_user_agent4  s    c             C   sP   | j  d d  | j  d t t |    | j   | rL | j |  n  d  S(   Nu   Content-Typeu   text/xmlu   Content-Length(   u	   putheaderu   stru   lenu
   endheadersu   send(   u   selfu
   connectionu   request_body(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   send_content=  s
    
c             C   s   |  j  | d   S(   N(   u   _parse_responseu   None(   u   selfu   file(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   parse_responseJ  s    c             C   s   |  j  |  \ } } x` | r0 | j d  } n | j d  } | sI Pn  |  j rh t d t |   n  | j |  q | j   | j   | j   S(   Ni   u   body:(   u	   getparseru   recvu   readu   verboseu   printu   repru   feedu   close(   u   selfu   fileu   socku   encodingu   pu   uu   response(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   _parse_responseX  s    	

N(   u   __name__u
   __module__u   __doc__u   __version__u
   user_agentu   requestu	   getparseru   get_host_infou   make_connectionu   send_requestu	   send_hostu   send_user_agentu   send_contentu   parse_responseu   _parse_response(   u
   __locals__(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu	   Transportฎ   s   

-										u	   Transportc             B   s   |  Ee  Z d  Z d   Z d S(   u3   Handles an HTTPS transaction to an JSON-RPC server.c             C   s]   |  j  |  \ } } } y
 t } Wn t k
 rB t d   Yn X| | d  | pU i   Sd  S(   Nu-   your version of httplib doesn't support HTTPS(   u   get_host_infou   HTTPSConnectionu   AttributeErroru   NotImplementedErroru   None(   u   selfu   hostu   extra_headersu   x509u   HTTPS(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   make_connectionv  s    
N(   u   __name__u
   __module__u   __doc__u   make_connection(   u
   __locals__(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   SafeTransportq  s   
u   SafeTransportc             B   sD   |  Ee  Z d d d d  d  Z d   Z d   Z e Z d   Z d S(   i    c             C   sฒ   t  |  \ } } | d k r- t d   n  t |  \ |  _ |  _ |  j sZ d |  _ n  | d  k r | d k r~ t   } q t   } n  | |  _ | |  _	 | |  _
 | |  _ d  S(   Nu   httpu   httpsu   Unsupported JSONRPC protocolu   /RPC2(   u   httpu   https(   u	   splittypeu   IOErroru	   splithostu   _ServerProxy__hostu   _ServerProxy__handleru   Noneu   SafeTransportu	   Transportu   _ServerProxy__transportu   _ServerProxy__encodingu   _ServerProxy__verboseu   _ServerProxy__allow_none(   u   selfu   uriu	   transportu   encodingu   verboseu
   allow_noneu   utype(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   __init__  s    				c             C   s}   t  | | d |  j d |  j } |  j j |  j |  j | j |  j  |  j d |  j } t	 |  d k ry | d } n  | S(   u+   call a method on the remote server
        u   encodingu
   allow_noneu   verbosei   i    (
   u   dumpsu   _ServerProxy__encodingu   _ServerProxy__allow_noneu   _ServerProxy__transportu   requestu   _ServerProxy__hostu   _ServerProxy__handleru   encodeu   _ServerProxy__verboseu   len(   u   selfu
   methodnameu   paramsu   requestu   response(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu	   __request  s    		c             C   s   d |  j  |  j f S(   Nu   <JSONProxy for %s%s>(   u   _ServerProxy__hostu   _ServerProxy__handler(   u   self(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   __repr__ฎ  s    c             C   s   t  |  j |  S(   N(   u   _Methodu   _ServerProxy__request(   u   selfu   name(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   __getattr__ต  s    N(   u   __name__u
   __module__u   Noneu   __init__u   _ServerProxy__requestu   __repr__u   __str__u   __getattr__(   u
   __locals__(    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   ServerProxy  s   
		u   ServerProxyu   __main__u   http://localhost:8080/foo/u   verboseu   foo baru   otheru   bazi   (+   u   sysu   jsonu   base64u   version_infou   PY3u   http.clientu   HTTPConnectionu   HTTPSConnectionu   ImportErroru   httplibu   HTTPu   HTTPSu   urllib.parseu   unquoteu	   splithostu	   splittypeu	   splituseru   urllibu   __version__u   IDu   _gen_idu	   Exceptionu   Erroru   ProtocolErroru	   getparseru   Noneu   dumpsu   objectu   Unmarshalleru   Parseru   _Methodu	   Transportu   SafeTransportu   ServerProxyu   __name__u   su   echou   cu   printu   badu   du   eu   f(    (    (    u4   /home/prologic/work/circuits/tests/web/jsonrpclib.pyu   <module>!   sN    !				ร9


