2022-12-08 13:05:19 -03:00

51 lines
1.4 KiB
Go

// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License.AGPL.txt in the project root for license information.
package billingservice
import (
"context"
"fmt"
v1 "github.com/gitpod-io/gitpod/usage-api/v1"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
)
type Interface interface {
FinalizeInvoice(ctx context.Context, invoiceId string) error
CancelSubscription(ctx context.Context, subscriptionId string) error
}
type Client struct {
b v1.BillingServiceClient
}
func New(billingServiceAddress string) (*Client, error) {
conn, err := grpc.Dial(billingServiceAddress, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
return nil, fmt.Errorf("failed to dial billing service gRPC server: %w", err)
}
return &Client{b: v1.NewBillingServiceClient(conn)}, nil
}
func (c *Client) FinalizeInvoice(ctx context.Context, invoiceId string) error {
_, err := c.b.FinalizeInvoice(ctx, &v1.FinalizeInvoiceRequest{InvoiceId: invoiceId})
if err != nil {
return fmt.Errorf("failed RPC to billing service: %s", err)
}
return nil
}
func (c *Client) CancelSubscription(ctx context.Context, subscriptionId string) error {
_, err := c.b.CancelSubscription(ctx, &v1.CancelSubscriptionRequest{SubscriptionId: subscriptionId})
if err != nil {
return fmt.Errorf("failed RPC to billing service: %s", err)
}
return nil
}