예제 #1
0
파일: node.py 프로젝트: ashcherbakov/sovrin
 def processGetIssuerKeyReq(self, request: Request, frm: str):
     self.transmitToClient(RequestAck(*request.key), frm)
     keys = self.graphStore.getIssuerKeys(request.operation[ORIGIN],
                                          request.operation[REF])
     result = {TXN_ID: self.genTxnId(request.identifier, request.reqId)}
     result.update(request.operation)
     result[DATA] = json.dumps(keys, sort_keys=True)
     result.update({
         f.IDENTIFIER.nm: request.identifier,
         f.REQ_ID.nm: request.reqId,
     })
     self.transmitToClient(Reply(result), frm)
예제 #2
0
 def processGetNymReq(self, request: Request, frm: str):
     self.transmitToClient(RequestAck(request.reqId), frm)
     nym = request.operation[TARGET_NYM]
     txn = self.graphStore.getAddNymTxn(nym)
     txnId = self.genTxnId(request.identifier, request.reqId)
     result = {
         f.IDENTIFIER.nm: request.identifier,
         f.REQ_ID.nm: request.reqId,
         DATA: json.dumps(txn) if txn else None,
         TXN_ID: txnId
     }
     result.update(request.operation)
     self.transmitToClient(Reply(result), frm)
예제 #3
0
 def processGetNymReq(self, request: Request, frm: str):
     self.transmitToClient(RequestAck(*request.key), frm)
     nym = request.operation[TARGET_NYM]
     txn = self.graphStore.getAddNymTxn(nym)
     txnId = self.genTxnId(request.identifier, request.reqId)
     # TODO: We should have a single JSON encoder which does the
     # encoding for us, like sorting by keys, handling datetime objects.
     result = {f.IDENTIFIER.nm: request.identifier,
               f.REQ_ID.nm: request.reqId,
               DATA: json.dumps(txn, sort_keys=True) if txn else None,
               TXN_ID: txnId
               }
     result.update(request.operation)
     self.transmitToClient(Reply(result), frm)
예제 #4
0
 def processGetIssuerKeyReq(self, request: Request, frm: str):
     self.transmitToClient(RequestAck(request.reqId), frm)
     keys = self.graphStore.getIssuerKeys(request.operation[ORIGIN],
                                          request.operation[REFERENCE])
     # attrNames = request.operation[RAW]
     # nym = request.operation[TARGET_NYM]
     # attrs = self.graphStore.getRawAttrs(nym, attrNames)
     result = {TXN_ID: self.genTxnId(request.identifier, request.reqId)}
     result.update(request.operation)
     result[DATA] = json.dumps(keys)
     result.update({
         f.IDENTIFIER.nm: request.identifier,
         f.REQ_ID.nm: request.reqId,
     })
     self.transmitToClient(Reply(result), frm)
예제 #5
0
파일: node.py 프로젝트: ashcherbakov/sovrin
 def processGetAttrsReq(self, request: Request, frm: str):
     self.transmitToClient(RequestAck(*request.key), frm)
     attrName = request.operation[RAW]
     nym = request.operation[TARGET_NYM]
     attrWithSeqNo = self.graphStore.getRawAttrs(nym, attrName)
     result = {TXN_ID: self.genTxnId(request.identifier, request.reqId)}
     if attrWithSeqNo:
         attr = {attrName: attrWithSeqNo[attrName][0]}
         result[DATA] = json.dumps(attr, sort_keys=True)
         result[F.seqNo.name] = attrWithSeqNo[attrName][1]
     result.update(request.operation)
     result.update({
         f.IDENTIFIER.nm: request.identifier,
         f.REQ_ID.nm: request.reqId,
     })
     self.transmitToClient(Reply(result), frm)
예제 #6
0
파일: node.py 프로젝트: ashcherbakov/sovrin
 def processGetTxnReq(self, request: Request, frm: str):
     nym = request.operation[TARGET_NYM]
     origin = request.identifier
     if nym != origin:
         # TODO not sure this is correct; why does it matter?
         msg = "You can only receive transactions for yourself"
         self.transmitToClient(RequestNack(*request.key, msg), frm)
     else:
         self.transmitToClient(RequestAck(*request.key), frm)
         data = request.operation.get(DATA)
         addNymTxn = self.graphStore.getAddNymTxn(origin)
         txnIds = [addNymTxn[TXN_ID], ] + self.graphStore. \
             getAddAttributeTxnIds(origin)
         # If sending transactions to a user then should send user's
         # sponsor creation transaction also
         if addNymTxn.get(ROLE) == USER:
             sponsorNymTxn = self.graphStore.getAddNymTxn(
                 addNymTxn.get(f.IDENTIFIER.nm))
             txnIds = [
                 sponsorNymTxn[TXN_ID],
             ] + txnIds
         # TODO: Remove this log statement
         logger.debug("{} getting replies for {}".format(self, txnIds))
         result = self.secondaryStorage.getReplies(*txnIds, seqNo=data)
         txns = sorted(list(result.values()), key=itemgetter(F.seqNo.name))
         lastTxn = str(txns[-1][F.seqNo.name]) if len(txns) > 0 else data
         result = {TXN_ID: self.genTxnId(request.identifier, request.reqId)}
         result.update(request.operation)
         # TODO: We should have a single JSON encoder which does the
         # encoding for us, like sorting by keys, handling datetime objects.
         result[DATA] = json.dumps({
             LAST_TXN: lastTxn,
             TXNS: txns
         },
                                   default=dateTimeEncoding,
                                   sort_keys=True)
         result.update({
             f.IDENTIFIER.nm: request.identifier,
             f.REQ_ID.nm: request.reqId,
         })
         self.transmitToClient(Reply(result), frm)