Passed
Push — master ( 9301e1...0bc911 )
by Mingyu
01:47
created

app.context   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 23
dl 0
loc 35
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A _ContextProperty.request_payload() 0 3 1
A _ContextProperty.remote_addr() 0 3 1
A _ContextProperty.user_agent() 0 3 1
A _ContextProperty.secret_key() 0 3 1
1
from typing import Optional, Type
2
3
from flask import current_app, request, g
4
from pydantic import BaseModel
5
6
7
class _ContextProperty:
8
    class Key:
9
        request_payload = 'request_payload'
10
11
    @property
12
    def secret_key(self) -> str:
13
        return current_app.secret_key
14
15
    @property
16
    def user_agent(self) -> str:
17
        return request.headers['user_agent']
18
19
    @property
20
    def remote_addr(self) -> str:
21
        return request.remote_addr
22
23
    # - request payload -
24
25
    @property
26
    def request_payload(self) -> Optional[BaseModel]:
27
        return getattr(g, self.Key.request_payload, None)
28
29
    @request_payload.setter
30
    def request_payload(self, value: Type[BaseModel]):
31
        setattr(g, self.Key.request_payload, value)
32
33
34
context_property = _ContextProperty()
35