Source code for novauniverse.api.cdn
from __future__ import annotations
import requests
from . import errors
from .. import config
from . import NovaAPI
[docs]
class NovaCDN(NovaAPI):
"""Class used to interact with CDN server at ``https://novauniverse.net/cdn/``."""
def __init__(self, endpoint: str = None, silence_endpoint_warning:bool=False):
self.silence_endpoint_warning = silence_endpoint_warning
super().__init__(endpoint)
self.is_cdn_endpoint()
[docs]
def is_cdn_endpoint(self) -> bool:
"""Check if this endpoint link is from the CDN and warns you if it's not."""
if not self.silence_endpoint_warning:
if "novauniverse.net/api" in self.endpoint:
self.logger.warn("You are using an API endpoint in the 'NovaCDN' class. Please only use api endpoints in the 'NovaAPI' class or else you'll run into many bugs.")
return False
else:
return True
return None
[docs]
def get(self) -> requests.Response:
"""Send a get request to that CDN endpoint."""
if self.endpoint is None: raise errors.NoEndpointPassed()
if config.performance_mode is False: # Does online check if performance mode is not enabled.
if self.is_online is False: raise errors.FailedConnectivityCheck()
self.logger.info(f"Sending cdn get request to '{self.endpoint}'...")
response_file = self.__http_session.get(self.endpoint)
if response_file.status_code == 200:
self.logger.info(f"CDN get request of '{self.endpoint}' was successful!")
return response_file
else:
# I think all the error messages in the CDN are spit out in plain text on HTML. I'm not sure though. (Create a github issue if there's an issue with this anywhere.)
raise errors.UnSuccessfulOperation(response_file.text)