Coverage for mindsdb / integrations / handlers / luma_handler / luma.py: 0%
40 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
1import json
2import requests
5class LumaClient:
6 def __init__(self, api_key):
7 self.auth_token = api_key
8 self.luma_base_endpoint = "https://api.lu.ma/"
9 self.validate_api_key()
11 def make_request(self, url, method='GET', payload=None):
12 if method not in ['GET', 'POST']:
13 raise ValueError('Invalid HTTP request method')
14 headers = {"accept": "application/json", "content-type": "application/json"}
15 if self.auth_token:
16 headers['x-luma-api-key'] = self.auth_token
17 request_method = getattr(requests, method.lower())
18 resp = request_method(url, json=payload, headers=headers)
19 return {"content": resp.json(), "code": resp.status_code}
21 def validate_api_key(self):
22 url = f'{self.luma_base_endpoint}public/v1/user/get-self'
23 content = self.make_request(url)
24 if content['code'] != 200:
25 raise Exception("User Authentication failed - " + json.dumps(content["content"]))
26 return content
28 def create_event(self, data):
29 url = f'{self.luma_base_endpoint}public/v1/event/create'
30 content = self.make_request(url, method="POST", payload=data)
31 if content['code'] != 200:
32 raise Exception("Create failed - " + json.dumps(content["content"]))
33 return content
35 def get_event(self, event_api_id):
36 url = f'{self.luma_base_endpoint}public/v1/event/get?api_id={event_api_id}'
37 content = self.make_request(url)
38 if content['code'] != 200:
39 raise Exception("Get event failed - " + json.dumps(content["content"]))
40 return content
42 def list_events(self):
43 url = f'{self.luma_base_endpoint}public/v1/calendar/list-events?series_mode=sessions'
44 content = self.make_request(url)
45 if content['code'] != 200:
46 raise Exception("Get event failed - " + json.dumps(content["content"]))
47 return content