Skip to content

Commit a5ae31c

Browse files
author
arquejadalucy
committed
Improve controller files structure
1 parent 5f6cd04 commit a5ae31c

File tree

9 files changed

+124
-62
lines changed

9 files changed

+124
-62
lines changed

source/__init__.py

Whitespace-only changes.

source/config/settings.py

+14-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,18 @@
22
from dotenv import load_dotenv
33
import os
44

5-
load_dotenv()
5+
# load_dotenv()
6+
#
7+
# client = motor.motor_asyncio.AsyncIOMotorClient(os.getenv("MONGO_URI"))
8+
# db = client.college
69

7-
client = motor.motor_asyncio.AsyncIOMotorClient(os.getenv("MONGO_URI"))
8-
db = client.college
10+
FIREBASE_CONFIG = {
11+
"apiKey": "AIzaSyDp_XqMeP6rQ061y6M9mtlPp-JFatYBa-4",
12+
"authDomain": "crawler-jus.firebaseapp.com",
13+
"databaseURL": "https://crawler-jus-default-rtdb.firebaseio.com",
14+
"projectId": "crawler-jus",
15+
"storageBucket": "crawler-jus.appspot.com",
16+
"messagingSenderId": "654136178133",
17+
"appId": "1:654136178133:web:42658f521054817806395c",
18+
"measurementId": "G-QN0D2Q1SF7"
19+
}

source/controller/__init__.py

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,18 @@
1-
import firebase_admin
2-
import pyrebase
3-
from firebase_admin import credentials
41
from cerberus import Validator
5-
from fastapi import FastAPI, Request, Form
6-
from fastapi.responses import HTMLResponse
7-
from fastapi.staticfiles import StaticFiles
8-
from fastapi.templating import Jinja2Templates
9-
2+
from fastapi import APIRouter
103
from source.services.collect import search_process_data
114
from source.models.NumeroProcessoInfo import NumeroProcessoInfo
125
from source.models.ProcessoRequestBody import ProcessRequestBody
136
from source.services.validate import process_request_informations_schema, id_processo_schema, \
147
ProcessNumberRegexErrorHandler
158

16-
app = FastAPI()
17-
validator = Validator(error_handler=ProcessNumberRegexErrorHandler)
18-
19-
if not firebase_admin._apps:
20-
cred = credentials.Certificate("/Users/lucyvelasco/PycharmProjects/jus_crawler/serviceAccount.json")
21-
firebase_admin.initialize_app(cred)
229

23-
firebaseConfig = {
24-
"apiKey": "AIzaSyDp_XqMeP6rQ061y6M9mtlPp-JFatYBa-4",
25-
"authDomain": "crawler-jus.firebaseapp.com",
26-
"databaseURL": "https://crawler-jus-default-rtdb.firebaseio.com",
27-
"projectId": "crawler-jus",
28-
"storageBucket": "crawler-jus.appspot.com",
29-
"messagingSenderId": "654136178133",
30-
"appId": "1:654136178133:web:42658f521054817806395c",
31-
"measurementId": "G-QN0D2Q1SF7"
32-
}
10+
router = APIRouter(
11+
prefix="/processos",
12+
tags=["processos"]
13+
)
3314

34-
firebase = pyrebase.initialize_app(firebaseConfig)
15+
validator = Validator(error_handler=ProcessNumberRegexErrorHandler)
3516

3617

3718
def valid_request(processo_info: NumeroProcessoInfo):
@@ -42,22 +23,7 @@ def valid_process_id(numero_processo: str):
4223
return validator.validate({"numero_processo": numero_processo}, id_processo_schema)
4324

4425

45-
@app.post("/cadastro")
46-
async def create_an_account():
47-
pass
48-
49-
50-
@app.post("/login")
51-
async def create_access_token():
52-
pass
53-
54-
55-
@app.post("/ping")
56-
async def validate_token():
57-
pass
58-
59-
60-
@app.post("/processo")
26+
@router.post("/busca")
6127
def buscar_processo(process_request: ProcessRequestBody):
6228
"""
6329
API que busca dados de um processo em todos os graus dos Tribunais de Justiça de Alagoas (TJAL) e do Ceará (TJCE).
@@ -92,7 +58,7 @@ def buscar_processo(process_request: ProcessRequestBody):
9258
return response
9359

9460

95-
@app.get("/processo/{id_processo}")
61+
@router.get("/{id_processo}")
9662
def get_processo_info_by_id(id_processo: str):
9763
"""
9864
API que busca dados de um processo em todos os graus dos Tribunais de Justiça de Alagoas (TJAL) e do Ceará (TJCE).
@@ -123,19 +89,3 @@ def get_processo_info_by_id(id_processo: str):
12389
if not valid_request(processo_info):
12490
return validator.errors
12591
return search_process_data(processo_info)
126-
127-
128-
def get_jinja_templates():
129-
app.mount("/static", StaticFiles(directory="front-end/static"), name="static")
130-
return Jinja2Templates(directory="front-end/templates")
131-
132-
133-
@app.post('/buscaprocesso', include_in_schema=False)
134-
def buscar_processo_pelo_form(request: Request, id_processo: str = Form()):
135-
result = get_processo_info_by_id(id_processo)
136-
return get_jinja_templates().TemplateResponse('processo.html', {'request': request, 'result': result})
137-
138-
139-
@app.get('/', response_class=HTMLResponse, include_in_schema=False)
140-
def main(request: Request):
141-
return get_jinja_templates().TemplateResponse('home.html', {'request': request})

source/controller/users.py

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import pyrebase
2+
import firebase_admin
3+
from fastapi import APIRouter
4+
from firebase_admin import credentials
5+
from source.config.settings import FIREBASE_CONFIG
6+
from source.schemas.AuthenticationSchemas import SignUpSchema
7+
8+
if not firebase_admin._apps:
9+
cred = credentials.Certificate("/Users/lucyvelasco/PycharmProjects/jus_crawler/serviceAccount.json")
10+
firebase_admin.initialize_app(cred)
11+
12+
firebase = pyrebase.initialize_app(FIREBASE_CONFIG)
13+
14+
router = APIRouter(
15+
prefix="/users",
16+
tags=["users"]
17+
)
18+
19+
20+
@router.post("/cadastro")
21+
async def create_an_account(user_data: SignUpSchema):
22+
email = user_data.email
23+
password = user_data.password
24+
pass
25+
26+
27+
@router.post("/login")
28+
async def create_access_token():
29+
pass
30+
31+
32+
@router.post("/ping")
33+
async def validate_token():
34+
pass

source/dependencies.py

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from typing import Annotated
2+
3+
from fastapi import Header, HTTPException
4+
5+
6+
async def get_token_header(x_token: Annotated[str, Header()]):
7+
if x_token != "fake-super-secret-token":
8+
raise HTTPException(status_code=400, detail="X-Token header invalid")
9+
10+
11+
async def get_query_token(token: str):
12+
if token != "jessica":
13+
raise HTTPException(status_code=400, detail="No Jessica token provided")

source/main.py

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from fastapi import FastAPI, Request, Form
2+
from fastapi.responses import HTMLResponse
3+
from fastapi.staticfiles import StaticFiles
4+
from fastapi.templating import Jinja2Templates
5+
6+
from source.controller.processos import get_processo_info_by_id
7+
from source.controller import processos, users
8+
9+
app = FastAPI()
10+
app.include_router(users.router)
11+
app.include_router(processos.router)
12+
13+
14+
def get_jinja_templates():
15+
app.mount("/static", StaticFiles(directory="front-end/static"), name="static")
16+
return Jinja2Templates(directory="front-end/templates")
17+
18+
19+
@app.get('/', response_class=HTMLResponse, tags=["home"], include_in_schema=False)
20+
def main(request: Request):
21+
return get_jinja_templates().TemplateResponse('home.html', {'request': request})
22+
23+
24+
@app.post('/buscaprocesso', include_in_schema=False)
25+
def buscar_processo_pelo_form(request: Request, id_processo: str = Form()):
26+
result = get_processo_info_by_id(id_processo)
27+
return get_jinja_templates().TemplateResponse('processo.html', {'request': request, 'result': result})
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from pydantic import BaseModel
2+
3+
4+
class SignUpSchema(BaseModel):
5+
email: str
6+
password: str
7+
8+
class Config:
9+
schema_extra = {
10+
"example": {
11+
"email": "[email protected]",
12+
"password": "samplepass123"
13+
}
14+
}
15+
16+
17+
class LoginSchema(BaseModel):
18+
email: str
19+
password: str
20+
21+
class Config:
22+
schema_extra = {
23+
"example": {
24+
"email": "[email protected]",
25+
"password": "samplepass123"
26+
}
27+
}

tests/tests_controller.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from fastapi.testclient import TestClient
1010

11-
from source.controller.routes import app
11+
from source.controller.processos import app
1212
from source.services.validate import validate_process_number_message
1313
from Stubs import get_request_body_json_test, \
1414
NUMERO_PROCESSO_TRIBUNAL_INVALIDO, TRIBUNAL_NAO_SUPORTADO, \

0 commit comments

Comments
 (0)