Skip to content

Commit 0ab24c5

Browse files
committed
feat: adding PublishTxn function publishing the txn payload in go and consuming it in ts
1 parent 4ffe613 commit 0ab24c5

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

backend/mote/src/config/config.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,16 @@ var (
2020
BTC_RPC_HOST = "localhost:8332"
2121
BTC_RPC_PORT = "8332"
2222
BTC_POST_MODE = true
23-
JWT_ALG = jose.RS256
2423
AUTH_JWT_PUBLIC_KEY = "-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqx+7XJxJR+0Lp8hLFKYr5Gc+0RPIdaZJ18GH8b//oMn7PCVe0gLQDkxjvhKo2ySMgWSOSGaNJkZXLhN4jlot/xaulN3dSbrgQPxvx3ALd3nXJaTLOb7xBODd196r+Ylg1QPICdrBQVi6qAXacq/UBK8K7BWQ0TG2/R9aB5mNSGtY3Ogj9xp2MP5LTi7f2Alj6IwSFRN+9SCmH3NiQzNUPBWJB02Lgx1oxwtfevkQ3BpwIqzkOTTE1G7PXgKbYRBUlUNqwvMIjk89tRf/qHgMbRPGYYNu7XoRt8AOVgNFUcL51Gb9vM75XstWoAh6BwYQsceEXUU7dgIJem9zItFRdwIDAQAB-----END PUBLIC KEY-----"
2524
AUTH_JWT_PRIVATE_KEY = "-----BEGIN PRIVATE KEY-----MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCrH7tcnElH7QunyEsUpivkZz7RE8h1pknXwYfxv/+gyfs8JV7SAtAOTGO+EqjbJIyBZI5IZo0mRlcuE3iOWi3/Fq6U3d1JuuBA/G/HcAt3edclpMs5vvEE4N3X3qv5iWDVA8gJ2sFBWLqoBdpyr9QErwrsFZDRMbb9H1oHmY1Ia1jc6CP3GnYw/ktOLt/YCWPojBIVE371IKYfc2JDM1Q8FYkHTYuDHWjHC196+RDcGnAirOQ5NMTUbs9eApthEFSVQ2rC8wiOTz21F/+oeAxtE8Zhg27tehG3wA5WA0VRwvnUZv28zvley1agCHoHBhCxx4RdRTt2Agl6b3Mi0VF3AgMBAAECggEAMom1kN1LOyXDynJ50ghdcCAZyi+YhT5uEn1Cg+AbQ8ZDH3k97rIL9h0TXAAwxD+gC1rCNpmq2AHwH1h6wzfY27w8JRT9FJhPQIINFQ5/JHLkWma36j78+V7bxbQqgBDVezOZsWdcqcrlnVfVMwfAiv2TMTQRR+bxzwGiWho8QoWNq1UcA8GGOE3vzWGrZJbgVwG43xUVDJtMem9w4QwlHLwekP3Q46Lqx1AOtesN39h/HduJtWtYGcw/t2TkIW9UibmBqZy7rkZW+4hCXhGBI6YhAUYnuyP6ZT+r1+J2aPlJeo2yIyjc6YVxoFwUR7QWtINzuBtG9v/YXfmtYCnEIQKBgQDd3E/nX4Vc7xolvoQZzN+0XWnyLqPgtAL63RLFfb8/lhnHHzca2k2eI0+P6I9etDa9c+i4l7/RM5LUkwxd8RGH6S4m8FiUkdKyaiwK1PAGRiUbWaij9WjKVjp7QhEtisQvtyMa9quwpv3C02zbD31/PqgeTmXOH0Aweh162qyeBwKBgQDFdMQ13JCkQe3GNO06EEPE+NjFkLqBVP2leDXmUVZRnHUN4OMpjCb9H0+/4rOAusCRmS9kALoeo6U9ykC5mqUViVzeTqnHXctD4llvEzSngDU/4+cbUQG3obj8JG9lupe/p3r6gRvB13nWiwVzj2wgK2SY0HGG1gaRaIS3K2nVEQKBgQCNhlJ6V9as9+GIHkYKZ0R0u/ovgU0MtAgKmye0T4jGOSvsd58hRAyrSf8g38tFMFSS+fOEfVjhTLLnY35KFtOGDVthf4QiEfuD0HKT3k3W0rws/D61iID2QZdAtV5b3N9VSM/eDWhsYboSo+gWvYTivMdlvcD3gbvisKNJkWD31QKBgCdgIqSPCHUJBK6K7WevyKPl7+xt8RNLbI1rzGvSeoEpzxnmZ8ZoQXomnVOplJwuIaqnPpEVqAfmIFSTGZcppJQH4XIfg7HTHW67G5SP4ucoJPZJr1N+MvZ4lJgLd/90V0CL2HVN+8gK/SvwazThO/GqVZQ3tPvrgEHM8vJIAQHRAoGAEjFMNmitScLogo9Cq5oX88/KpDOfCi+IG19g0HdaepgzreDzallcKf/XnXX9d7wuTuoSRNsq7RfCmLAUlzC+Waw0dpwLkZjgeVvFdrADGOFDKEovesZ0NBQ+Ln0SXJVRaynRxgnrjYINE+1I3uE8XZie4NMh5pybTXBpyx/cIz0=-----END PRIVATE KEY-----"
2625
)
2726

2827
const (
28+
JWT_ALG = jose.RS256
2929
CLIENT_URL = "http://localhost:3000"
3030
PORT = 8085
31+
KAFKA_URL = "localhost:9092"
32+
KAFKA_TXN_TOPIC = "txn4"
3133
)
3234

3335
func init() {

backend/mote/src/utils/utils.go

+37
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@ package utils
33
import (
44
"crypto/rsa"
55
"crypto/x509"
6+
"encoding/json"
67
"encoding/pem"
78
"errors"
89
"log"
910
"net/http"
1011
"time"
1112

1213
"mote/src/config"
14+
"mote/src/types"
1315

16+
"github.com/IBM/sarama"
1417
jose "github.com/go-jose/go-jose/v4"
1518
"github.com/go-jose/go-jose/v4/jwt"
1619
"github.com/gorilla/securecookie"
@@ -106,3 +109,37 @@ func ImportSPKI(publicKeyPem string) (*rsa.PublicKey, error) {
106109

107110
return rsaPub, nil
108111
}
112+
113+
114+
func PublishTxn(txn types.Txn) {
115+
brokers := []string{config.KAFKA_URL}
116+
117+
kConfig := sarama.NewConfig()
118+
kConfig.Producer.RequiredAcks = sarama.WaitForLocal
119+
kConfig.Producer.Compression = sarama.CompressionGZIP
120+
kConfig.Producer.Flush.Frequency = 500 * time.Millisecond
121+
122+
producer, err := sarama.NewAsyncProducer(brokers, kConfig)
123+
if err != nil {
124+
log.Fatalf("Error creating Kafka producer: %v", err)
125+
}
126+
defer producer.Close()
127+
128+
jsonData, err := json.Marshal(txn)
129+
if err != nil {
130+
log.Fatalf("Error marshalling JSON: %v", err)
131+
}
132+
133+
producer.Input() <- &sarama.ProducerMessage{
134+
Topic: config.KAFKA_TXN_TOPIC,
135+
Key: sarama.StringEncoder("txn:" + txn.Hash),
136+
Value: sarama.ByteEncoder(jsonData),
137+
}
138+
139+
// select {
140+
// case <-producer.Successes():
141+
// log.Println("Message published successfully to Kafka!")
142+
// case err := <-producer.Errors():
143+
// log.Fatalf("Failed to publish message to Kafka: %v", err.Err)
144+
// }
145+
}

0 commit comments

Comments
 (0)