Coverage for mindsdb / integrations / handlers / zendesk_handler / zendesk_handler.py: 0%
38 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
1from mindsdb_sql_parser import parse_sql
3from mindsdb.integrations.handlers.zendesk_handler.zendesk_tables import (
4 ZendeskUsersTable,
5 ZendeskTicketsTable,
6 ZendeskTriggersTable,
7 ZendeskActivitiesTable
8)
9from mindsdb.integrations.libs.api_handler import APIHandler
10from mindsdb.integrations.libs.response import (
11 HandlerStatusResponse as StatusResponse,
12)
13from mindsdb.utilities import log
14import zenpy
16logger = log.getLogger(__name__)
19class ZendeskHandler(APIHandler):
20 """The Zendesk handler implementation"""
22 def __init__(self, name: str, **kwargs):
23 """Initialize the zendesk handler.
25 Parameters
26 ----------
27 name : str
28 name of a handler instance
29 """
30 super().__init__(name)
32 connection_data = kwargs.get("connection_data", {})
33 self.connection_data = connection_data
34 self.kwargs = kwargs
35 self.zen_client = None
36 self.is_connected = False
38 self._register_table("users", ZendeskUsersTable(self))
39 self._register_table("tickets", ZendeskTicketsTable(self))
40 self._register_table("triggers", ZendeskTriggersTable(self))
41 self._register_table("activities", ZendeskActivitiesTable(self))
43 def connect(self) -> StatusResponse:
44 """Set up the connection required by the handler.
46 Returns
47 -------
48 StatusResponse
49 connection object
50 """
51 resp = StatusResponse(False)
52 self.zen_client = zenpy.Zenpy(subdomain=self.connection_data["sub_domain"], email=self.connection_data["email"], token=self.connection_data["api_key"])
53 try:
54 self.zen_client.users()
55 self.is_connected = True
56 resp.success = True
57 except Exception as ex:
58 resp.success = False
59 resp.error_message = str(ex)
60 self.is_connected = False
61 return resp
63 def check_connection(self) -> StatusResponse:
64 """Check connection to the handler.
66 Returns
67 -------
68 StatusResponse
69 Status confirmation
70 """
71 response = self.connect()
72 self.is_connected = response.success
73 return response
75 def native_query(self, query: str) -> StatusResponse:
76 """Receive and process a raw query.
78 Parameters
79 ----------
80 query : str
81 query in a native format
83 Returns
84 -------
85 StatusResponse
86 Request status
87 """
88 ast = parse_sql(query)
89 return self.query(ast)