Skip to content

Commit 2beb8f1

Browse files
authored
Merge pull request #263 from betaboon/refactor-split-modules
Refactor: split modules
2 parents 54618df + 14513de commit 2beb8f1

File tree

12 files changed

+637
-590
lines changed

12 files changed

+637
-590
lines changed

mocket/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
from mocket.async_mocket import async_mocketize
2-
from mocket.mocket import FakeSSLContext, Mocket, MocketEntry, Mocketizer, mocketize
2+
from mocket.entry import MocketEntry
3+
from mocket.mocket import Mocket
4+
from mocket.mocketizer import Mocketizer, mocketize
5+
from mocket.ssl import FakeSSLContext
36

47
__all__ = (
58
"async_mocketize",

mocket/async_mocket.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from mocket.mocket import Mocketizer
1+
from mocket.mocketizer import Mocketizer
22
from mocket.utils import get_mocketize
33

44

mocket/entry.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import collections.abc
2+
3+
from mocket.compat import encode_to_bytes
4+
5+
6+
class MocketEntry:
7+
class Response(bytes):
8+
@property
9+
def data(self):
10+
return self
11+
12+
response_index = 0
13+
request_cls = bytes
14+
response_cls = Response
15+
responses = None
16+
_served = None
17+
18+
def __init__(self, location, responses):
19+
self._served = False
20+
self.location = location
21+
22+
if not isinstance(responses, collections.abc.Iterable):
23+
responses = [responses]
24+
25+
if not responses:
26+
self.responses = [self.response_cls(encode_to_bytes(""))]
27+
else:
28+
self.responses = []
29+
for r in responses:
30+
if not isinstance(r, BaseException) and not getattr(r, "data", False):
31+
if isinstance(r, str):
32+
r = encode_to_bytes(r)
33+
r = self.response_cls(r)
34+
self.responses.append(r)
35+
36+
def __repr__(self):
37+
return f"{self.__class__.__name__}(location={self.location})"
38+
39+
@staticmethod
40+
def can_handle(data):
41+
return True
42+
43+
def collect(self, data):
44+
from mocket import Mocket
45+
46+
req = self.request_cls(data)
47+
Mocket.collect(req)
48+
49+
def get_response(self):
50+
response = self.responses[self.response_index]
51+
if self.response_index < len(self.responses) - 1:
52+
self.response_index += 1
53+
54+
self._served = True
55+
56+
if isinstance(response, BaseException):
57+
raise response
58+
59+
return response.data

mocket/io.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import io
2+
import os
3+
4+
5+
class MocketSocketCore(io.BytesIO):
6+
def __init__(self, address) -> None:
7+
self._address = address
8+
super().__init__()
9+
10+
def write(self, content):
11+
from mocket import Mocket
12+
13+
super().write(content)
14+
15+
_, w_fd = Mocket.get_pair(self._address)
16+
if w_fd:
17+
os.write(w_fd, content)

0 commit comments

Comments
 (0)