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.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.utils.func import lift

View File

@ -1,8 +1,6 @@
import abc
from typing import Iterable
import flask
import requests
from more_itertools import peekable
@ -14,16 +12,6 @@ def has_next(peekable_iter):
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:
def __call__(self, packages: Iterable[dict]):
@ -41,28 +29,3 @@ class Sender:
@abc.abstractmethod
def post(self, package):
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
# from more_itertools import peekable
#
# from pyinfra.server.sender.sender import Sender
#
#
# class Nothing:
# pass
#
#
# def has_next(peekable_iter):
# return peekable_iter.peek(Nothing) != Nothing
#
#
# 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()
import requests
from pyinfra.server.sender.sender import Sender
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)

View File

@ -1,12 +1,12 @@
import pytest
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("item_type", ["string", "image", "pdf"])
def test_rest_receiver(url, packages, server_process):
sender = Sender(RestServer(f"{url}/process"))
sender = RestSender(f"{url}/process")
receiver = RestReceiver()
assert all((isinstance(r, list) for r in receiver(sender(packages))))

View File

@ -1,10 +1,10 @@
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("item_type", ["string", "image", "pdf"])
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)))