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

1import json 

2import requests 

3 

4 

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() 

10 

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} 

20 

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 

27 

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 

34 

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 

41 

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