ó
è?F[c           @   sª   d  d l  Z  d  d l Z d  d l m Z d  d l m Z d  d l m Z d  d l Z d g Z	 d Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   AWSQueryConnection(   t   ResponseErrorFactory(   t   ResponseFactoryt   FPSConnectiont   actiont   responsec         C   s1   x* t  D]" } t | | t |  | d  ƒ ƒ q W| S(   N(   t   decorated_attrst   setattrt   getattrt   None(   t   funct   tot   attr(    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   add_attrs_from$   s     c             s   ‡  f d †  } | S(   Nc            sC   ‡ ‡  f d †  } d j  ˆ  j d j ˆ ƒ ƒ | _ t ˆ  d | ƒS(   Nc            sy   xf t  | j ˆ  ƒ D]R } | j | ƒ } t | d t | ƒ ƒ | | d <t | d |  j ƒ | | d <q Wˆ |  | | Ž S(   Nt   Values   .Valuet   CurrencyCodes   .CurrencyCode(   t   filtert   has_keyt   popR   t   strt   currencycode(   t   selft   argst   kwt   fieldt   amount(   t   fieldsR
   (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   wrapper,   s     	s   {0}
Complex Amounts: {1}s   , R   (   t   formatt   __doc__t   joinR   (   R
   R   (   R   (   R
   s2   lib/python2.7/site-packages/boto/fps/connection.pyt	   decorator+   s    (    (   R   R   (    (   R   s2   lib/python2.7/site-packages/boto/fps/connection.pyt   complex_amounts*   s    c             s   ‡  f d †  } | S(   Nc            se   ‡  ‡ f d †  } d j  g  ˆ D] } d j  | ƒ ^ q ƒ } d j ˆ  j | ƒ | _ t ˆ  d | ƒS(   Nc             s   ‡  f d †  } d t  t | ˆ ƒ ƒ k r‚ d j g  ˆ D] } d j | ƒ ^ q7 ƒ } d j t ˆ d d ƒ | ƒ } t | ƒ ‚ n  ˆ |  ˆ  Ž  S(   Nc            s"   t  |  ƒ t  t ˆ  j |  ƒ ƒ k S(   N(   t   lenR   R   (   t   x(   R   (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   <lambda>>   s    i   s    OR t   +s   {0} requires {1} argument(s)R   t   Method(   R!   R   R   R   R   t   KeyError(   R   R   t   hasgroupt   gt   message(   R
   t   groups(   R   s2   lib/python2.7/site-packages/boto/fps/connection.pyR   =   s    +s    OR R$   s   {0}
Required: {1}R   (   R   R   R   R   (   R
   R   R(   R)   (   R*   (   R
   s2   lib/python2.7/site-packages/boto/fps/connection.pyR   ;   s
    +(    (   R*   R   (    (   R*   s2   lib/python2.7/site-packages/boto/fps/connection.pyt   requires9   s    c            s4   ‡  f d †  } d j  ˆ  j ƒ | _ t ˆ  d | ƒS(   Nc             s#   | j  d t j ƒ  ƒ ˆ  |  | Ž  S(   Nt   CallerReference(   t
   setdefaultt   uuidt   uuid4(   R   R   (   R
   (    s2   lib/python2.7/site-packages/boto/fps/connection.pyR   N   s    s2   {0}
Uses CallerReference, defaults to uuid.uuid4()R   (   R   R   R   (   R
   R   (    (   R
   s2   lib/python2.7/site-packages/boto/fps/connection.pyt   needs_caller_referenceL   s    c             s   ‡  f d †  } | S(   Nc            s²   d j  ˆ p' t t j ˆ j j d ƒ ƒ ƒ ‰  t ˆ  ƒ ‰ t t j	 j
 ˆ  d ƒ rn t t j	 j
 ˆ  d ƒ ‰ n  ‡  ‡ ‡ f d †  } ˆ  ˆ | _ | _
 d j ˆ  ˆ j ƒ | _ | S(   Nt    t   _t   Responsec            s   ˆ |  ˆ  ˆ | | Ž S(   N(    (   R   R   R   (   R   R
   R   (    s2   lib/python2.7/site-packages/boto/fps/connection.pyR   ^   s    s   FPS {0} API call
{1}(   R   t   mapR   t
   capitalizet   __name__t   splitR   t   hasattrt   botot   fpsR   R   R   R   R   (   R
   R   (   t   api(   R   R
   R   s2   lib/python2.7/site-packages/boto/fps/connection.pyR   X   s    -	(    (   R;   R   (    (   R;   s2   lib/python2.7/site-packages/boto/fps/connection.pyt
   api_actionV   s    c           B   sU  e  Z d  Z e Z d Z d „  Z d „  Z e e	 d ƒ e
 d d d d g ƒ e ƒ  d	 „  ƒ ƒ ƒ ƒ Z e
 d
 g ƒ e ƒ  d „  ƒ ƒ Z e
 d g ƒ e ƒ  d „  ƒ ƒ Z e
 d
 g ƒ e ƒ  d „  ƒ ƒ Z e ƒ  d „  ƒ Z e
 d g ƒ e ƒ  d „  ƒ ƒ Z e ƒ  d „  ƒ Z e ƒ  d „  ƒ Z e e
 d d g ƒ e ƒ  d „  ƒ ƒ ƒ Z e e
 d d g ƒ d „  ƒ ƒ Z e e	 d ƒ e
 d d d g ƒ e ƒ  d „  ƒ ƒ ƒ ƒ Z e e	 d ƒ e
 d d d g ƒ e ƒ  d „  ƒ ƒ ƒ ƒ Z e
 d
 g ƒ e ƒ  d „  ƒ ƒ Z e	 d ƒ e
 d  d d g ƒ e ƒ  d! „  ƒ ƒ ƒ Z e	 d" ƒ e
 d
 d# d$ d% g ƒ e ƒ  d& „  ƒ ƒ ƒ Z e
 d' g ƒ e ƒ  d( „  ƒ ƒ Z e
 d$ g d) g ƒ e ƒ  d* „  ƒ ƒ Z e
 d+ d, g ƒ e ƒ  d- „  ƒ ƒ Z e ƒ  d. „  ƒ Z e
 d) g ƒ e ƒ  d/ „  ƒ ƒ Z e
 d) g ƒ e ƒ  d0 „  ƒ ƒ Z  e e	 d1 ƒ e
 d d2 d d3 g ƒ e ƒ  d4 „  ƒ ƒ ƒ ƒ Z! e
 d g ƒ e ƒ  d5 „  ƒ ƒ Z" e e	 d6 ƒ e
 d d7 d8 g ƒ e ƒ  d9 „  ƒ ƒ ƒ ƒ Z# e
 d: g ƒ e ƒ  d; „  ƒ ƒ Z$ e
 d: g ƒ e ƒ  d< „  ƒ ƒ Z% e e	 d" ƒ e
 d: g ƒ e ƒ  d= „  ƒ ƒ ƒ ƒ Z& e
 d) g ƒ e ƒ  d> „  ƒ ƒ Z' RS(?   s
   2010-08-28t   USDc         O   sE   | j  d |  j ƒ |  _ | j d d ƒ t t |  ƒ j | | Ž  d  S(   NR   t   hosts   fps.sandbox.amazonaws.com(   R   R   R-   t   superR   t   __init__(   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyR@   m   s    c         C   s   d g S(   NR:   (    (   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   _required_auth_capabilityr   s    t   SettlementAmountt   CreditInstrumentIds   SettlementAmount.Valuet   SenderTokenIds   SettlementAmount.CurrencyCodec         K   s   |  j  | | | ƒ S(   sÍ   
        Allows a caller to initiate a transaction that atomically transfers
        money from a sender's payment instrument to the recipient, while
        decreasing corresponding debt balance.
        (   t
   get_object(   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   settle_debtu   s    t   TransactionIdc         K   s   |  j  | | | ƒ S(   s:   
        Gets the latest status of a transaction.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   get_transaction_status‚   s    t	   StartDatec         K   s   |  j  | | | ƒ S(   s>   
        Returns transactions for a given date range.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   get_account_activityŠ   s    c         K   s   |  j  | | | ƒ S(   s7   
        Returns all details of a transaction.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   get_transaction’   s    c         C   s   |  j  | i  | ƒ S(   s~   
        Returns the total outstanding balance for all the credit instruments
        for the given creditor account.
        (   RE   (   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   get_outstanding_debt_balanceš   s    t   PrepaidInstrumentIdc         K   s   |  j  | | | ƒ S(   sP   
        Returns the balance available on the given prepaid instrument.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   get_prepaid_balance¢   s    c         C   s   |  j  | i  | ƒ S(   s’   
        Returns the total liability held by the given account corresponding to
        all the prepaid instruments owned by the account.
        (   RE   (   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   get_total_prepaid_liabilityª   s    c         C   s   |  j  | i  | ƒ S(   sJ   
        Returns the account balance for an account in real time.
        (   RE   (   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   get_account_balance²   s    t   PaymentInstructiont	   TokenTypec         K   s   |  j  | | | ƒ S(   s<   
        Installs a payment instruction for caller.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   install_payment_instruction¹   s    t	   returnURLt   pipelineNamec            sG  d |  j  k r d p d } d j | ƒ } d } d } | d | k sR t d ƒ ‚ | j i d d 6d d 6ƒ | j d |  j ƒ d „  ‰  ‡  f d †  } t g  | j ƒ  D] \ } } | | | ƒ f ^ q¨ ƒ }	 d „  }
 d j d | | |
 |	 ƒ g ƒ } |  j	 j
 | ƒ } |	 d | | ƒ f g 7}	 |	 j ƒ  d j | | |
 |	 ƒ ƒ S(   sj   
        Generate a signed URL for the Co-Branded service API given arguments as
        payload.
        t   sandboxs   payments-sandboxt   paymentss   authorize.{0}.amazon.coms   /cobranded-ui/actions/startt	   SingleUset   MultiUset	   Recurringt	   Recipientt   SetupPrepaidt   SetupPostpaidt	   EditTokenRU   s   Invalid pipelineNamet
   HmacSHA256t   signatureMethodt   2t   signatureVersiont	   callerKeyc         S   s   |  d  k	 r t |  ƒ p d S(   NR1   (   R	   R   (   R"   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyR#   Ö   s    c            s   t  j ˆ  |  ƒ d d ƒS(   Nt   safet   ~(   t   urllibt   quote(   R"   (   t   safestr(    s2   lib/python2.7/site-packages/boto/fps/connection.pyR#   ×   s    c         S   s.   d j  g  |  D] \ } } | d | ^ q ƒ S(   Nt   &t   =(   R   (   t   pt   kt   v(    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyR#   Ú   s    s   
t   GETt	   signatures   https://{0}{1}?{2}(   RX   RY   RZ   R[   R\   R]   R^   (   R>   R   t   AssertionErrort   updateR-   t   aws_access_key_idt   sortedt   itemsR   t   _auth_handlert   sign_stringt   sort(   R   R   RV   t   endpointt   baset   validpipelinest	   safequoteRl   Rm   t   payloadt   encodedt	   canonicalRo   (    (   Rh   s2   lib/python2.7/site-packages/boto/fps/connection.pyt   cbui_urlÂ   s&     		7	!
t   TransactionAmounts   TransactionAmount.Values   TransactionAmount.CurrencyCodec         K   s   |  j  | | | ƒ S(   sÀ   
        Reserve API is part of the Reserve and Settle API conjunction that
        serve the purpose of a pay where the authorization and settlement have
        a timing difference.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   reserveâ   s    c         K   s   |  j  | | | ƒ S(   sY   
        Allows calling applications to move money from a sender to a recipient.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   payï   s    	c         K   s   |  j  | | | ƒ S(   sP   
        Cancels an ongoing transaction and puts it in cancelled state.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   cancelú   s    t   ReserveTransactionIdc         K   s   |  j  | | | ƒ S(   s‹   
        The Settle API is used in conjunction with the Reserve API and is used
        to settle previously reserved transaction.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   settle  s    	t   RefundAmounts   RefundAmount.ValueR,   s   RefundAmount.CurrencyCodec         K   s   |  j  | | | ƒ S(   s=   
        Refunds a previously completed transaction.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   refund  s    t   RecipientTokenIdc         K   s   |  j  | | | ƒ S(   s/   
        Returns the recipient status.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt!   get_recipient_verification_status  s    t   TokenIdc         K   s   |  j  | | | ƒ S(   s‰   
        Returns the details of a particular token installed by this calling
        application using the subway co-branded UI.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   get_token_by_caller  s    t   UrlEndPointt   HttpParametersc         K   s   |  j  | | | ƒ S(   sM   
        Verify the signature that FPS sent in IPN or callback urls.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   verify_signature(  s    c         K   s   |  j  | | | ƒ S(   sJ   
        Returns a list of tokens installed on the given account.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt
   get_tokens0  s    c         K   s   |  j  | | | ƒ S(   s/   
        Returns the usage of a token.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   get_token_usage7  s    c         K   s   |  j  | | | ƒ S(   sd   
        Cancels any token installed by the calling application on its own
        account.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   cancel_token?  s    t   FundingAmounts   FundingAmount.Values   FundingAmount.CurrencyCodec         K   s   |  j  | | | ƒ S(   sL   
        Funds the prepaid balance on the given prepaid instrument.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   fund_prepaidH  s    	c         K   s   |  j  | | | ƒ S(   sS   
        Returns the balance corresponding to the given credit instrument.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   get_debt_balanceS  s    t   AdjustmentAmounts   AdjustmentAmount.Values   AdjustmentAmount.CurrencyCodec         K   s   |  j  | | | ƒ S(   su   
        Allows a creditor to write off the debt balance accumulated partially
        or fully at any time.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   write_off_debt[  s    
t   SubscriptionIdc         K   s   |  j  | | | ƒ S(   sF   
        Returns the transactions for a given subscriptionID.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt!   get_transactions_for_subscriptiong  s    c         K   s   |  j  | | | ƒ S(   sQ   
        Returns the details of Subscription for a given subscriptionID.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   get_subscription_detailso  s    c         K   s=   d } d | k s* d | k s* t  | ƒ ‚ |  j | | | ƒ S(   s)   
        Cancels a subscription.
        s@   If you specify a RefundAmount, you must specify CallerReference.s   RefundAmount.ValueR,   (   Rp   RE   (   R   R   R   R   R)   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   cancel_subscription_and_refundw  s    c         K   s   |  j  | | | ƒ S(   s:   
        Gets the payment instruction of a token.
        (   RE   (   R   R   R   R   (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   get_payment_instruction…  s    ((   R6   t
   __module__t
   APIVersionR   t   ResponseErrorR   R@   RA   R0   R    R+   R<   RF   RH   RJ   RK   RL   RN   RO   RP   RS   R   R   R‚   Rƒ   R…   R‡   R‰   R‹   RŽ   R   R   R‘   R“   R”   R–   R˜   R™   Rš   R›   (    (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyR   g   sž   																							(   R   R   (   Rf   R.   t   boto.connectionR    t   boto.fps.exceptionR   t   boto.fps.responseR   R9   t   __all__R   R   R    R+   R0   R<   R   (    (    (    s2   lib/python2.7/site-packages/boto/fps/connection.pyt   <module>   s   					
	