Initial Proxy coed
This commit is contained in:
parent
a70d052cbf
commit
587756a51b
@ -1,7 +1,21 @@
|
|||||||
from core.request import Request
|
from core import Request
|
||||||
|
from bank_protocol.exceptions import InvalidRequest
|
||||||
|
|
||||||
def account_deposit(request: Request):
|
def account_deposit(request: Request):
|
||||||
pass
|
split_body = request.body.split("/")
|
||||||
|
split_ip = split_body[1].split(" ")
|
||||||
|
|
||||||
|
account = split_body[0]
|
||||||
|
ip = split_ip[0]
|
||||||
|
amount = split_ip[1]
|
||||||
|
|
||||||
|
if not account.isdigit():
|
||||||
|
raise InvalidRequest("Account must be a number")
|
||||||
|
|
||||||
|
account_parsed = int(account)
|
||||||
|
|
||||||
|
if account_parsed < 10_000 or account_parsed > 99_999:
|
||||||
|
raise InvalidRequest("Account number out of range")
|
||||||
|
|
||||||
|
|
||||||
__all__ = ["account_deposit"]
|
__all__ = ["account_deposit"]
|
||||||
|
@ -2,6 +2,12 @@
|
|||||||
from core.exceptions import BankNodeError
|
from core.exceptions import BankNodeError
|
||||||
|
|
||||||
|
|
||||||
|
class ProxyError(BankNodeError):
|
||||||
|
def __init__(self, message):
|
||||||
|
super().__init__(message)
|
||||||
|
self.message = message
|
||||||
|
|
||||||
|
|
||||||
class InvalidRequest(BankNodeError):
|
class InvalidRequest(BankNodeError):
|
||||||
def __init__(self, message):
|
def __init__(self, message):
|
||||||
super().__init__(message)
|
super().__init__(message)
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
import socket
|
||||||
|
from typing import Tuple
|
||||||
|
|
||||||
|
from core import Request, Response
|
||||||
|
from bank_protocol.exceptions import ProxyError
|
||||||
|
|
||||||
|
|
||||||
|
class BankProxy():
|
||||||
|
def __init__(self, request: Request, address: Tuple):
|
||||||
|
self.request = request
|
||||||
|
self.address = address
|
||||||
|
|
||||||
|
def proxy_request(self) -> Response:
|
||||||
|
try:
|
||||||
|
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client_socket:
|
||||||
|
client_socket.connect(self.address)
|
||||||
|
|
||||||
|
client_socket.sendall(self.request.as_request())
|
||||||
|
|
||||||
|
response = client_socket.recv(1024)
|
||||||
|
return response
|
||||||
|
except socket.error as e:
|
||||||
|
raise ProxyError("Proxy error") from e
|
@ -21,8 +21,15 @@ class Request():
|
|||||||
else:
|
else:
|
||||||
raise InvalidRequest("Invalid request")
|
raise InvalidRequest("Invalid request")
|
||||||
|
|
||||||
|
def as_request(self):
|
||||||
|
"""Returns a valid request string with CRLF ending"""
|
||||||
|
return str(self) + "\r\n"
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.command_code} {self.body}"
|
if self.body:
|
||||||
|
return f"{self.command_code} {self.body}"
|
||||||
|
else:
|
||||||
|
return self.command_code
|
||||||
|
|
||||||
|
|
||||||
__all__ = ["Request"]
|
__all__ = ["Request"]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user