alby-hub/nip47/controllers/sign_message_controller.go

54 lines
1.3 KiB
Go

package controllers
import (
"context"
"github.com/getAlby/go-nostr"
"github.com/getAlby/hub/logger"
"github.com/getAlby/hub/nip47/models"
"github.com/sirupsen/logrus"
)
type signMessageParams struct {
Message string `json:"message"`
}
type signMessageResponse struct {
Message string `json:"message"`
Signature string `json:"signature"`
}
func (controller *nip47Controller) HandleSignMessageEvent(ctx context.Context, nip47Request *models.Request, requestEventId uint, publishResponse publishFunc) {
signParams := &signMessageParams{}
resp := decodeRequest(nip47Request, signParams)
if resp != nil {
publishResponse(resp, nostr.Tags{})
return
}
logger.Logger.WithFields(logrus.Fields{
"request_event_id": requestEventId,
}).Info("Signing message")
signature, err := controller.lnClient.SignMessage(ctx, signParams.Message)
if err != nil {
logger.Logger.WithFields(logrus.Fields{
"request_event_id": requestEventId,
}).WithError(err).Error("Failed to sign message")
publishResponse(&models.Response{
ResultType: nip47Request.Method,
Error: mapNip47Error(err),
}, nostr.Tags{})
return
}
responsePayload := signMessageResponse{
Message: signParams.Message,
Signature: signature,
}
publishResponse(&models.Response{
ResultType: nip47Request.Method,
Result: responsePayload,
}, nostr.Tags{})
}