| package httpdriver |
|
|
| import ( |
| "context" |
| "fmt" |
| "net/http" |
|
|
| "github.com/openmeterio/openmeter/api" |
| subscriptionaddon "github.com/openmeterio/openmeter/openmeter/subscription/addon" |
| "github.com/openmeterio/openmeter/pkg/framework/commonhttp" |
| "github.com/openmeterio/openmeter/pkg/framework/transport/httptransport" |
| "github.com/openmeterio/openmeter/pkg/models" |
| ) |
|
|
| type ( |
| GetSubscriptionAddonParams = struct { |
| SubscriptionID string |
| SubscriptionAddonID string |
| } |
| GetSubscriptionAddonRequest = struct { |
| SubscriptionID models.NamespacedID |
| SubscriptionAddonID models.NamespacedID |
| } |
| GetSubscriptionAddonResponse = api.SubscriptionAddon |
| GetSubscriptionAddonHandler = httptransport.HandlerWithArgs[GetSubscriptionAddonRequest, GetSubscriptionAddonResponse, GetSubscriptionAddonParams] |
| ) |
|
|
| func (h *handler) GetSubscriptionAddon() GetSubscriptionAddonHandler { |
| return httptransport.NewHandlerWithArgs( |
| func(ctx context.Context, r *http.Request, params GetSubscriptionAddonParams) (GetSubscriptionAddonRequest, error) { |
| ns, err := h.resolveNamespace(ctx) |
| if err != nil { |
| return GetSubscriptionAddonRequest{}, fmt.Errorf("failed to resolve namespace: %w", err) |
| } |
|
|
| return GetSubscriptionAddonRequest{ |
| SubscriptionID: models.NamespacedID{Namespace: ns, ID: params.SubscriptionID}, |
| SubscriptionAddonID: models.NamespacedID{Namespace: ns, ID: params.SubscriptionAddonID}, |
| }, nil |
| }, |
| func(ctx context.Context, req GetSubscriptionAddonRequest) (GetSubscriptionAddonResponse, error) { |
| res, err := h.SubscriptionAddonService.Get(ctx, subscriptionaddon.GetSubscriptionAddonInput{ |
| NamespacedID: req.SubscriptionAddonID, |
| }) |
| if err != nil { |
| return GetSubscriptionAddonResponse{}, err |
| } |
|
|
| view, err := h.SubscriptionService.GetView(ctx, req.SubscriptionID) |
| if err != nil { |
| return GetSubscriptionAddonResponse{}, err |
| } |
|
|
| return MapSubscriptionAddonToResponse(view, *res) |
| }, |
| commonhttp.JSONResponseEncoderWithStatus[GetSubscriptionAddonResponse](http.StatusOK), |
| httptransport.AppendOptions( |
| h.Options, |
| httptransport.WithOperationName("getSubscriptionAddon"), |
| )..., |
| ) |
| } |
|
|