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
|
|
}
|