Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions automated_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,20 @@
requests.__dict__["Response"] = type(
"Response", (), {"__module__": "requests"}
)
websocket = type(sys)("websocket")
websocket.__dict__.update({
name: type(name, (), {"__module__": "websocket"})
for name in (
"WebSocket",
"ABNF",
"WebSocketProtocolException",
"WebSocketConnectionClosedException",
"WebSocketTimeoutException",
)
})

sys.modules["requests"] = requests
sys.modules["websocket"] = websocket
sys.modules["unidecode"] = type(sys)("unidecode")

CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
Expand Down Expand Up @@ -113,8 +125,8 @@ def prepare_docstring(func):

line_char = ""
if "\n" in docstring:
line_char = "\n"
return f'"""{docstring}{line_char}\n"""'
line_char = "\n\n"
return f'"""{docstring}{line_char}"""'


def _find_obj(obj_full, api_globals):
Expand Down
6 changes: 6 additions & 0 deletions ayon_api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
as_username,
get_base_url,
get_rest_url,
get_websocket_url,
get_ssl_verify,
set_ssl_verify,
get_cert,
Expand All @@ -52,6 +53,7 @@
set_sender,
get_sender_type,
set_sender_type,
create_websocket,
get_info,
get_server_version,
get_server_version_tuple,
Expand All @@ -60,6 +62,7 @@
get_users,
get_user_by_name,
get_user,
get_event_hub,
raw_post,
raw_put,
raw_patch,
Expand Down Expand Up @@ -354,6 +357,7 @@
"as_username",
"get_base_url",
"get_rest_url",
"get_websocket_url",
"get_ssl_verify",
"set_ssl_verify",
"get_cert",
Expand All @@ -372,6 +376,7 @@
"set_sender",
"get_sender_type",
"set_sender_type",
"create_websocket",
"get_info",
"get_server_version",
"get_server_version_tuple",
Expand All @@ -380,6 +385,7 @@
"get_users",
"get_user_by_name",
"get_user",
"get_event_hub",
"raw_post",
"raw_put",
"raw_patch",
Expand Down
85 changes: 59 additions & 26 deletions ayon_api/_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@

if typing.TYPE_CHECKING:
from typing import Union, Literal

from websocket import WebSocket

from .typing import (
ServerVersion,
ActivityType,
Expand Down Expand Up @@ -90,6 +93,7 @@
EntityListAttributeDefinitionDict,
AdvancedFilterDict,
)
from .events import EventHub


class GlobalServerAPI(ServerAPI):
Expand Down Expand Up @@ -453,6 +457,16 @@ def get_rest_url() -> str:
return con.get_rest_url()


def get_websocket_url(
endpoint: str,
) -> str:
"""Prepare websocket url from endpoint."""
con = get_server_api_connection()
return con.get_websocket_url(
endpoint=endpoint,
)


def get_ssl_verify() -> bool | str | None:
"""Enable ssl verification.

Expand Down Expand Up @@ -705,6 +719,25 @@ def set_sender_type(
)


def create_websocket(
endpoint: str,
*,
timeout: float | None = None,
headers: dict[str, Any] | None = None,
sslopt: dict[str, Any] | None = None,
**kwargs,
) -> WebSocket:
"""Create a websocket connection to AYON server."""
con = get_server_api_connection()
return con.create_websocket(
endpoint=endpoint,
timeout=timeout,
headers=headers,
sslopt=sslopt,
**kwargs,
)


def get_info() -> dict[str, Any]:
"""Get information about current used api key.

Expand Down Expand Up @@ -752,15 +785,13 @@ def get_server_version_tuple() -> ServerVersion:


def is_product_base_type_supported() -> bool:
"""Product base types are available on server.
"""
"""Product base types are available on server."""
con = get_server_api_connection()
return con.is_product_base_type_supported()


def links_graphql_support_data() -> bool:
"""Links data can be received by GraphQl.
"""
"""Links data can be received by GraphQl."""
con = get_server_api_connection()
return con.links_graphql_support_data()

Expand Down Expand Up @@ -844,6 +875,19 @@ def get_user(
)


def get_event_hub() -> EventHub:
"""Get event hub for connection.

Event hub is used to subscribe to events from server.

Returns:
EventHub: Event hub instance.

"""
con = get_server_api_connection()
return con.get_event_hub()


def raw_post(
entrypoint: str,
**kwargs,
Expand Down Expand Up @@ -1369,8 +1413,7 @@ def delete_project_file(
project_name: str,
file_id: str,
) -> None:
"""Delete project file.
"""
"""Delete project file."""
con = get_server_api_connection()
return con.delete_project_file(
project_name=project_name,
Expand Down Expand Up @@ -2621,8 +2664,7 @@ def create_activity_reaction(
activity_id: str,
reaction: str,
) -> None:
"""React to activity.
"""
"""React to activity."""
con = get_server_api_connection()
return con.create_activity_reaction(
project_name=project_name,
Expand Down Expand Up @@ -2676,8 +2718,7 @@ def get_raw_entity_watchers(
entity_id: str,
entity_type: str,
) -> dict[str, Any]:
"""Get entity watchers (raw response).
"""
"""Get entity watchers (raw response)."""
con = get_server_api_connection()
return con.get_raw_entity_watchers(
project_name=project_name,
Expand All @@ -2691,8 +2732,7 @@ def get_entity_watchers(
entity_id: str,
entity_type: str,
) -> list[str]:
"""List watchers of an entity.
"""
"""List watchers of an entity."""
con = get_server_api_connection()
return con.get_entity_watchers(
project_name=project_name,
Expand All @@ -2707,8 +2747,7 @@ def set_entity_watchers(
entity_type: str,
watchers: list[str],
):
"""Change watchers of an entity.
"""
"""Change watchers of an entity."""
con = get_server_api_connection()
return con.set_entity_watchers(
project_name=project_name,
Expand Down Expand Up @@ -4437,8 +4476,7 @@ def delete_project(


def get_raw_project_folders() -> dict[str, Any]:
"""Get project folders (raw data).
"""
"""Get project folders (raw data)."""
con = get_server_api_connection()
return con.get_raw_project_folders()

Expand All @@ -4453,8 +4491,7 @@ def create_project_folder(
parent_id: str | None = None,
data: dict[str, Any] | None = None,
) -> str:
"""Create project folder.
"""
"""Create project folder."""
con = get_server_api_connection()
return con.create_project_folder(
label=label,
Expand All @@ -4481,8 +4518,7 @@ def update_project_folder(
def set_project_folders_order(
folder_ids: list[str],
) -> None:
"""Set project folders order.
"""
"""Set project folders order."""
con = get_server_api_connection()
return con.set_project_folders_order(
folder_ids=folder_ids,
Expand All @@ -4493,8 +4529,7 @@ def assign_projects_to_project_folder(
folder_id: str,
project_names: list[str],
) -> None:
"""Assign project folder to project.
"""
"""Assign project folder to project."""
con = get_server_api_connection()
return con.assign_projects_to_project_folder(
folder_id=folder_id,
Expand All @@ -4505,8 +4540,7 @@ def assign_projects_to_project_folder(
def delete_project_folder(
folder_id: str,
):
"""Delete project folder.
"""
"""Delete project folder."""
con = get_server_api_connection()
return con.delete_project_folder(
folder_id=folder_id,
Expand Down Expand Up @@ -8495,8 +8529,7 @@ def delete_entity_list_folder(
project_name: str,
entity_list_folder_id: str,
) -> None:
"""Delete entity list folder.
"""
"""Delete entity list folder."""
con = get_server_api_connection()
return con.delete_entity_list_folder(
project_name=project_name,
Expand Down
Loading
Loading