39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
import json
|
|
import logging
|
|
from typing import Union
|
|
|
|
from aiohttp import ClientResponse
|
|
|
|
from database import Marketplace
|
|
from marketplaces.base import BaseMarketplaceApi
|
|
|
|
|
|
class OzonMarketplaceApi(BaseMarketplaceApi):
|
|
|
|
def __init__(self, marketplace: Marketplace):
|
|
self.marketplace = marketplace
|
|
self.is_valid = True
|
|
try:
|
|
auth_data = json.loads(marketplace.auth_data)
|
|
except Exception:
|
|
logging.error(f"Couldn't load auth data for marketplace [{self.marketplace.id}]")
|
|
self.is_valid = False
|
|
return
|
|
client_id = auth_data.get('clientId')
|
|
|
|
self.limiter_key = str(marketplace.company_id) + str(client_id)
|
|
self.headers = {
|
|
'Client-Id': client_id,
|
|
'Api-Key': auth_data.get('clientToken')
|
|
}
|
|
|
|
def get_headers(self):
|
|
return self.headers
|
|
|
|
@property
|
|
def api_url(self):
|
|
return 'https://api-seller.ozon.ru'
|
|
|
|
async def update_stocks(self, data: Union[list, dict]) -> ClientResponse:
|
|
return await self._method('POST', '/v2/products/stocks', data={'stocks': data})
|