wuenlp_tools.utils.api
1from __future__ import annotations 2 3from time import sleep 4from urllib.parse import urljoin 5 6import requests 7from loguru import logger 8from requests.auth import HTTPBasicAuth 9 10from wuenlp_tools.keys import WUENLP_API_KEY 11from wuenlp_tools.config import get_api_base_url 12 13 14def query_wuenlp_api(url, headers=None, data=None, files=None): 15 # Handle relative URLs by combining with base URL 16 if not url.startswith(('http://', 'https://')): 17 if not url.startswith('/'): 18 url = '/' + url 19 base_url = get_api_base_url() 20 if not base_url.endswith('/'): 21 base_url += '/' 22 url = urljoin(base_url, url.lstrip('/')) 23 24 finished = False 25 while not finished: 26 try: 27 response = requests.post(url, data=data, headers=headers, auth=HTTPBasicAuth('wuenlp', WUENLP_API_KEY), 28 files=files) 29 if response.status_code == 401: 30 if WUENLP_API_KEY is None: 31 logger.error( 32 "HTTP Basic Auth Password is required, but not provided. Please enter a valid password:") 33 password = input() 34 WUENLP_API_KEY.data = password 35 else: 36 logger.error("HTTP Basic Auth Password is invalid. Please enter a valid password:") 37 password = input() 38 WUENLP_API_KEY.data = password 39 else: 40 finished = True 41 except requests.exceptions.ConnectionError as e: 42 logger.debug(e) 43 logger.info("Waiting for backend to become available...") 44 sleep(10) 45 46 if response.status_code != 200: 47 raise RuntimeError(f"Error processing document: {response.status_code}, {response.text}") 48 return response
def
query_wuenlp_api(url, headers=None, data=None, files=None):
15def query_wuenlp_api(url, headers=None, data=None, files=None): 16 # Handle relative URLs by combining with base URL 17 if not url.startswith(('http://', 'https://')): 18 if not url.startswith('/'): 19 url = '/' + url 20 base_url = get_api_base_url() 21 if not base_url.endswith('/'): 22 base_url += '/' 23 url = urljoin(base_url, url.lstrip('/')) 24 25 finished = False 26 while not finished: 27 try: 28 response = requests.post(url, data=data, headers=headers, auth=HTTPBasicAuth('wuenlp', WUENLP_API_KEY), 29 files=files) 30 if response.status_code == 401: 31 if WUENLP_API_KEY is None: 32 logger.error( 33 "HTTP Basic Auth Password is required, but not provided. Please enter a valid password:") 34 password = input() 35 WUENLP_API_KEY.data = password 36 else: 37 logger.error("HTTP Basic Auth Password is invalid. Please enter a valid password:") 38 password = input() 39 WUENLP_API_KEY.data = password 40 else: 41 finished = True 42 except requests.exceptions.ConnectionError as e: 43 logger.debug(e) 44 logger.info("Waiting for backend to become available...") 45 sleep(10) 46 47 if response.status_code != 200: 48 raise RuntimeError(f"Error processing document: {response.status_code}, {response.text}") 49 return response