41 lines
		
	
	
		
			1021 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1021 B
		
	
	
	
		
			Python
		
	
	
	
	
	
from abc import ABC, abstractmethod
 | 
						|
from typing import Literal, Union
 | 
						|
 | 
						|
from aiohttp import ClientResponse, ClientSession
 | 
						|
 | 
						|
from database import Marketplace
 | 
						|
 | 
						|
 | 
						|
class BaseMarketplaceApi(ABC):
 | 
						|
    session: ClientSession
 | 
						|
    is_valid: bool
 | 
						|
 | 
						|
    @abstractmethod
 | 
						|
    def __init__(self, marketplace: Marketplace):
 | 
						|
        pass
 | 
						|
 | 
						|
    @abstractmethod
 | 
						|
    async def update_stocks(self, data: Union[list, dict]) -> (ClientSession, ClientResponse):
 | 
						|
        pass
 | 
						|
 | 
						|
    @abstractmethod
 | 
						|
    def get_headers(self):
 | 
						|
        pass
 | 
						|
 | 
						|
    @property
 | 
						|
    @abstractmethod
 | 
						|
    def api_url(self):
 | 
						|
        pass
 | 
						|
 | 
						|
    async def _method(self, http_method: Literal['POST', 'GET', 'PATCH', 'PUT', 'DELETE'],
 | 
						|
                      method: str,
 | 
						|
                      data: dict) -> (ClientSession, ClientResponse):
 | 
						|
        session = ClientSession()
 | 
						|
        response = await session.request(
 | 
						|
            http_method,
 | 
						|
            f'{self.api_url}{method}',
 | 
						|
            json=data,
 | 
						|
            headers=self.get_headers()
 | 
						|
        )
 | 
						|
        return session, response
 |