sign_message_controller.go raw
1 package controllers
2
3 import (
4 "context"
5
6 "github.com/getAlby/go-nostr"
7 "github.com/getAlby/hub/logger"
8 "github.com/getAlby/hub/nip47/models"
9 "github.com/sirupsen/logrus"
10 )
11
12 type signMessageParams struct {
13 Message string `json:"message"`
14 }
15
16 type signMessageResponse struct {
17 Message string `json:"message"`
18 Signature string `json:"signature"`
19 }
20
21 func (controller *nip47Controller) HandleSignMessageEvent(ctx context.Context, nip47Request *models.Request, requestEventId uint, publishResponse publishFunc) {
22 signParams := &signMessageParams{}
23 resp := decodeRequest(nip47Request, signParams)
24 if resp != nil {
25 publishResponse(resp, nostr.Tags{})
26 return
27 }
28
29 logger.Logger.WithFields(logrus.Fields{
30 "request_event_id": requestEventId,
31 }).Info("Signing message")
32
33 signature, err := controller.lnClient.SignMessage(ctx, signParams.Message)
34 if err != nil {
35 logger.Logger.WithFields(logrus.Fields{
36 "request_event_id": requestEventId,
37 }).WithError(err).Error("Failed to sign message")
38 publishResponse(&models.Response{
39 ResultType: nip47Request.Method,
40 Error: mapNip47Error(err),
41 }, nostr.Tags{})
42 return
43 }
44
45 responsePayload := signMessageResponse{
46 Message: signParams.Message,
47 Signature: signature,
48 }
49
50 publishResponse(&models.Response{
51 ResultType: nip47Request.Method,
52 Result: responsePayload,
53 }, nostr.Tags{})
54 }
55