refactoring: move

This commit is contained in:
Matthias Bisping 2022-05-05 10:23:51 +02:00
parent e221b00933
commit 456fb1db06
5 changed files with 19 additions and 71 deletions

View File

@ -6,7 +6,7 @@ from funcy import identity, rcompose, flatten
from pyinfra.server.packer.packers.rest import RestPacker from pyinfra.server.packer.packers.rest import RestPacker
from pyinfra.server.receiver.receivers.rest import RestReceiver from pyinfra.server.receiver.receivers.rest import RestReceiver
from pyinfra.server.sender.sender import RestSender from pyinfra.server.sender.senders.rest import RestSender
from pyinfra.server.utils import stream_response_payloads from pyinfra.server.utils import stream_response_payloads
from pyinfra.utils.func import lift from pyinfra.utils.func import lift

View File

@ -1,8 +1,6 @@
import abc import abc
from typing import Iterable from typing import Iterable
import flask
import requests
from more_itertools import peekable from more_itertools import peekable
@ -14,16 +12,6 @@ def has_next(peekable_iter):
return peekable_iter.peek(Nothing) != Nothing return peekable_iter.peek(Nothing) != Nothing
class Server(abc.ABC):
@abc.abstractmethod
def patch(self, package):
pass
@abc.abstractmethod
def post(self, package):
pass
class Sender: class Sender:
def __call__(self, packages: Iterable[dict]): def __call__(self, packages: Iterable[dict]):
@ -41,28 +29,3 @@ class Sender:
@abc.abstractmethod @abc.abstractmethod
def post(self, package): def post(self, package):
raise NotImplementedError raise NotImplementedError
class RestSender(Sender):
def __init__(self, endpoint):
self.endpoint = endpoint
def patch(self, package):
return requests.patch(self.endpoint, json=package)
def post(self, package):
return requests.post(self.endpoint, json=package)
# class Receiver(abc.ABC):
# @abc.abstractmethod
# def __call__(self, responses: Iterable):
# pass
#
#
# class RestReceiver(abc.ABC):
# @abc.abstractmethod
# def __call__(self, responses: Iterable[requests.Response]):
# for response in responses:
# response.raise_for_status()
# yield response.json()

View File

@ -1,29 +1,14 @@
# from typing import Iterable import requests
#
# import requests from pyinfra.server.sender.sender import Sender
# from more_itertools import peekable
#
# from pyinfra.server.sender.sender import Sender class RestSender(Sender):
# def __init__(self, endpoint):
# self.endpoint = endpoint
# class Nothing:
# pass def patch(self, package):
# return requests.patch(self.endpoint, json=package)
#
# def has_next(peekable_iter): def post(self, package):
# return peekable_iter.peek(Nothing) != Nothing return requests.post(self.endpoint, json=package)
#
#
# class RestSender(Sender):
# def __init__(self, endpoint):
# self.endpoint = endpoint
#
# def __call__(self, packages: Iterable[dict]):
#
# packages = peekable(packages)
#
# for package in packages:
# method = requests.patch if has_next(packages) else requests.post
# response = method(self.endpoint, json=package)
# response.raise_for_status()
# yield response.json()

View File

@ -1,12 +1,12 @@
import pytest import pytest
from pyinfra.server.receiver.receivers.rest import RestReceiver from pyinfra.server.receiver.receivers.rest import RestReceiver
from pyinfra.server.sender.sender import RestServer, Sender from pyinfra.server.sender.senders.rest import RestSender
@pytest.mark.parametrize("batched", [True, False]) @pytest.mark.parametrize("batched", [True, False])
@pytest.mark.parametrize("item_type", ["string", "image", "pdf"]) @pytest.mark.parametrize("item_type", ["string", "image", "pdf"])
def test_rest_receiver(url, packages, server_process): def test_rest_receiver(url, packages, server_process):
sender = Sender(RestServer(f"{url}/process")) sender = RestSender(f"{url}/process")
receiver = RestReceiver() receiver = RestReceiver()
assert all((isinstance(r, list) for r in receiver(sender(packages)))) assert all((isinstance(r, list) for r in receiver(sender(packages))))

View File

@ -1,10 +1,10 @@
import pytest import pytest
from pyinfra.server.sender.sender import RestServer, Sender from pyinfra.server.sender.senders.rest import RestSender
@pytest.mark.parametrize("batched", [True, False]) @pytest.mark.parametrize("batched", [True, False])
@pytest.mark.parametrize("item_type", ["string", "image", "pdf"]) @pytest.mark.parametrize("item_type", ["string", "image", "pdf"])
def test_rest_sender(url, packages, server_process): def test_rest_sender(url, packages, server_process):
sender = Sender(RestServer(f"{url}/process")) sender = RestSender(f"{url}/process")
assert all((r.status_code == 200 for r in sender(packages))) assert all((r.status_code == 200 for r in sender(packages)))