Changeset 215

Show
Ignore:
Timestamp:
03/16/08 21:29:30 (4 years ago)
Author:
ocmathew
Message:

Change handshake options from a dict to key/value lists in a list.

Location:
trunk/pyopencoin/oc
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/pyopencoin/oc/entities.py

    r197 r215  
    284284        >>> stt = transports.SimpleTestTransport() 
    285285        >>> w.listen(stt) 
    286         >>> stt.send('HANDSHAKE',{'protocol': 'opencoin 1.0'}) 
     286        >>> stt.send('HANDSHAKE',[['protocol', 'opencoin 1.0']]) 
    287287        <Message('HANDSHAKE_ACCEPT',None)> 
    288288        >>> stt.send('sendMoney',[1,2]) 
     
    558558        >>> stt = transports.SimpleTestTransport() 
    559559        >>> i.listen(stt) 
    560         >>> stt.send('HANDSHAKE',{'protocol': 'opencoin 1.0'}) 
     560        >>> stt.send('HANDSHAKE',[['protocol', 'opencoin 1.0']]) 
    561561        <Message('HANDSHAKE_ACCEPT',None)> 
    562562        >>> stt.send('TRANSFER_TOKEN_REQUEST',[tid, 'my account', [], [tests.coinA.toPython()], [['type', 'redeem']]]) 
  • trunk/pyopencoin/oc/protocols.py

    r211 r215  
    7272    def initiateHandshake(self,message):    
    7373        self.newState(self.verifyHandshake) 
    74         return Message('HANDSHAKE',{'protocol': 'opencoin 1.0'}) 
     74        return Message('HANDSHAKE',[['protocol', 'opencoin 1.0']]) 
    7575 
    7676    def verifyHandshake(self, message): 
    7777        if message.type == 'HANDSHAKE_ACCEPT': 
    7878            self.newState(self.firstStep) 
     79            # FIXME: If we have handshakes that return things, we need to check for them here 
    7980            return self.firstStep(message) 
    8081 
     
    101102    def start(self,message): 
    102103        if message.type == 'HANDSHAKE': 
    103             if message.data['protocol'] == 'opencoin 1.0': 
     104             
     105            # NOTE: We do not do set up the newState. If this fails, it comes right back to handshakes 
     106            if not isinstance(message.data, types.ListType): 
     107                return ProtocolErrorMessage('aHP') 
     108             
     109            for var in message.data: 
     110                try: 
     111                    key, value = var 
     112                except ValueError: 
     113                    return ProtocolErrorMessage('aHP') 
     114             
     115            if not message.data: 
     116                return ProtocolErrorMessage('aHP') 
     117 
     118            # Make a dictionary of options in the handshake 
     119 
     120            options = {} 
     121            for var in message.data: 
     122                key, value = var 
     123                if key in options: 
     124                    raise ProtocolErrorMessage('aHP') 
     125                 
     126                options[key] = value 
     127 
     128            # FIXME: If we allow opencoin 1.0+, we need to check for that as well 
     129            if options['protocol'] == 'opencoin 1.0': 
    104130                # Set up a state where the handshake no longer is needed. 
    105131                self.old_start = self.start 
     
    140166    >>> css = TokenSpendSender([coin1,coin2],'foobar') 
    141167    >>> css.state(Message(None)) 
    142     <Message('HANDSHAKE',{'protocol': 'opencoin 1.0'})> 
     168    <Message('HANDSHAKE',[['protocol', 'opencoin 1.0']])> 
    143169    >>> css.state(Message('HANDSHAKE_ACCEPT',None)) 
    144170    <Message('SUM_ANNOUNCE',['...', '3', 'foobar'])> 
     
    378404    >>> tts = TransferTokenSender('my account',[],[coin1, coin2],type='redeem') 
    379405    >>> tts.state(Message(None)) 
    380     <Message('HANDSHAKE',{'protocol': 'opencoin 1.0'})> 
     406    <Message('HANDSHAKE',[['protocol', 'opencoin 1.0']])> 
    381407    >>> tts.state(Message('HANDSHAKE_ACCEPT',None)) 
    382408    <Message('TRANSFER_TOKEN_REQUEST',['...', 'my account', [], [[(...)], [(...)]], [['type', 'redeem']]])> 
     
    874900    >>> fmp = fetchMintKeyProtocol(denominations=['1']) 
    875901    >>> fmp.state(Message(None)) 
    876     <Message('HANDSHAKE',{'protocol': 'opencoin 1.0'})> 
     902    <Message('HANDSHAKE',[['protocol', 'opencoin 1.0']])> 
    877903    >>> fmp.state(Message('HANDSHAKE_ACCEPT',None)) 
    878904    <Message('MINT_KEY_FETCH_DENOMINATION',[['1'], '0'])> 
     
    892918    >>> fmp = fetchMintKeyProtocol(keyids=['sj17RxE1hfO06+oTgBs9Z7xLut/3NN+nHJbXSJYTks0=']) 
    893919    >>> fmp.state(Message(None)) 
    894     <Message('HANDSHAKE',{'protocol': 'opencoin 1.0'})> 
     920    <Message('HANDSHAKE',[['protocol', 'opencoin 1.0']])> 
    895921    >>> fmp.state(Message('HANDSHAKE_ACCEPT')) 
    896922    <Message('MINT_KEY_FETCH_KEYID',['sj17RxE1hfO06+oTgBs9Z7xLut/3NN+nHJbXSJYTks0='])> 
  • trunk/pyopencoin/oc/tests.py

    r211 r215  
    1919>>> t = ClientTest(issuer.listen) 
    2020>>> walletA.fetchMintKey(t,denominations=['1']) 
    21 Client <Message('HANDSHAKE',{'protocol': 'opencoin 1.0'})> 
     21Client <Message('HANDSHAKE',[['protocol', 'opencoin 1.0']])> 
    2222Server <Message('HANDSHAKE_ACCEPT',None)> 
    2323Client <Message('MINT_KEY_FETCH_DENOMINATION',[['1'], '0'])> 
     
    3232>>> t = ClientTest(issuer.listen) 
    3333>>> walletA.fetchMintKey(t,denominations=['1']) 
    34 Client <Message('HANDSHAKE',{'protocol': 'opencoin 1.0'})> 
     34Client <Message('HANDSHAKE',[['protocol', 'opencoin 1.0']])> 
    3535Server <Message('HANDSHAKE_ACCEPT',None)> 
    3636Client <Message('MINT_KEY_FETCH_DENOMINATION',[['1'], '0'])> 
     
    4646>>> walletB.coins = [coin1, coin2] 
    4747>>> walletB.transferTokens(t,'myaccount',[],[coin1, coin2],type='redeem') 
    48 Client <Message('HANDSHAKE',{'protocol': 'opencoin 1.0'})> 
     48Client <Message('HANDSHAKE',[['protocol', 'opencoin 1.0']])> 
    4949Server <Message('HANDSHAKE_ACCEPT',None)> 
    5050Client <Message('TRANSFER_TOKEN_REQUEST',['...', 'myaccount', [], [[(...)], [(...)]], [['type', 'redeem']]])> 
     
    6969 
    7070>>> walletB.transferTokens(t, 'myaccount', blanks, walletB.coins, type='exchange') 
    71 Client <Message('HANDSHAKE',{'protocol': 'opencoin 1.0'})> 
     71Client <Message('HANDSHAKE',[['protocol', 'opencoin 1.0']])> 
    7272Server <Message('HANDSHAKE_ACCEPT',None)> 
    7373Client <Message('TRANSFER_TOKEN_REQUEST',['...', 'myaccount', [['...', ['...', '...', '...']]], [[(...)], [(...)]], [['type', 'exchange']]])> 
     
    8686>>> walletA.coins=[coin1] 
    8787>>> walletA.sendCoins(t, target='a book', amount=1) 
    88 walletA <Message('HANDSHAKE',{'protocol': 'opencoin 1.0'})> 
     88walletA <Message('HANDSHAKE',[['protocol', 'opencoin 1.0']])> 
    8989walletB <Message('HANDSHAKE_ACCEPT',None)> 
    9090walletA <Message('SUM_ANNOUNCE',['...', '...', '...', '1', 'a book'])> 
    9191walletB <Message('SUM_ACCEPT',None)> 
    9292walletA <Message('SPEND_TOKEN_REQUEST',['...', [[(...)]], 'a book'])> 
    93 walletB <Message('HANDSHAKE',{'protocol': 'opencoin 1.0'})> 
     93walletB <Message('HANDSHAKE',[['protocol', 'opencoin 1.0']])> 
    9494issuer <Message('HANDSHAKE_ACCEPT',None)> 
    9595walletB <Message('TRANSFER_TOKEN_REQUEST',['...', 'my account', [], [[(...)]], [['type', 'redeem']]])>