-
Notifications
You must be signed in to change notification settings - Fork 66
Expand file tree
/
Copy path_http_request_body.py
More file actions
71 lines (48 loc) · 2.06 KB
/
_http_request_body.py
File metadata and controls
71 lines (48 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from schematics.models import Model
from schematics.types import ModelType
from ._content import CMDRequestJson, CMDRequestBinary
class CMDHttpRequestBody(Model):
POLYMORPHIC_KEY = None
@classmethod
def _claim_polymorphic(cls, data):
if cls.POLYMORPHIC_KEY is None:
return False
if isinstance(data, dict):
return cls.POLYMORPHIC_KEY in data
elif isinstance(data, CMDHttpRequestBody):
return hasattr(data, cls.POLYMORPHIC_KEY)
return False
def generate_args(self, ref_args, var_prefix=None):
raise NotImplementedError()
def diff(self, old, level):
raise NotImplementedError()
def reformat(self, **kwargs):
return NotImplementedError()
def register_cls(self, **kwargs):
raise NotImplementedError()
class CMDHttpRequestJsonBody(CMDHttpRequestBody):
POLYMORPHIC_KEY = "json"
json = ModelType(CMDRequestJson, required=True)
def generate_args(self, ref_args, var_prefix=None):
return self.json.generate_args(ref_args=ref_args, var_prefix=var_prefix)
def diff(self, old, level):
if not isinstance(old, self.__class__):
return f"Response type changed: '{type(old)}' != '{self.__class__}'"
return self.json.diff(old.json, level)
def reformat(self, **kwargs):
self.json.reformat(**kwargs)
def register_cls(self, **kwargs):
self.json.register_cls(**kwargs)
class CMDHttpRequestBinaryBody(CMDHttpRequestBody):
POLYMORPHIC_KEY = "bytes"
bytes = ModelType(CMDRequestBinary, required=True)
def generate_args(self, ref_args, var_prefix=None):
return self.bytes.generate_args(ref_args=ref_args, var_prefix=var_prefix)
def diff(self, old, level):
if not isinstance(old, self.__class__):
return f"Response type changed: '{type(old)}' != '{self.__class__}'"
return self.bytes.diff(old.bytes, level)
def reformat(self, **kwargs):
self.bytes.reformat(**kwargs)
def register_cls(self, **kwargs):
self.bytes.register_cls(**kwargs)