Skip to content

Commit db201d0

Browse files
committed
Add request context
1 parent ff9e39b commit db201d0

File tree

3 files changed

+38
-6
lines changed

3 files changed

+38
-6
lines changed

msgraphcore/middleware/middleware.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import ssl
2+
import uuid
23

34
from requests.adapters import HTTPAdapter
45
from urllib3 import PoolManager
56

7+
from msgraphcore.middleware.request_context import RequestContext
8+
69

710
class MiddlewarePipeline(HTTPAdapter):
811
"""MiddlewarePipeline, entry point of middleware
@@ -22,6 +25,9 @@ def add_middleware(self, middleware):
2225
self._middleware = middleware
2326

2427
def send(self, request, **kwargs):
28+
29+
request.context = RequestContext(request)
30+
2531
if self._middleware_present():
2632
return self._middleware.send(request, **kwargs)
2733
# No middleware in pipeline, call superclass' send

msgraphcore/middleware/options/middleware_control.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from msgraphcore.constants import AUTH_MIDDLEWARE_OPTIONS
2-
3-
from .auth_middleware_options import AuthMiddlewareOptions
2+
from msgraphcore.middleware.options.auth_middleware_options import AuthMiddlewareOptions
43

54

65
class MiddlewareControl:
@@ -18,10 +17,12 @@ def get_middleware_options(self, func):
1817

1918
def wrapper(*args, **kwargs):
2019
# Get middleware options from **kwargs
21-
scopes = kwargs.pop('scopes', None)
22-
if scopes:
23-
# Set middleware options, for use by middleware in the middleware pipeline
24-
self.set(AUTH_MIDDLEWARE_OPTIONS, AuthMiddlewareOptions(scopes))
20+
middleware_options = kwargs.pop('middleware_options', None)
21+
if middleware_options:
22+
scopes = middleware_options.get('scopes', None)
23+
if scopes:
24+
# Set middleware options, for use by middleware in the middleware pipeline
25+
self.set(AUTH_MIDDLEWARE_OPTIONS, AuthMiddlewareOptions(scopes))
2526
return func(*args, **kwargs)
2627

2728
return wrapper
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import uuid
2+
3+
from msgraphcore.middleware.options.middleware_control import middleware_control
4+
5+
6+
class RequestContext:
7+
NONE_FLAG = 0
8+
REDIRECT_HANDLER_ENABLED_FLAG = 1
9+
RETRY_HANDLER_ENABLED_FLAG = 2
10+
AUTH_HANDLER_ENABLED_FLAG = 4
11+
DEFAULT_HTTPROVIDER_ENABLED_FLAG = 8
12+
LOGGING_HANDLER_ENABLED_FLAG = 10
13+
14+
def __init__(self, request):
15+
self.middleware_control = middleware_control
16+
self.client_request_id = request.headers.get('client-request-id', str(uuid.uuid4()))
17+
self._feature_usage = self.NONE_FLAG
18+
19+
@property
20+
def feature_usage(self):
21+
return hex(self._feature_usage)
22+
23+
@feature_usage.setter
24+
def set_feature_usage(self, flag):
25+
self._feature_usage = self.feature_usage | flag

0 commit comments

Comments
 (0)