38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from abc import ABC, abstractmethod
 | 
						|
from typing import Literal, Union
 | 
						|
 | 
						|
import aiohttp
 | 
						|
from aiohttp import ClientResponse
 | 
						|
 | 
						|
from database import Marketplace
 | 
						|
 | 
						|
 | 
						|
class BaseMarketplaceApi(ABC):
 | 
						|
    @abstractmethod
 | 
						|
    def __init__(self, marketplace: Marketplace):
 | 
						|
        pass
 | 
						|
 | 
						|
    @abstractmethod
 | 
						|
    async def update_stocks(self, data: Union[list, dict]):
 | 
						|
        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) -> ClientResponse:
 | 
						|
        return
 | 
						|
        async with aiohttp.ClientSession() as session:
 | 
						|
            return await session.request(http_method,
 | 
						|
                                         f'{self.api_url}{method}',
 | 
						|
                                         json=data,
 | 
						|
                                         headers=self.get_headers()
 | 
						|
                                         )
 |