34 lines
		
	
	
		
			940 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			940 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package wb
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"net/http"
 | 
						|
	"sipro-mps/internal/marketplace"
 | 
						|
	wbclient "sipro-mps/pkg/api/wb/client"
 | 
						|
	"sipro-mps/pkg/utils"
 | 
						|
	"time"
 | 
						|
)
 | 
						|
 | 
						|
func GetClientFromMarketplace(mp *marketplace.Marketplace) (*wbclient.Client, error) {
 | 
						|
 | 
						|
	authData, claims, err := utils.DecodeWildberriesJwt(mp.AuthDataJson)
 | 
						|
	if err != nil {
 | 
						|
		return nil, fmt.Errorf("failed to decode Wildberries JWT")
 | 
						|
	}
 | 
						|
	exp := claims["exp"].(float64)
 | 
						|
	// chec if token is expired, for now unix date
 | 
						|
	now := float64(time.Now().Unix())
 | 
						|
	if exp < now {
 | 
						|
		return nil, fmt.Errorf("token is expired")
 | 
						|
	}
 | 
						|
	securityHandler := NewWildberriesSecurityHandler(authData.Token)
 | 
						|
	httpClient := &http.Client{
 | 
						|
		Transport: NewRateLimitTransport(),
 | 
						|
	}
 | 
						|
	client, err := wbclient.NewClient("https://content-api.wildberries.ru", securityHandler, wbclient.WithClient(httpClient))
 | 
						|
	if err != nil {
 | 
						|
		return nil, fmt.Errorf("failed to create Wildberries client: %w", err)
 | 
						|
	}
 | 
						|
	return client, nil
 | 
						|
}
 |