Skip to content

Commit ed25ea7

Browse files
Merge pull request #31 from cern-vc/develop
🔖 Bump to v2.0.4
2 parents 98ebfd1 + 32cb267 commit ed25ea7

7 files changed

Lines changed: 61 additions & 13 deletions

File tree

.pylintrc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ init-hook='import sys; sys.path.append(".")'
55
disable=missing-module-docstring, missing-function-docstring, missing-class-docstring, too-few-public-methods, too-many-arguments, too-many-instance-attributes, too-many-locals, logging-fstring-interpolation, redefined-builtin,
66

77
[FORMAT]
8-
good-names=i,j,k,ex,Run,_,pk,x,y,e,f
8+
good-names=i,j,k,ex,Run,_,pk,x,y,e,f
9+
max-line-length = 120

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ cern_ms_client = CERNMSApiClient.init_from_dotenv()
158158
4. update an event using zoom id
159159
5. delete an event using zoom id
160160
6. get the zoom id of an event
161+
7. get current event of a user
161162

162163
You will find useful the `EventParameters` and `PartialEventParameters` classes, which will help you to create the events.
163164

example/get_event_zoom_id.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@
55

66
from requests import HTTPError
77

8-
from ms_python_client import CERNMSApiClient, generate_error_log, setup_logs
8+
from ms_python_client import (
9+
CERNMSApiClient,
10+
NotFoundError,
11+
generate_error_log,
12+
setup_logs,
13+
)
914

1015
logger = setup_logs(log_level=logging.INFO)
1116

@@ -26,3 +31,7 @@
2631
except HTTPError as e:
2732
print(json.dumps(generate_error_log(e), indent=4))
2833
sys.exit(1)
34+
35+
except NotFoundError as e:
36+
logger.error(e)
37+
sys.exit(1)

ms_python_client/components/events/cern_events_component.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def list_events(
4040
Args:
4141
user_id (str): The user id
4242
parameters (dict): Optional parameters for the request
43+
extra_headers (dict): Optional headers for the request
4344
4445
Returns:
4546
dict: The response of the request
@@ -55,17 +56,19 @@ def get_event_by_zoom_id(
5556
"""Get an event of a user
5657
5758
Args:
59+
user_id (str): The user id
5860
zoom_id (str): The event id
61+
extra_headers (dict): Optional headers for the request
5962
6063
Returns:
6164
dict: The response of the request
6265
"""
6366
parameters = {
6467
"$count": "true",
6568
"$filter": f"singleValueExtendedProperties/Any(ep: ep/id eq \
66-
'{ZOOM_ID_EXTENDED_PROPERTY_ID}' and ep/value eq '{zoom_id}')",
69+
'{ZOOM_ID_EXTENDED_PROPERTY_ID}' and ep/value eq '{zoom_id}')",
6770
"$expand": f"singleValueExtendedProperties($filter=id eq \
68-
'{ZOOM_ID_EXTENDED_PROPERTY_ID}')",
71+
'{ZOOM_ID_EXTENDED_PROPERTY_ID}')",
6972
}
7073
response = self.events_component.list_events(user_id, parameters, extra_headers)
7174

@@ -91,20 +94,25 @@ def get_event_zoom_id(
9194
"""Get the zoom id of an event of a user
9295
9396
Args:
97+
user_id (str): The user id
9498
event_id (str): The event id
99+
extra_headers (dict): Optional headers for the request
95100
96101
Returns:
97102
str: The zoom id of the event
98103
"""
99104
parameters = {
100-
"$expand": f"singleValueExtendedProperties($filter=id eq \
101-
'{ZOOM_ID_EXTENDED_PROPERTY_ID}')",
105+
"$expand": f"singleValueExtendedProperties($filter=id eq '{ZOOM_ID_EXTENDED_PROPERTY_ID}')",
102106
}
103107
response = self.events_component.get_event(
104108
user_id, event_id, parameters, extra_headers
105109
)
106110

107-
return response["singleValueExtendedProperties"][0]["value"]
111+
for property in response["singleValueExtendedProperties"]:
112+
if property["id"] == ZOOM_ID_EXTENDED_PROPERTY_ID:
113+
return property["value"]
114+
115+
raise NotFoundError(f"Zoom id not found for event {event_id}")
108116

109117
def create_event(
110118
self,
@@ -117,7 +125,9 @@ def create_event(
117125
118126
Args:
119127
user_id (str): The user id
128+
zoom_id (str): The zoom id of the event
120129
event (EventParameters): The event data
130+
extra_headers (dict): Optional headers for the request
121131
122132
Returns:
123133
dict: The response of the request
@@ -136,7 +146,9 @@ def update_event_by_zoom_id(
136146
137147
Args:
138148
user_id (str): The user id
149+
zoom_id (str): The zoom id of the event
139150
event (EventParameters): The event parameters
151+
extra_headers (dict): Optional headers for the request
140152
141153
Returns:
142154
dict: The response of the request
@@ -158,6 +170,7 @@ def delete_event_by_zoom_id(
158170
Args:
159171
user_id (str): The user id
160172
zoom_id (str): The event id
173+
extra_headers (dict): Optional headers for the request
161174
162175
Returns:
163176
dict: The response of the request

poetry.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "ms-python-client"
3-
version = "2.0.3"
3+
version = "2.0.4"
44
exclude = ["tests*", "example*", ".github*", ".git*", ".vscode*"]
55
description = "This package is used to interact with the microsoft graph API"
66
authors = ["Samuel Guillemet <samuel.guillemet@telecom-sudparis.eu>"]

tests/ms_python_client/components/events/test_cern_events_component.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
NotFoundError,
88
)
99
from ms_python_client.utils.event_generator import (
10+
ZOOM_ID_EXTENDED_PROPERTY_ID,
1011
EventParameters,
1112
PartialEventParameters,
1213
)
@@ -154,7 +155,7 @@ def test_get_event_zoom_id(self):
154155
"subject": "Test Event",
155156
"singleValueExtendedProperties": [
156157
{
157-
"id": "String {66f5a359-4659-4830-9070-00040ec6ac6e} Name ZoomId",
158+
"id": ZOOM_ID_EXTENDED_PROPERTY_ID,
158159
"value": "1234567890",
159160
}
160161
],
@@ -170,6 +171,29 @@ def test_get_event_zoom_id(self):
170171
assert zoom_id == "1234567890"
171172
assert responses.calls[0].request.headers["test"] == "test"
172173

174+
@responses.activate
175+
def test_get_event_zoom_id_not_found(self):
176+
responses.add(
177+
responses.GET,
178+
f"{TEST_API_ENDPOINT}/users/user_id/calendar/events/event_id",
179+
json={
180+
"id": "event_id",
181+
"subject": "Test Event",
182+
"singleValueExtendedProperties": [
183+
{
184+
"id": "Another id",
185+
"value": "Random value",
186+
}
187+
],
188+
},
189+
status=200,
190+
)
191+
headers = {
192+
"test": "test",
193+
}
194+
with pytest.raises(NotFoundError):
195+
self.events_component.get_event_zoom_id("user_id", "event_id", headers)
196+
173197
@responses.activate
174198
def test_get_current_event(self):
175199
responses.add(

0 commit comments

Comments
 (0)