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)
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)
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)
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)
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)
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)