feat: ozon sync
This commit is contained in:
52
external/marketplace/ozon/core.py
vendored
52
external/marketplace/ozon/core.py
vendored
@@ -1,15 +1,61 @@
|
||||
from typing import AsyncIterator
|
||||
|
||||
from external.marketplace.base.core import BaseMarketplaceApi
|
||||
from models import Marketplace
|
||||
|
||||
|
||||
class OzonMarketplaceApi(BaseMarketplaceApi):
|
||||
def __init__(self, marketplace: Marketplace):
|
||||
pass
|
||||
client_id = marketplace.auth_data.get('Client-Id')
|
||||
api_key = marketplace.auth_data.get('Api-Key')
|
||||
if not client_id or not api_key:
|
||||
raise ValueError(
|
||||
f"Client-Id or Api-Key is missing for Marketplace ID: {marketplace.id}. "
|
||||
"Please check the marketplace credentials."
|
||||
)
|
||||
self.headers = marketplace.auth_data
|
||||
self.marketplace = marketplace
|
||||
|
||||
@property
|
||||
def get_headers(self) -> dict:
|
||||
return {}
|
||||
return self.headers
|
||||
|
||||
@property
|
||||
def base_url(self) -> str:
|
||||
return ""
|
||||
return "https://api-seller.ozon.ru"
|
||||
|
||||
async def get_products(self, data: dict) -> dict:
|
||||
method = '/v2/product/list'
|
||||
response = await self._method('POST', method, json=data)
|
||||
return response
|
||||
|
||||
async def get_all_products(self) -> AsyncIterator[dict]:
|
||||
limit = 100
|
||||
last_id = ''
|
||||
while True:
|
||||
data = {
|
||||
'limit': limit,
|
||||
'last_id': last_id,
|
||||
|
||||
}
|
||||
response = await self.get_products(data)
|
||||
if not response:
|
||||
break
|
||||
result = response.get('result')
|
||||
if not result:
|
||||
break
|
||||
items = result.get('items')
|
||||
if not items:
|
||||
break
|
||||
for item in items:
|
||||
yield item
|
||||
last_id = result.get('last_id')
|
||||
if not last_id:
|
||||
break
|
||||
|
||||
async def get_products_info(self, data: dict) -> dict:
|
||||
method = '/v2/product/info/list'
|
||||
response = await self._method('POST', method, json=data)
|
||||
return response
|
||||
|
||||
|
||||
Reference in New Issue
Block a user