Coverage for chalicelib/core/log_tools/sentry.py: 92%

40 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 12:56 +0000

1import logging 

2 

3import requests 

4 

5from chalicelib.core.log_tools import log_tools 

6from chalicelib.utils.log import sanitize 

7from schemas import schemas 

8 

9logger = logging.getLogger(__name__) 

10 

11IN_TY = "sentry" 

12 

13 

14def get_all(tenant_id): 

15 return log_tools.get_all_by_tenant(tenant_id=tenant_id, integration=IN_TY) 

16 

17 

18def get(project_id): 

19 return log_tools.get(project_id=project_id, integration=IN_TY) 

20 

21 

22def update(tenant_id, project_id, changes): 

23 options = {} 

24 if "organizationSlug" in changes: 24 ↛ 26line 24 didn't jump to line 26 because the condition on line 24 was always true

25 options["organizationSlug"] = changes["organizationSlug"] 

26 if "projectSlug" in changes: 26 ↛ 28line 26 didn't jump to line 28 because the condition on line 26 was always true

27 options["projectSlug"] = changes["projectSlug"] 

28 if "token" in changes: 28 ↛ 31line 28 didn't jump to line 31 because the condition on line 28 was always true

29 options["token"] = changes["token"] 

30 

31 return log_tools.edit(project_id=project_id, integration=IN_TY, changes=changes) 

32 

33 

34def add(tenant_id, project_id, project_slug, organization_slug, token): 

35 options = { 

36 "organizationSlug": organization_slug, "projectSlug": project_slug, "token": token 

37 } 

38 return log_tools.add(project_id=project_id, integration=IN_TY, options=options) 

39 

40 

41def delete(tenant_id, project_id): 

42 return log_tools.delete(project_id=project_id, integration=IN_TY) 

43 

44 

45def add_edit(tenant_id, project_id, data: schemas.IntegrationSentrySchema): 

46 s = get(project_id) 

47 if s is not None: 

48 return update(tenant_id=tenant_id, project_id=project_id, 

49 changes={"projectSlug": data.project_slug, 

50 "organizationSlug": data.organization_slug, 

51 "token": data.token}) 

52 else: 

53 return add(tenant_id=tenant_id, 

54 project_id=project_id, 

55 project_slug=data.project_slug, 

56 organization_slug=data.organization_slug, 

57 token=data.token) 

58 

59 

60def proxy_get(tenant_id, project_id, event_id): 

61 i = get(project_id) 

62 if i is None: 

63 return {} 

64 r = requests.get( 

65 url="https://sentry.io/api/0/projects/%(organization_slug)s/%(project_slug)s/events/%(event_id)s/" % { 

66 "organization_slug": i["organizationSlug"], "project_slug": i["projectSlug"], "event_id": event_id}, 

67 headers={"Authorization": "Bearer " + i["token"]}) 

68 if r.status_code != 200: 68 ↛ 72line 68 didn't jump to line 72 because the condition on line 68 was always true

69 logger.error("=======> sentry get: something went wrong") 

70 logger.error(r.status_code) 

71 logger.error(sanitize(r.text)) 

72 return r.json()