Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 0 additions & 72 deletions pypulse/Aplication/reader.py

This file was deleted.

5 changes: 0 additions & 5 deletions pypulse/Aplication/set_aplication.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
from .aplication import Aplication
from .reader import ReadViews
from pypulse.View.view import View


class SetAplication:
def __init__(self, name: str) -> None:
# finding the views of this aplication
self._check_if_aplication_is_already_registered(name)
ReadViews.find_views_ho_are_using_the_decoratos(name)
Aplication(name)

def _check_if_aplication_is_already_registered(self, name:str):
for i in Aplication.instances:
if i.name == name:
raise ValueError('The Aplication is already registered: {name}')

1 change: 1 addition & 0 deletions pypulse/Aplication/vars.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
class Vars:
APLICATION_PATH = None
INTERNAL_HTTP_SERVER_PORT = 63333
VIEWS = []
65 changes: 65 additions & 0 deletions pypulse/Socket/handler.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import http.server
from urllib import parse

from pypulse.Template import Template
from pypulse.View.views import get


class Request(http.server.SimpleHTTPRequestHandler):
raw_request = None
response = None

def __check_request(self):
self.__request_content()

view = get(self.path)
if not view:
return False

self.response = view[0](
self) if not view[1] else view[0](self, **view[1])

if type(self.response).__name__ not in ['Redirect', 'RenderTemplate', 'Reload']:
return False

return True

def __request_content(self):
raw_length = self.headers.get('content-length')
if not raw_length:
return
length = int(raw_length)

self.raw_request = self.rfile.read(length)

def __return_template(self):
if not self.response:
return

render, redirect = self.response.render_template(self)
self.end_headers()
if not redirect:
template = ' '.join(render.splitlines())

self.wfile.write(template.encode())

def __handler(self):
condition = self.__check_request()

if not condition:
return getattr(http.server.SimpleHTTPRequestHandler, f'do_{self.command}')(self)

self.__return_template()

def __init__(self, *args, **kwargs):
super().__init__(*args, directory=Template.STATIC_PATH, **kwargs)

@property
def parameters(self):
result = {}
for i in parse.parse_qsl(self.raw_request):
result[i[0].decode()] = i[1].decode()
return result

def do_GET(self): self.__handler()
def do_POST(self): self.__handler()
155 changes: 0 additions & 155 deletions pypulse/Socket/request_handler.py

This file was deleted.

4 changes: 2 additions & 2 deletions pypulse/Socket/server.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import socketserver
from .request_handler import RequestHandler
from pypulse.Socket.handler import Request
from pypulse.Aplication import Vars


httpd = socketserver.TCPServer(
("", Vars.INTERNAL_HTTP_SERVER_PORT), RequestHandler)
("", Vars.INTERNAL_HTTP_SERVER_PORT), Request)


def run_socket():
Expand Down
6 changes: 3 additions & 3 deletions pypulse/Template/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
from .render_template import RenderTemplate
from .template import Template
from .redirect_path import Redirect
from pypulse.Template.render import RenderTemplate
from pypulse.Template.redirect import Redirect
from pypulse.Template.reload import Reload
19 changes: 19 additions & 0 deletions pypulse/Template/redirect.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from pypulse.Aplication.vars import Vars
from pypulse.View.views import get


class Redirect():
def __init__(self, path: str) -> None:
self.path = path

def render_template(self, request):
if self.path == request.path or get(request.path) == self.path:
print(
f'You tried to redirect to `{self.path}`, route that you are already in.')
print(f'If you want to reload the current view, use `Reload`.')
exit(1)

request.send_response(301)
request.send_header(
'Location', f'http://localhost:{Vars.INTERNAL_HTTP_SERVER_PORT}' + self.path)
return None, True
16 changes: 0 additions & 16 deletions pypulse/Template/redirect_path.py

This file was deleted.

23 changes: 23 additions & 0 deletions pypulse/Template/reload.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from pypulse.Aplication.vars import Vars
from pypulse.View.views import get


class Reload:

def __init__(self) -> None:
pass

def render_template(self, request):
view = get(request.path)
request.command = 'GET'
response = view[0](request) if not view[1] else view[0](
request, **view[1])
if type(response).__name__ == 'Reload':
print(
f'Path `{request.path}` returns reload in a loop (infinite recursion).')
exit(1)

request.send_response(301)
request.send_header(
'Location', f'http://localhost:{Vars.INTERNAL_HTTP_SERVER_PORT}' + request.path)
return None, True
Loading