Skip to content

Commit

Permalink
Merge pull request #9 from SamuelGuillemet/develop
Browse files Browse the repository at this point in the history
🚀 RELEASE: Bump to 1.0.1
  • Loading branch information
SamuelGuillemet authored Jul 10, 2023
2 parents 76e6dd3 + 095927c commit 1f2a8f0
Show file tree
Hide file tree
Showing 7 changed files with 200 additions and 6 deletions.
14 changes: 9 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,10 @@ setup_logs(log_level=logging.DEBUG)
4. update an event
5. delete an event

### **users**:

1. get all users

## CERN specific usage

Instead of using the `MSApiClient` class, you can use the `CERNMSApiClient` class, which is a subclass of the `MSApiClient` class.
Expand Down Expand Up @@ -139,7 +143,7 @@ cern_ms_client = CERNMSApiClient.init_from_dotenv()

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

- `ZOOM_ID` is the id of the zoom meeting, which can be found inside the url of a meeting link, is **mandatory** to create an event.
- `ZOOM_ID` is the id of the zoom meeting, which can be found inside the url of a meeting link. This is **mandatory** to create an event.
- `USER_ID` is the email of the Zoom Room.

```python
Expand All @@ -149,23 +153,23 @@ from ms_python_client.utils.event_generator import (EventParameters, PartialEven
cern_ms_client = CERNMSApiClient.init_from_dotenv()

USER_ID = os.getenv("USER_ID") # Which is the email of the Zoom Room
ZOOM = os.getenv("ZOOM")
ZOOM_ID = os.getenv("ZOOM_ID")

event_parameters = EventParameters(
subject="Test meeting",
start_time="2021-10-01T12:00:00",
end_time="2021-10-01T13:00:00",
timezone="Europe/Zurich",
zoom_id=ZOOM,
zoom_id=ZOOM_ID,
zoom_url="https://cern.zoom.us/******",
)

partial_event_parameters = PartialEventParameters(
zoom_id=ZOOM,
zoom_id=ZOOM_ID,
end_time="2021-10-01T14:00:00",
) # You can update only the end_time of the event for example

cern_ms_client.events.create_event(USER_ID, event_parameters)
cern_ms_client.events.update_event_by_zoom_id(USER_ID, partial_event_parameters)
cern_ms_client.events.delete_event_by_zoom_id(USER_ID, ZOOM)
cern_ms_client.events.delete_event_by_zoom_id(USER_ID, ZOOM_ID)
```
45 changes: 45 additions & 0 deletions example/create_event.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import datetime
import json
import logging
import os
import sys

from requests import HTTPError

from ms_python_client.cern_ms_api_client import CERNMSApiClient
from ms_python_client.utils.error import generate_error_log
from ms_python_client.utils.event_generator import EventParameters
from ms_python_client.utils.logger import setup_logs

logger = setup_logs(log_level=logging.INFO)

cern_ms_client = CERNMSApiClient.init_from_dotenv()

for env_var in ["USER_ID", "ZOOM_ID", "ZOOM_URL"]:
if not os.getenv(env_var):
logger.error("%s not found in environment variables", env_var)
sys.exit(1)

USER_ID = os.getenv("USER_ID", "")
ZOOM_ID = os.getenv("ZOOM_ID", "")
ZOOM_URL = os.getenv("ZOOM_URL", "")

start_time = datetime.datetime.now() + datetime.timedelta(minutes=15)
end_time = start_time + datetime.timedelta(hours=1)

data = EventParameters(
zoom_id=ZOOM_ID,
subject="Test event",
zoom_url=ZOOM_URL,
timezone="Europe/Zurich",
start_time=start_time.isoformat(timespec="seconds"),
end_time=end_time.isoformat(timespec="seconds"),
)

try:
result = cern_ms_client.events.create_event(USER_ID, data)
print(json.dumps(result, indent=4))

except HTTPError as e:
print(json.dumps(generate_error_log(e), indent=4))
sys.exit(1)
30 changes: 30 additions & 0 deletions example/delete_event.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import json
import logging
import os
import sys

from requests import HTTPError

from ms_python_client.cern_ms_api_client import CERNMSApiClient
from ms_python_client.utils.error import generate_error_log
from ms_python_client.utils.logger import setup_logs

logger = setup_logs(log_level=logging.INFO)

cern_ms_client = CERNMSApiClient.init_from_dotenv()

for env_var in ["USER_ID", "ZOOM_ID"]:
if not os.getenv(env_var):
logger.error("%s not found in environment variables", env_var)
sys.exit(1)

USER_ID = os.getenv("USER_ID", "")
ZOOM_ID = os.getenv("ZOOM_ID", "")

try:
cern_ms_client.events.delete_event_by_zoom_id(USER_ID, ZOOM_ID)
print(f"Event {ZOOM_ID} deleted")

except HTTPError as e:
print(json.dumps(generate_error_log(e), indent=4))
sys.exit(1)
35 changes: 35 additions & 0 deletions example/list_events.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import json
import logging
import os
import sys

from requests import HTTPError

from ms_python_client.cern_ms_api_client import CERNMSApiClient
from ms_python_client.utils.error import generate_error_log
from ms_python_client.utils.logger import setup_logs

logger = setup_logs(log_level=logging.INFO)

cern_ms_client = CERNMSApiClient.init_from_dotenv()

USER_ID = os.getenv("USER_ID")

if not USER_ID:
logger.error("USER_ID not found in environment variables")
sys.exit(1)


try:
query = {"$count": "true"}
result = cern_ms_client.events.list_events(USER_ID, query)

count = result.get("@odata.count", 0)
print(f"Found {count} events:")

for event in result.get("value", []):
print(f"\t- {event['subject']} - {event['id']}")

except HTTPError as e:
print(json.dumps(generate_error_log(e), indent=4))
sys.exit(1)
36 changes: 36 additions & 0 deletions example/list_users.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import json
import logging
import os
import sys

from requests import HTTPError

from ms_python_client.ms_api_client import MSApiClient
from ms_python_client.utils.error import generate_error_log
from ms_python_client.utils.logger import setup_logs

logger = setup_logs(log_level=logging.INFO)

cern_ms_client = MSApiClient.init_from_dotenv()

query = {"$count": "true"}

DISPLAY_NAME = os.getenv("DISPLAY_NAME")

if DISPLAY_NAME:
query.update({"$search": f'"displayName:{DISPLAY_NAME}"'})


try:
result = cern_ms_client.users.list_users(
query, extra_headers={"ConsistencyLevel": "eventual"}
)
count = result.get("@odata.count", 0)
print(f"Found {count} users:")

for event in result.get("value", []):
print(f"\t- {event['displayName']} - {event['id']}")

except HTTPError as e:
print(json.dumps(generate_error_log(e), indent=4))
sys.exit(1)
44 changes: 44 additions & 0 deletions example/modify_event.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import datetime
import json
import logging
import os
import sys

from requests import HTTPError

from ms_python_client.cern_ms_api_client import CERNMSApiClient
from ms_python_client.utils.error import generate_error_log
from ms_python_client.utils.event_generator import PartialEventParameters
from ms_python_client.utils.logger import setup_logs

logger = setup_logs(log_level=logging.INFO)

cern_ms_client = CERNMSApiClient.init_from_dotenv()

for env_var in ["USER_ID", "ZOOM_ID"]:
if not os.getenv(env_var):
logger.error("%s not found in environment variables", env_var)
sys.exit(1)

USER_ID = os.getenv("USER_ID", "")
ZOOM_ID = os.getenv("ZOOM_ID", "")

start_time = datetime.datetime.now() + datetime.timedelta(hours=1)
end_time = start_time + datetime.timedelta(hours=1)

data = PartialEventParameters(
zoom_id=ZOOM_ID,
start_time=start_time.isoformat(timespec="seconds"),
end_time=end_time.isoformat(timespec="seconds"),
# timezone= Set by default to Europe/Zurich
# subject= Could be updated as well
# zoom_url= Could be updated as well
)

try:
result = cern_ms_client.events.update_event_by_zoom_id(USER_ID, data)
print(json.dumps(result, indent=4))

except HTTPError as e:
print(json.dumps(generate_error_log(e), indent=4))
sys.exit(1)
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "ms-python-client"
version = "1.0.0"
version = "1.0.1"
exclude = ["tests*", "example*", ".github*", ".git*", ".vscode*"]
description = "This package is used to interact with the microsoft graph API"
authors = ["Samuel Guillemet <[email protected]>"]
Expand Down

0 comments on commit 1f2a8f0

Please sign in to comment.