1+ import json
12from microsoftgraph .decorators import token_required
23from microsoftgraph .response import Response
34
@@ -26,8 +27,7 @@ def get_contact(self, contact_id: str, params: dict = None) -> Response:
2627 Returns:
2728 Response: Microsoft Graph Response.
2829 """
29- url = "{0}me/contacts/{1}" .format (self ._client .base_url , contact_id )
30- return self ._client ._get (url , params = params )
30+ return self ._client ._get (self ._client .base_url + "me/contacts/{}" .format (contact_id ), params = params )
3131
3232 @token_required
3333 def list_contacts (self , params : dict = None ) -> Response :
@@ -41,35 +41,47 @@ def list_contacts(self, params: dict = None) -> Response:
4141 Returns:
4242 Response: Microsoft Graph Response.
4343 """
44- url = "{0}me/contacts" .format (self ._client .base_url )
45- return self ._client ._get (url , params = params )
44+ return self ._client ._get (self ._client .base_url + "me/contacts" , params = params )
4645
4746 @token_required
48- def create_contact (self , ** kwargs ) -> Response :
49- """Add a contact to the root Contacts folder.
50-
51- https://docs.microsoft.com/en-us/graph/api/user-post-contacts?view=graph-rest-1.0&tabs=http
52-
53- Returns:
54- Response: Microsoft Graph Response.
55- """
56- url = "{0}me/contacts" .format (self ._client .base_url )
57- return self ._client ._post (url , ** kwargs )
58-
59- @token_required
60- def create_contact_in_folder (self , folder_id : str , ** kwargs ) -> Response :
61- """Add a contact to another contact folder.
47+ def create_contact (
48+ self ,
49+ given_name : str ,
50+ surname : str ,
51+ email_addresses : list ,
52+ business_phones : list ,
53+ folder_id : str = None ,
54+ ** kwargs
55+ ) -> Response :
56+ """Add a contact to the root Contacts folder or to the contacts endpoint of another contact folder.
6257
6358 https://docs.microsoft.com/en-us/graph/api/user-post-contacts?view=graph-rest-1.0&tabs=http
6459
6560 Args:
66- folder_id (str): Unique identifier of the contact folder.
61+ given_name (str): The contact's given name.
62+ surname (str): The contact's surname.
63+ email_addresses (list): The contact's email addresses.
64+ business_phones (list): The contact's business phone numbers.
65+ folder_id (str, optional): Unique identifier of the contact folder. Defaults to None.
6766
6867 Returns:
6968 Response: Microsoft Graph Response.
7069 """
71- url = "{0}me/contactFolders/{1}/contacts" .format (self ._client .base_url , folder_id )
72- return self ._client ._post (url , ** kwargs )
70+ if isinstance (email_addresses , str ):
71+ email_addresses = [{"address" : email_addresses , "name" : "{} {}" .format (given_name , surname )}]
72+
73+ if isinstance (business_phones , str ):
74+ business_phones = [business_phones ]
75+
76+ body = {
77+ "givenName" : given_name ,
78+ "surname" : surname ,
79+ "emailAddresses" : email_addresses ,
80+ "businessPhones" : business_phones ,
81+ }
82+ body .update (kwargs )
83+ url = "me/contactFolders/{}/contacts" .format (folder_id ) if folder_id else "me/contacts"
84+ return self ._client ._post (self ._client .base_url + url , json = body )
7385
7486 @token_required
7587 def list_contact_folders (self , params : dict = None ) -> Response :
@@ -83,8 +95,7 @@ def list_contact_folders(self, params: dict = None) -> Response:
8395 Returns:
8496 Response: Microsoft Graph Response.
8597 """
86- url = "{0}me/contactFolders" .format (self ._client .base_url )
87- return self ._client ._get (url , params = params )
98+ return self ._client ._get (self ._client .base_url + "me/contactFolders" , params = params )
8899
89100 @token_required
90101 def create_contact_folder (self , ** kwargs ) -> Response :
@@ -95,5 +106,4 @@ def create_contact_folder(self, **kwargs) -> Response:
95106 Returns:
96107 Response: Microsoft Graph Response.
97108 """
98- url = "{0}me/contactFolders" .format (self ._client .base_url )
99- return self ._client ._post (url , ** kwargs )
109+ return self ._client ._post (self ._client .base_url + "me/contactFolders" , ** kwargs )
0 commit comments