Skip to content

Commit

Permalink
Fix multiple handlers don't work
Browse files Browse the repository at this point in the history
From the map of handlers, all were overwritten by one of them
  • Loading branch information
doingodswork committed Jan 14, 2021
1 parent e42b910 commit 4a3ca2b
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions handlers.go
Expand Up @@ -104,23 +104,31 @@ func createManifestHandler(manifest Manifest, logger *zap.Logger, manifestCallba
func createCatalogHandler(catalogHandlers map[string]CatalogHandler, cacheAge time.Duration, cachePublic, handleEtag bool, logger *zap.Logger, userDataType reflect.Type, userDataIsBase64 bool) fiber.Handler {
handlers := make(map[string]handler, len(catalogHandlers))
for k, v := range catalogHandlers {
handlers[k] = func(ctx context.Context, id string, userData interface{}) (interface{}, error) {
return v(ctx, id, userData)
}
handlers[k] = convertCatalogHandler(v)
}
return createHandler("catalog", handlers, []byte("metas"), cacheAge, cachePublic, handleEtag, logger, userDataType, userDataIsBase64)
}

func createStreamHandler(streamHandlers map[string]StreamHandler, cacheAge time.Duration, cachePublic, handleEtag bool, logger *zap.Logger, userDataType reflect.Type, userDataIsBase64 bool) fiber.Handler {
handlers := make(map[string]handler, len(streamHandlers))
for k, v := range streamHandlers {
handlers[k] = func(ctx context.Context, id string, userData interface{}) (interface{}, error) {
return v(ctx, id, userData)
}
handlers[k] = convertStreamHandler(v)
}
return createHandler("stream", handlers, []byte("streams"), cacheAge, cachePublic, handleEtag, logger, userDataType, userDataIsBase64)
}

func convertCatalogHandler(h CatalogHandler) handler {
return func(ctx context.Context, id string, userData interface{}) (interface{}, error) {
return h(ctx, id, userData)
}
}

func convertStreamHandler(h StreamHandler) handler {
return func(ctx context.Context, id string, userData interface{}) (interface{}, error) {
return h(ctx, id, userData)
}
}

// Common handler (same signature as both catalog and stream handler)
type handler func(ctx context.Context, id string, userData interface{}) (interface{}, error)

Expand Down

0 comments on commit 4a3ca2b

Please sign in to comment.