36 lines
		
	
	
		
			900 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			900 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package ozon
 | 
						|
 | 
						|
import (
 | 
						|
	"errors"
 | 
						|
	"git.denco.store/fakz9/ozon-api-client/ozon"
 | 
						|
	"github.com/tidwall/gjson"
 | 
						|
	"net/http"
 | 
						|
	"sipro-mps/internal/marketplace"
 | 
						|
)
 | 
						|
 | 
						|
func GetClientFromMarketplace(mp *marketplace.Marketplace) (*ozon.Client, error) {
 | 
						|
 | 
						|
	authDataParsed := gjson.Parse(mp.AuthData)
 | 
						|
	clientIdResult := authDataParsed.Get("clientId")
 | 
						|
	apiKeyResult := authDataParsed.Get("clientToken")
 | 
						|
	if !clientIdResult.Exists() || !apiKeyResult.Exists() {
 | 
						|
		return nil, errors.New("auth data is not valid")
 | 
						|
	}
 | 
						|
	apiKey := apiKeyResult.String()
 | 
						|
	clientId := clientIdResult.String()
 | 
						|
	httpClient := &http.Client{
 | 
						|
		Transport: NewRateLimitTransport(),
 | 
						|
	}
 | 
						|
	opts := []ozon.ClientOption{
 | 
						|
		ozon.WithAPIKey(apiKey),
 | 
						|
		ozon.WithClientId(clientId),
 | 
						|
		ozon.WithHttpClient(httpClient),
 | 
						|
	}
 | 
						|
	client := ozon.NewClient(opts...)
 | 
						|
	if client == nil {
 | 
						|
		return nil, errors.New("failed to create ozon client")
 | 
						|
	}
 | 
						|
 | 
						|
	return client, nil
 | 
						|
}
 |