jitendra-1217/razorpay-go

reuse default clients instantiated in global functions

Opened this issue · 0 comments

we should be reusing default clients instantiated in here

return getDefaultClient().Payments(ctx, orderID)

Lines in

func GetDefaultClient() *Client {

func getDefaultClient() *Client {

can be changed to reuse if already instantiated earlier

var defaultRazorpayClient *razorpay.Client

func GetDefaultClient() *Client {
        if defaultRazorpayClient != nil {
                return defaultRazorpayClient
        }
        
        defaultRazorpayClient = NewClient(APIKey, APISecret, DefaultAPIBackend)
	return defaultRazorpayClient
}

Second Suggestion:
exposing a method to reuse razorpay client across all entities might be a good idea

func NewClient(razorpayClient *razorpay.Client) *Client {
	return &Client{razorpayClient}
}