PyZipline/pyzipline/zipline.py

47 lines
1.8 KiB
Python
Raw Normal View History

2023-12-19 05:36:18 -05:00
import logging
from pyzipline.rest_adapter import RestAdapter
from pyzipline.errors import PyZiplineError
from pyzipline.models import *
class ZiplineApi:
def __init__(
self,
hostname: str,
token: str = '',
ssl: bool = True,
enforced_signing: bool = True,
logger: logging.Logger = None
):
2023-12-19 17:27:24 -05:00
"""Constructor for ZiplineApi.
2023-12-19 05:36:18 -05:00
2023-12-19 17:27:24 -05:00
All API requests should be made through this class.
Args:
hostname (str): The hostname of your Zipline instance, WITHOUT https or http.
token (str = None): String used for authentication when making requests.
ssl (bool = True): Normally set to True, but if your Zipline instance doesn't use SSL/TLS, set this to False.
enforced_signing (bool = True): Normally set to True, but if having SSL/TLS cert validation issues, can turn off with False.
logger (logging.Logger = None): If your app has a logger, pass it in here.
2023-12-19 05:36:18 -05:00
"""
self._rest_adapter = RestAdapter(hostname=hostname, token=token, ssl=ssl, enforced_signing=enforced_signing, logger=logger)
def get_user(self, user_id: int) -> User:
"""Get a user by ID
:param user_id: Integer ID of the user
:type user_id: int
:return: The :class:`pyzipline.models.User` object matching the ID
:rtype: :class:`pyzipline.models.User`
2023-12-19 05:36:18 -05:00
"""
result = self._rest_adapter.get(endpoint=f"user/{user_id}")
return User(**result.data)
def get_self(self) -> User:
"""Get the currently authenticated user
:return: `pyzipline.models.User`object matching the authenticated user
:rtype: `pyzipline.models.User`
2023-12-19 05:36:18 -05:00
"""
result = self._rest_adapter.get(endpoint=f"user")
return User(**result.data)