Leon4gr45's picture
Upload folder using huggingface_hub (part 6)
d6f631f verified
Raw
History Blame Contribute Delete
2.87 kB
package httpdriver
import (
"context"
"errors"
"net/http"
"github.com/openmeterio/openmeter/api"
subscriptionhttp "github.com/openmeterio/openmeter/openmeter/productcatalog/subscription/http"
subscriptionworkflow "github.com/openmeterio/openmeter/openmeter/subscription/workflow"
"github.com/openmeterio/openmeter/pkg/framework/commonhttp"
"github.com/openmeterio/openmeter/pkg/framework/transport/httptransport"
"github.com/openmeterio/openmeter/pkg/models"
)
type (
UpdateSubscriptionAddonParams = struct {
SubscriptionID string
SubscriptionAddonID string
}
UpdateSubscriptionAddonRequest = struct {
WorkflowInput subscriptionworkflow.ChangeAddonQuantityWorkflowInput
SubscriptionID models.NamespacedID
}
UpdateSubscriptionAddonResponse = api.SubscriptionAddon
UpdateSubscriptionAddonHandler = httptransport.HandlerWithArgs[UpdateSubscriptionAddonRequest, UpdateSubscriptionAddonResponse, UpdateSubscriptionAddonParams]
)
func (h *handler) UpdateSubscriptionAddon() UpdateSubscriptionAddonHandler {
return httptransport.NewHandlerWithArgs(
func(ctx context.Context, r *http.Request, params UpdateSubscriptionAddonParams) (UpdateSubscriptionAddonRequest, error) {
ns, err := h.resolveNamespace(ctx)
if err != nil {
return UpdateSubscriptionAddonRequest{}, err
}
var body api.UpdateSubscriptionAddonJSONRequestBody
if err := commonhttp.JSONRequestBodyDecoder(r, &body); err != nil {
return UpdateSubscriptionAddonRequest{}, err
}
if body.Timing == nil {
return UpdateSubscriptionAddonRequest{}, errors.New("timing is required")
}
if body.Quantity == nil {
return UpdateSubscriptionAddonRequest{}, errors.New("quantity is required")
}
timing, err := subscriptionhttp.MapAPITimingToTiming(*body.Timing)
if err != nil {
return UpdateSubscriptionAddonRequest{}, err
}
return UpdateSubscriptionAddonRequest{
WorkflowInput: subscriptionworkflow.ChangeAddonQuantityWorkflowInput{
SubscriptionAddonID: models.NamespacedID{
Namespace: ns,
ID: params.SubscriptionAddonID,
},
Quantity: *body.Quantity,
Timing: timing,
},
SubscriptionID: models.NamespacedID{
Namespace: ns,
ID: params.SubscriptionID,
},
}, nil
},
func(ctx context.Context, request UpdateSubscriptionAddonRequest) (UpdateSubscriptionAddonResponse, error) {
view, addon, err := h.SubscriptionWorkflowService.ChangeAddonQuantity(ctx, request.SubscriptionID, request.WorkflowInput)
if err != nil {
return UpdateSubscriptionAddonResponse{}, err
}
return MapSubscriptionAddonToResponse(view, addon)
},
commonhttp.JSONResponseEncoderWithStatus[UpdateSubscriptionAddonResponse](http.StatusOK),
httptransport.AppendOptions(
h.Options,
httptransport.WithOperationName("updateSubscriptionAddon"),
)...,
)
}