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