openmeter / meter /httphandler /handler.go
Leon4gr45's picture
Upload folder using huggingface_hub (part 5)
cee2387 verified
Raw
History Blame Contribute Delete
2.01 kB
package httpdriver
import (
"context"
"errors"
"net/http"
"github.com/openmeterio/openmeter/openmeter/customer"
"github.com/openmeterio/openmeter/openmeter/meter"
"github.com/openmeterio/openmeter/openmeter/namespace/namespacedriver"
"github.com/openmeterio/openmeter/openmeter/streaming"
"github.com/openmeterio/openmeter/openmeter/subject"
"github.com/openmeterio/openmeter/pkg/framework/commonhttp"
"github.com/openmeterio/openmeter/pkg/framework/transport/httptransport"
)
type Handler interface {
MeterHandler
}
type MeterHandler interface {
ListMeters() ListMetersHandler
GetMeter() GetMeterHandler
CreateMeter() CreateMeterHandler
UpdateMeter() UpdateMeterHandler
DeleteMeter() DeleteMeterHandler
QueryMeter() QueryMeterHandler
QueryMeterPost() QueryMeterPostHandler
QueryMeterPostCSV() QueryMeterPostCSVHandler
QueryMeterCSV() QueryMeterCSVHandler
ListSubjects() ListSubjectsHandler
ListGroupByValues() ListGroupByValuesHandler
}
var _ Handler = (*handler)(nil)
type handler struct {
namespaceDecoder namespacedriver.NamespaceDecoder
options []httptransport.HandlerOption
customerService customer.Service
meterService meter.ManageService
streaming streaming.Connector
subjectService subject.Service
}
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,
customerService customer.Service,
meterService meter.ManageService,
streaming streaming.Connector,
subjectService subject.Service,
options ...httptransport.HandlerOption,
) Handler {
return &handler{
namespaceDecoder: namespaceDecoder,
options: options,
customerService: customerService,
meterService: meterService,
streaming: streaming,
subjectService: subjectService,
}
}