From ef2147982e647a6cfe6b12e93146f02a36ec1006 Mon Sep 17 00:00:00 2001
From: "alexey.stratulat" <alexey.stratulat@demlabs.net>
Date: Fri, 14 Jan 2022 17:00:49 +0700
Subject: [PATCH] [+] The getTxByHash function has been added for the ChainNet
 class, in fact, this function is a wrapper for the
 dap_chain_net_get_tx_by_hash function and is engaged in obtaining a
 transaction by hash.

---
 .../net/include/libdap_chain_net_python.h        |  2 ++
 .../net/src/libdap_chain_net_python.c            | 16 ++++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/modules/cellframe-sdk/net/include/libdap_chain_net_python.h b/modules/cellframe-sdk/net/include/libdap_chain_net_python.h
index 282da126..d6bf30b2 100644
--- a/modules/cellframe-sdk/net/include/libdap_chain_net_python.h
+++ b/modules/cellframe-sdk/net/include/libdap_chain_net_python.h
@@ -76,6 +76,7 @@ PyObject *dap_chain_net_links_connect_py(PyObject *self, PyObject *args);
 PyObject *dap_chain_net_get_chain_by_chain_type_py(PyObject *self, PyObject *args);
 PyObject *dap_chain_net_get_ledger_py(PyObject *self, PyObject *args);
 PyObject *dap_chain_net_get_name_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_net_get_tx_by_hash_py(PyObject *self, PyObject *args);
 
 static PyMethodDef DapChainNetMethods[] = {
     {"loadAll", dap_chain_net_load_all_py, METH_NOARGS | METH_STATIC, ""},
@@ -100,6 +101,7 @@ static PyMethodDef DapChainNetMethods[] = {
     {"getChainByChainType", dap_chain_net_get_chain_by_chain_type_py, METH_VARARGS, ""},
     {"getLedger", dap_chain_net_get_ledger_py, METH_NOARGS, ""},
     {"getName", dap_chain_net_get_name_py, METH_NOARGS, ""},
+    {"getTxByHash", dap_chain_net_get_tx_by_hash_py, METH_VARARGS, ""},
     {NULL, NULL, 0, NULL}
 };
 
diff --git a/modules/cellframe-sdk/net/src/libdap_chain_net_python.c b/modules/cellframe-sdk/net/src/libdap_chain_net_python.c
index ae9a4b94..3f81f3f6 100644
--- a/modules/cellframe-sdk/net/src/libdap_chain_net_python.c
+++ b/modules/cellframe-sdk/net/src/libdap_chain_net_python.c
@@ -167,3 +167,19 @@ PyObject *dap_chain_net_get_name_py(PyObject *self, PyObject *args){
     PyObject *obj_name = PyUnicode_FromString(((PyDapChainNetObject*)self)->chain_net->pub.name);
     return obj_name;
 }
+
+PyObject *dap_chain_net_get_tx_by_hash_py(PyObject *self, PyObject *args){
+    PyObject *obj_hash;
+    if (!PyArg_ParseTuple(args, "O", &obj_hash)){
+        return NULL;
+    }
+    PyDapChainDatumTxObject *obj_tx = PyObject_New(PyDapChainDatumTxObject, &DapChainDatumTx_DapChainDatumTxObjectType);
+    PyObject_Dir((PyObject*)obj_tx);
+    obj_tx->datum_tx = dap_chain_net_get_tx_by_hash(((PyDapChainNetObject*)self)->chain_net,
+                                 ((PyDapHashFastObject*)obj_hash)->hash_fast, TX_SEARCH_TYPE_LOCAL);
+    if(obj_tx->datum_tx == NULL){
+        Py_XDECREF(obj_tx);
+        return Py_None;
+    }
+    return (PyObject*)obj_tx;
+}
-- 
GitLab