def test_fix_token_url(token_url, expected_url): assert fix_token_url(token_url) == expected_url
def __init__( self, project_key: str = None, client_id: str = None, client_secret: str = None, scope: typing.List[str] = None, url: str = None, token_url: str = None, token_saver: BaseTokenSaver = None, ) -> None: # Use environment variables as fallback config = { "project_key": project_key, "client_id": client_id, "client_secret": client_secret, "url": url, "token_url": token_url, "scope": scope, } # Make sure we use the config vars del project_key, client_id, client_secret, url, token_url, scope self._config = self._read_env_vars(config) self._config["token_url"] = fix_token_url(self._config["token_url"]) self._token_saver = token_saver or DefaultTokenSaver() self._url = self._config["url"] self._base_url = f"{self._config['url']}/{self._config['project_key']}/" # Fetch token from the token saver token = self._token_saver.get_token(self._config["client_id"], self._config["scope"]) client = BackendApplicationClient(client_id=self._config["client_id"], scope=self._config["scope"]) self._http_client = RefreshingOAuth2Session( client=client, scope=self._config["scope"], auto_refresh_url=self._config["token_url"], auto_refresh_kwargs={ "client_id": self._config["client_id"], "client_secret": self._config["client_secret"], }, token_updater=self._save_token, ) # Register retry handling for Connection errors and 502, 503, 504. retry = Retry(status=3, connect=3, status_forcelist=[502, 503, 504]) adapter = HTTPAdapter(max_retries=retry) self._http_client.mount("http://", adapter) self._http_client.mount("https://", adapter) if token: self._http_client.token = token else: token = self._http_client.fetch_token( token_url=self._config["token_url"], scope=self._config["scope"], client_id=self._config["client_id"], client_secret=self._config["client_secret"], ) self._save_token(token) self.api_clients = ApiClientService(self) self.categories = CategoryService(self) self.custom_objects = CustomObjectService(self) self.cart_discounts = CartDiscountService(self) self.carts = CartService(self) self.channels = ChannelService(self) self.customer_groups = CustomerGroupService(self) self.customers = CustomerService(self) self.discount_codes = DiscountCodeService(self) self.extensions = ExtensionService(self) self.inventory = InventoryService(self) self.orders = OrderService(self) self.products = ProductService(self) self.product_discounts = ProductDiscountService(self) self.project = ProjectService(self) self.payments = PaymentService(self) self.product_projections = ProductProjectionService(self) self.product_types = ProductTypeService(self) self.reviews = ReviewService(self) self.shipping_methods = ShippingMethodService(self) self.shopping_lists = ShoppingListService(self) self.states = StateService(self) self.stores = StoreService(self) self.subscriptions = SubscriptionService(self) self.tax_categories = TaxCategoryService(self) self.types = TypeService(self)
def __init__( self, project_key: str = None, client_id: str = None, client_secret: str = None, scope: typing.List[str] = None, url: str = None, token_url: str = None, token_saver: BaseTokenSaver = None, ) -> None: # Use environment variables as fallback config = { "project_key": project_key, "client_id": client_id, "client_secret": client_secret, "url": url, "token_url": token_url, "scope": scope, } # Make sure we use the config vars del project_key, client_id, client_secret, url, token_url, scope self._config = self._read_env_vars(config) self._config["token_url"] = fix_token_url(self._config["token_url"]) self._token_saver = token_saver or DefaultTokenSaver() self._url = self._config["url"] self._base_url = f"{self._config['url']}" # Fetch token from the token saver token = self._token_saver.get_token(self._config["client_id"], self._config["scope"]) client = BackendApplicationClient(client_id=self._config["client_id"], scope=self._config["scope"]) self._http_client = RefreshingOAuth2Session( client=client, scope=self._config["scope"], auto_refresh_url=self._config["token_url"], auto_refresh_kwargs={ "client_id": self._config["client_id"], "client_secret": self._config["client_secret"], }, token_updater=self._save_token, ) # Register retry handling for Connection errors and 502, 503, 504. retry = Retry(status=3, connect=3, status_forcelist=[502, 503, 504]) adapter = HTTPAdapter(max_retries=retry) self._http_client.mount("http://", adapter) self._http_client.mount("https://", adapter) if token: self._http_client.token = token else: token = self._http_client.fetch_token( token_url=self._config["token_url"], scope=self._config["scope"], client_id=self._config["client_id"], client_secret=self._config["client_secret"], ) self._save_token(token)