From 653b1bde94b89d91862007a18b8730ff58673f59 Mon Sep 17 00:00:00 2001
From: bodqhrohro <bodqhrohro@gmail.com>
Date: Sun, 24 Nov 2019 19:10:29 +0200
Subject: Telegram authorization

---
 xmpp/gateway/gateway.go | 53 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 xmpp/gateway/gateway.go

(limited to 'xmpp/gateway')

diff --git a/xmpp/gateway/gateway.go b/xmpp/gateway/gateway.go
new file mode 100644
index 0000000..0c22677
--- /dev/null
+++ b/xmpp/gateway/gateway.go
@@ -0,0 +1,53 @@
+package gateway
+
+import (
+	"encoding/xml"
+
+	log "github.com/sirupsen/logrus"
+	"gosrc.io/xmpp"
+	"gosrc.io/xmpp/stanza"
+)
+
+// Jid stores the component's JID object
+var Jid *xmpp.Jid
+
+// SendMessage creates and sends a message stanza
+func SendMessage(to string, from string, body string, component *xmpp.Component) {
+	componentJid := Jid.Full()
+
+	var logFrom string
+	var messageFrom string
+	if from == "" {
+		logFrom = componentJid
+		messageFrom = componentJid
+	} else {
+		logFrom = from
+		messageFrom = from + "@" + componentJid
+	}
+
+	log.WithFields(log.Fields{
+		"from": logFrom,
+		"to":   to,
+	}).Warn("Got message")
+
+	message := stanza.Message{
+		Attrs: stanza.Attrs{
+			From: messageFrom,
+			To:   to,
+			Type: "chat",
+		},
+		Body: body,
+	}
+
+	// explicit check, as marshalling is expensive
+	if log.GetLevel() == log.DebugLevel {
+		xmlMessage, err := xml.Marshal(message)
+		if err == nil {
+			log.Debug(string(xmlMessage))
+		} else {
+			log.Debugf("%#v", message)
+		}
+	}
+
+	_ = component.Send(message)
+}
-- 
cgit v1.2.3