| package httpdriver | |
| import ( | |
| "context" | |
| "errors" | |
| "net/http" | |
| "github.com/openmeterio/openmeter/openmeter/ingest" | |
| "github.com/openmeterio/openmeter/openmeter/namespace/namespacedriver" | |
| "github.com/openmeterio/openmeter/pkg/framework/commonhttp" | |
| "github.com/openmeterio/openmeter/pkg/framework/transport/httptransport" | |
| ) | |
| type Handler interface { | |
| IngestHandler | |
| } | |
| type IngestHandler interface { | |
| IngestEvents() IngestEventsHandler | |
| } | |
| type handler struct { | |
| service ingest.Service | |
| namespaceDecoder namespacedriver.NamespaceDecoder | |
| options []httptransport.HandlerOption | |
| } | |
| func (h *handler) resolveNamespace(ctx context.Context) (string, error) { | |
| ns, ok := h.namespaceDecoder.GetNamespace(ctx) | |
| if !ok { | |
| return "", commonhttp.NewHTTPError(http.StatusInternalServerError, errors.New("internal server error")) | |
| } | |
| return ns, nil | |
| } | |
| func New( | |
| namespaceDecoder namespacedriver.NamespaceDecoder, | |
| service ingest.Service, | |
| options ...httptransport.HandlerOption, | |
| ) Handler { | |
| return &handler{ | |
| namespaceDecoder: namespaceDecoder, | |
| service: service, | |
| options: options, | |
| } | |
| } | |