86 lines
2.9 KiB
Python
86 lines
2.9 KiB
Python
|
|
from os import access
|
||
|
|
from urllib import response
|
||
|
|
from fastapi import (
|
||
|
|
APIRouter,
|
||
|
|
Depends,
|
||
|
|
status,
|
||
|
|
HTTPException
|
||
|
|
)
|
||
|
|
from fastapi.responses import JSONResponse
|
||
|
|
from fastapi.encoders import jsonable_encoder
|
||
|
|
from fastapi.security import OAuth2PasswordRequestForm
|
||
|
|
from fastapi import File, UploadFile, FastAPI
|
||
|
|
from ..models.models import (
|
||
|
|
UserModel,
|
||
|
|
ShowUserModel,
|
||
|
|
UpdateUserModel
|
||
|
|
)
|
||
|
|
from ..models.save_post import *
|
||
|
|
from ..dependecies import (
|
||
|
|
get_current_user,
|
||
|
|
authenticate_user,
|
||
|
|
authenticate_user_oauth2,
|
||
|
|
create_access_token,
|
||
|
|
get_password_hash
|
||
|
|
)
|
||
|
|
from ..settings import db, ACCESS_TOKEN_EXPIRE_MINUTES
|
||
|
|
import json
|
||
|
|
from typing import List
|
||
|
|
from datetime import datetime, timedelta
|
||
|
|
|
||
|
|
import requests
|
||
|
|
import re
|
||
|
|
from pydantic import BaseModel, Field
|
||
|
|
|
||
|
|
|
||
|
|
post_save = APIRouter()
|
||
|
|
# ============= Creating path operations ==============
|
||
|
|
|
||
|
|
|
||
|
|
@post_save.post("/save_post", response_description="save new post", response_model=SavePostModel)
|
||
|
|
async def create_post(post_save: SavePost):
|
||
|
|
try:
|
||
|
|
url = "https://sandboxapi.ebacsi.com.vn/auth/oauth/check_token"
|
||
|
|
payload = {'token': post_save.token}
|
||
|
|
headers = {
|
||
|
|
'Authorization': 'Basic RGljdGlvbmFyeU1lZGlob21lOlJ4aXR6ZnZvaWFmZmNtb2l0ZW0='
|
||
|
|
}
|
||
|
|
response = requests.request(
|
||
|
|
"POST", url, headers=headers, data=payload)
|
||
|
|
data_output = json.loads(response.text)
|
||
|
|
data = data_output.get("user_name", None)
|
||
|
|
if data == None:
|
||
|
|
return JSONResponse(status_code=status.HTTP_401_UNAUTHORIZED, content={"message": "UNAUTHORIZED"})
|
||
|
|
|
||
|
|
datetime_now = datetime.now()
|
||
|
|
post_save.created_at = datetime_now.strftime("%m/%d/%y %H:%M:%S")
|
||
|
|
post_save = jsonable_encoder(post_save)
|
||
|
|
del post_save["token"]
|
||
|
|
post_save["username"] = data
|
||
|
|
new_post = await db["post_save"].insert_one(post_save)
|
||
|
|
created_post = await db["post_save"].find_one({"_id": new_post.inserted_id})
|
||
|
|
return JSONResponse(status_code=status.HTTP_201_CREATED, content=created_post)
|
||
|
|
except NameError:
|
||
|
|
return NameError
|
||
|
|
|
||
|
|
|
||
|
|
@post_save.get(
|
||
|
|
"/list_save_post_by_user", response_description="List save posts", response_model=SavePostModel
|
||
|
|
)
|
||
|
|
async def list_post(post_save: SavePost):
|
||
|
|
url = "https://sandboxapi.ebacsi.com.vn/auth/oauth/check_token"
|
||
|
|
payload = {'token': post_save.token}
|
||
|
|
headers = {
|
||
|
|
'Authorization': 'Basic RGljdGlvbmFyeU1lZGlob21lOlJ4aXR6ZnZvaWFmZmNtb2l0ZW0='
|
||
|
|
}
|
||
|
|
response = requests.request(
|
||
|
|
"POST", url, headers=headers, data=payload)
|
||
|
|
data_output = json.loads(response.text)
|
||
|
|
data = data_output.get("user_name", None)
|
||
|
|
if data == None:
|
||
|
|
return JSONResponse(status_code=status.HTTP_401_UNAUTHORIZED, content={"message": "UNAUTHORIZED"})
|
||
|
|
posts = await db["post_save"].find({"username": data, "is_active": "true"}).to_list(1000)
|
||
|
|
print(posts)
|
||
|
|
print(len(posts))
|
||
|
|
return posts
|