2
2
Graph Session
3
3
"""
4
4
5
- from requests import Session , Response
5
+ from requests import Session
6
6
7
7
from msgraphcore .constants import BASE_URL , SDK_VERSION
8
8
from msgraphcore .middleware ._middleware import MiddlewarePipeline , BaseMiddleware
12
12
13
13
14
14
class GraphSession (Session ):
15
- """
16
- Extends session object with graph functionality
15
+ """Extends Session with Graph functionality
16
+
17
+ Extends Session by adding support for middleware options and middleware pipeline
18
+
19
+
17
20
"""
18
21
def __init__ (self , auth_provider : AuthProviderBase , middleware : list = []):
19
22
super ().__init__ ()
@@ -26,33 +29,79 @@ def __init__(self, auth_provider: AuthProviderBase, middleware: list = []):
26
29
self ._register (middleware )
27
30
28
31
@middleware_control .get_middleware_options
29
- def get (self , url , ** kwargs ):
32
+ def get (self , url : str , ** kwargs ):
33
+ r"""Sends a GET request. Returns :class:`Response` object.
34
+
35
+ :param url: URL for the new :class:`Request` object.
36
+ :param \*\*kwargs: Optional arguments that ``request`` takes.
37
+ :rtype: requests.Response
38
+ """
30
39
return super ().get (self ._graph_url (url ))
31
40
32
41
@middleware_control .get_middleware_options
33
42
def post (self , url , data = None , json = None , ** kwargs ):
43
+ r"""Sends a POST request. Returns :class:`Response` object.
44
+
45
+ :param url: URL for the new :class:`Request` object.
46
+ :param data: (optional) Dictionary, list of tuples, bytes, or file-like
47
+ object to send in the body of the :class:`Request`.
48
+ :param json: (optional) json to send in the body of the :class:`Request`.
49
+ :param \*\*kwargs: Optional arguments that ``request`` takes.
50
+ :rtype: requests.Response
51
+ """
34
52
return super ().post (self ._graph_url (url ), data , json , ** kwargs )
35
53
36
54
@middleware_control .get_middleware_options
37
55
def put (self , url , data = None , ** kwargs ):
56
+ r"""Sends a PUT request. Returns :class:`Response` object.
57
+
58
+ :param url: URL for the new :class:`Request` object.
59
+ :param data: (optional) Dictionary, list of tuples, bytes, or file-like
60
+ object to send in the body of the :class:`Request`.
61
+ :param \*\*kwargs: Optional arguments that ``request`` takes.
62
+ :rtype: requests.Response
63
+ """
38
64
return super ().put (self ._graph_url (url ), data , ** kwargs )
39
65
40
66
@middleware_control .get_middleware_options
41
67
def patch (self , url , data = None , ** kwargs ):
68
+ r"""Sends a PATCH request. Returns :class:`Response` object.
69
+
70
+ :param url: URL for the new :class:`Request` object.
71
+ :param data: (optional) Dictionary, list of tuples, bytes, or file-like
72
+ object to send in the body of the :class:`Request`.
73
+ :param \*\*kwargs: Optional arguments that ``request`` takes.
74
+ :rtype: requests.Response
75
+ """
42
76
return super ().patch (self ._graph_url (url ), data , ** kwargs )
43
77
44
78
@middleware_control .get_middleware_options
45
79
def delete (self , url , ** kwargs ):
80
+ r"""Sends a DELETE request. Returns :class:`Response` object.
81
+
82
+ :param url: URL for the new :class:`Request` object.
83
+ :param \*\*kwargs: Optional arguments that ``request`` takes.
84
+ :rtype: requests.Response
85
+ """
46
86
return super ().delete (url , ** kwargs )
47
87
48
- def _graph_url (self , url : str ) -> Response :
88
+ def _graph_url (self , url : str ) -> str :
89
+ """Appends BASE_URL to user provided path
90
+
91
+ :param url: user provided path
92
+ :return: graph_url
93
+ """
49
94
return self ._base_url + url if (url [0 ] == '/' ) else url
50
95
51
96
def _register (self , middleware : [BaseMiddleware ]) -> None :
97
+ """Adds middleware to middleware_pipeline
98
+
99
+ :param middleware: list of middleware
100
+ """
52
101
if middleware :
53
- middleware_adapter = MiddlewarePipeline ()
102
+ middleware_pipeline = MiddlewarePipeline ()
54
103
55
104
for ware in middleware :
56
- middleware_adapter .add_middleware (ware )
105
+ middleware_pipeline .add_middleware (ware )
57
106
58
- self .mount ('https://' , middleware_adapter )
107
+ self .mount ('https://' , middleware_pipeline )
0 commit comments