github.com/stripe/stripe-go/v76@v76.25.0/customerbalancetransaction/client.go (about)

     1  //
     2  //
     3  // File generated from our OpenAPI spec
     4  //
     5  //
     6  
     7  // Package customerbalancetransaction provides the /customers/{customer}/balance_transactions APIs
     8  package customerbalancetransaction
     9  
    10  import (
    11  	"fmt"
    12  	"net/http"
    13  
    14  	stripe "github.com/stripe/stripe-go/v76"
    15  	"github.com/stripe/stripe-go/v76/form"
    16  )
    17  
    18  // Client is used to invoke /customers/{customer}/balance_transactions APIs.
    19  type Client struct {
    20  	B   stripe.Backend
    21  	Key string
    22  }
    23  
    24  // New creates a new customer balance transaction.
    25  func New(params *stripe.CustomerBalanceTransactionParams) (*stripe.CustomerBalanceTransaction, error) {
    26  	return getC().New(params)
    27  }
    28  
    29  // New creates a new customer balance transaction.
    30  func (c Client) New(params *stripe.CustomerBalanceTransactionParams) (*stripe.CustomerBalanceTransaction, error) {
    31  	if params == nil {
    32  		return nil, fmt.Errorf(
    33  			"params cannot be nil, and params.Customer must be set",
    34  		)
    35  	}
    36  	path := stripe.FormatURLPath(
    37  		"/v1/customers/%s/balance_transactions",
    38  		stripe.StringValue(params.Customer),
    39  	)
    40  	customerbalancetransaction := &stripe.CustomerBalanceTransaction{}
    41  	err := c.B.Call(
    42  		http.MethodPost,
    43  		path,
    44  		c.Key,
    45  		params,
    46  		customerbalancetransaction,
    47  	)
    48  	return customerbalancetransaction, err
    49  }
    50  
    51  // Get returns the details of a customer balance transaction.
    52  func Get(id string, params *stripe.CustomerBalanceTransactionParams) (*stripe.CustomerBalanceTransaction, error) {
    53  	return getC().Get(id, params)
    54  }
    55  
    56  // Get returns the details of a customer balance transaction.
    57  func (c Client) Get(id string, params *stripe.CustomerBalanceTransactionParams) (*stripe.CustomerBalanceTransaction, error) {
    58  	if params == nil {
    59  		return nil, fmt.Errorf(
    60  			"params cannot be nil, and params.Customer must be set",
    61  		)
    62  	}
    63  	path := stripe.FormatURLPath(
    64  		"/v1/customers/%s/balance_transactions/%s",
    65  		stripe.StringValue(params.Customer),
    66  		id,
    67  	)
    68  	customerbalancetransaction := &stripe.CustomerBalanceTransaction{}
    69  	err := c.B.Call(
    70  		http.MethodGet,
    71  		path,
    72  		c.Key,
    73  		params,
    74  		customerbalancetransaction,
    75  	)
    76  	return customerbalancetransaction, err
    77  }
    78  
    79  // Update updates a customer balance transaction's properties.
    80  func Update(id string, params *stripe.CustomerBalanceTransactionParams) (*stripe.CustomerBalanceTransaction, error) {
    81  	return getC().Update(id, params)
    82  }
    83  
    84  // Update updates a customer balance transaction's properties.
    85  func (c Client) Update(id string, params *stripe.CustomerBalanceTransactionParams) (*stripe.CustomerBalanceTransaction, error) {
    86  	path := stripe.FormatURLPath(
    87  		"/v1/customers/%s/balance_transactions/%s",
    88  		stripe.StringValue(params.Customer),
    89  		id,
    90  	)
    91  	customerbalancetransaction := &stripe.CustomerBalanceTransaction{}
    92  	err := c.B.Call(
    93  		http.MethodPost,
    94  		path,
    95  		c.Key,
    96  		params,
    97  		customerbalancetransaction,
    98  	)
    99  	return customerbalancetransaction, err
   100  }
   101  
   102  // List returns a list of customer balance transactions.
   103  func List(params *stripe.CustomerBalanceTransactionListParams) *Iter {
   104  	return getC().List(params)
   105  }
   106  
   107  // List returns a list of customer balance transactions.
   108  func (c Client) List(listParams *stripe.CustomerBalanceTransactionListParams) *Iter {
   109  	path := stripe.FormatURLPath(
   110  		"/v1/customers/%s/balance_transactions",
   111  		stripe.StringValue(listParams.Customer),
   112  	)
   113  	return &Iter{
   114  		Iter: stripe.GetIter(listParams, func(p *stripe.Params, b *form.Values) ([]interface{}, stripe.ListContainer, error) {
   115  			list := &stripe.CustomerBalanceTransactionList{}
   116  			err := c.B.CallRaw(http.MethodGet, path, c.Key, b, p, list)
   117  
   118  			ret := make([]interface{}, len(list.Data))
   119  			for i, v := range list.Data {
   120  				ret[i] = v
   121  			}
   122  
   123  			return ret, list, err
   124  		}),
   125  	}
   126  }
   127  
   128  // Iter is an iterator for customer balance transactions.
   129  type Iter struct {
   130  	*stripe.Iter
   131  }
   132  
   133  // CustomerBalanceTransaction returns the customer balance transaction which the iterator is currently pointing to.
   134  func (i *Iter) CustomerBalanceTransaction() *stripe.CustomerBalanceTransaction {
   135  	return i.Current().(*stripe.CustomerBalanceTransaction)
   136  }
   137  
   138  // CustomerBalanceTransactionList returns the current list object which the iterator is
   139  // currently using. List objects will change as new API calls are made to
   140  // continue pagination.
   141  func (i *Iter) CustomerBalanceTransactionList() *stripe.CustomerBalanceTransactionList {
   142  	return i.List().(*stripe.CustomerBalanceTransactionList)
   143  }
   144  
   145  func getC() Client {
   146  	return Client{stripe.GetBackend(stripe.APIBackend), stripe.Key}
   147  }