From b4e56e34a4f6b6b3979e9523731b8952162ad143 Mon Sep 17 00:00:00 2001 From: Brian Ginsburg <7957636+bgins@users.noreply.github.com> Date: Fri, 18 Oct 2024 15:22:20 -0700 Subject: [PATCH] feat: Add Lilypad version HTTP header (#408) * feat: Add X-Lilypad-Version header * chore: Log version header on add resource offer requests --- pkg/http/utils.go | 14 ++++++++++++++ pkg/solver/server.go | 3 +++ 2 files changed, 17 insertions(+) diff --git a/pkg/http/utils.go b/pkg/http/utils.go index a8a0fb03..7ce09a96 100644 --- a/pkg/http/utils.go +++ b/pkg/http/utils.go @@ -5,6 +5,7 @@ import ( "crypto/ecdsa" "encoding/base64" "encoding/json" + "errors" "fmt" "io" stdlog "log" @@ -13,6 +14,7 @@ import ( "strings" "github.com/hashicorp/go-retryablehttp" + "github.com/lilypad-tech/lilypad/pkg/system" "github.com/lilypad-tech/lilypad/pkg/web3" "github.com/rs/zerolog/log" ) @@ -24,6 +26,9 @@ const X_LILYPAD_USER_HEADER = "X-Lilypad-User" // this is the signature of the message const X_LILYPAD_SIGNATURE_HEADER = "X-Lilypad-Signature" +// the version run by the client or service +const X_LILYPAD_VERSION_HEADER = "X-Lilypad-Version" + // the context name we keep the address const CONTEXT_ADDRESS = "address" @@ -100,6 +105,7 @@ func AddHeaders( } req.Header.Add(X_LILYPAD_USER_HEADER, userPayload) req.Header.Add(X_LILYPAD_SIGNATURE_HEADER, userSignature) + req.Header.Add(X_LILYPAD_VERSION_HEADER, system.Version) return nil } @@ -161,6 +167,14 @@ func GetAddressFromHeaders(req *http.Request) (string, error) { return signatureAddress, nil } +func GetVersionFromHeaders(req *http.Request) (string, error) { + versionHeader := req.Header.Get(X_LILYPAD_VERSION_HEADER) + if versionHeader == "" { + return "", errors.New("missing version header") + } + return versionHeader, nil +} + func CorsMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) { res.Header().Set("Access-Control-Allow-Origin", "*") diff --git a/pkg/solver/server.go b/pkg/solver/server.go index 7e52ab70..d30b86ab 100644 --- a/pkg/solver/server.go +++ b/pkg/solver/server.go @@ -289,6 +289,9 @@ func (solverServer *solverServer) addJobOffer(jobOffer data.JobOffer, res coreht } func (solverServer *solverServer) addResourceOffer(resourceOffer data.ResourceOffer, res corehttp.ResponseWriter, req *corehttp.Request) (*data.ResourceOfferContainer, error) { + versionHeader, _ := http.GetVersionFromHeaders(req) + log.Debug().Msgf("resource provider adding offer with version header %s", versionHeader) + signerAddress, err := http.GetAddressFromHeaders(req) if err != nil { log.Error().Err(err).Msgf("have error parsing user address")