@@ -21,6 +21,7 @@ import (
2121 "github.com/absmach/supermq"
2222 grpcChannelsV1 "github.com/absmach/supermq/api/grpc/channels/v1"
2323 grpcClientsV1 "github.com/absmach/supermq/api/grpc/clients/v1"
24+ grpcDomainsV1 "github.com/absmach/supermq/api/grpc/domains/v1"
2425 adapter "github.com/absmach/supermq/http"
2526 httpapi "github.com/absmach/supermq/http/api"
2627 "github.com/absmach/supermq/http/middleware"
@@ -201,12 +202,15 @@ func main() {
201202 return
202203 }
203204
204- svc , err := newService (pub , authn , cacheConfig , clientsClient , channelsClient , domainsClient , logger , tracer )
205+ resolver := messaging .NewTopicResolver (channelsClient , domainsClient )
206+ handler , err := newHandler (nps , authn , cacheConfig , clientsClient , channelsClient , domainsClient , logger , tracer )
205207 if err != nil {
206208 logger .Error (fmt .Sprintf ("failed to create service: %s" , err ))
207209 exitCode = 1
208210 return
209211 }
212+ svc := newService (clientsClient , channelsClient , nps , logger , tracer )
213+
210214 targetServerCfg := server.Config {Port : targetHTTPPort }
211215
212216 hs := httpserver .NewServer (ctx , cancel , svcName , targetServerCfg , httpapi .MakeHandler (ctx , svc , resolver , logger , cfg .InstanceID ), logger )
@@ -233,27 +237,28 @@ func main() {
233237 }
234238}
235239
236- func newService (pub messaging.Publisher , authn smqauthn.Authentication , cacheCfg messaging.CacheConfig , clients grpcClientsV1.ClientsServiceClient , channels grpcChannelsV1.ChannelsServiceClient , domains grpcDomainsV1.DomainsServiceClient , logger * slog.Logger , tracer trace.Tracer ) (session.Handler , error ) {
240+ func newHandler (pub messaging.Publisher , authn smqauthn.Authentication , cacheCfg messaging.CacheConfig , clients grpcClientsV1.ClientsServiceClient , channels grpcChannelsV1.ChannelsServiceClient , domains grpcDomainsV1.DomainsServiceClient , logger * slog.Logger , tracer trace.Tracer ) (session.Handler , error ) {
237241 parser , err := messaging .NewTopicParser (cacheCfg , channels , domains )
238242 if err != nil {
239243 return nil , err
240244 }
241- svc := adapter .NewHandler (pub , authn , clients , channels , parser , logger )
242- svc = handler .NewTracing (tracer , svc )
243- svc = handler .LoggingMiddleware (svc , logger )
245+ h := adapter .NewHandler (pub , authn , clients , channels , parser , logger )
246+ h = handler .NewTracing (tracer , h )
247+ h = handler .LoggingMiddleware (h , logger )
244248 counter , latency := prometheus .MakeMetrics (svcName , "handler" )
245- svc = handler .MetricsMiddleware (svc , counter , latency )
249+ h = handler .MetricsMiddleware (h , counter , latency )
246250
247- return svc
251+ return h , nil
248252}
249253
250254func newService (clientsClient grpcClientsV1.ClientsServiceClient , channels grpcChannelsV1.ChannelsServiceClient , nps messaging.PubSub , logger * slog.Logger , tracer trace.Tracer ) adapter.Service {
251255 svc := adapter .NewService (clientsClient , channels , nps )
252256 svc = middleware .Tracing (tracer , svc )
253257 svc = middleware .Logging (svc , logger )
254258 counter , latency := prometheus .MakeMetrics (svcName , "api" )
255- svc = handler .MetricsMiddleware (svc , counter , latency )
256- return svc , nil
259+ svc = middleware .Metrics (svc , counter , latency )
260+
261+ return svc
257262}
258263
259264func proxyHTTP (ctx context.Context , cfg server.Config , logger * slog.Logger , sessionHandler session.Handler ) error {
0 commit comments