Spaces:
Runtime error
Runtime error
Siddhant
commited on
recent posts service added
Browse files- main.py +13 -1
- utils/GetTopAndRecentQuestions.py +40 -1
main.py
CHANGED
@@ -3,7 +3,7 @@ from typing import Annotated
|
|
3 |
import os
|
4 |
from fastapi.middleware.cors import CORSMiddleware
|
5 |
from dotenv import load_dotenv
|
6 |
-
from utils.GetTopAndRecentQuestions import return_top_question
|
7 |
|
8 |
load_dotenv()
|
9 |
|
@@ -33,3 +33,15 @@ def get_top_questions_(limit: int = 5, Authorization: Annotated[list[str] | None
|
|
33 |
except Exception as e:
|
34 |
# return a success message
|
35 |
raise HTTPException(status_code=400, detail=str(e))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
import os
|
4 |
from fastapi.middleware.cors import CORSMiddleware
|
5 |
from dotenv import load_dotenv
|
6 |
+
from utils.GetTopAndRecentQuestions import return_top_question, return_recent_posts
|
7 |
|
8 |
load_dotenv()
|
9 |
|
|
|
33 |
except Exception as e:
|
34 |
# return a success message
|
35 |
raise HTTPException(status_code=400, detail=str(e))
|
36 |
+
|
37 |
+
|
38 |
+
@app.get("/get_recent_posts", status_code=status.HTTP_200_OK)
|
39 |
+
def get_recent_posts_(limit: int = 5, strategy: str = 'recent',
|
40 |
+
Authorization: Annotated[list[str] | None, Header()] = None):
|
41 |
+
if Authorization is None or Authorization[0] != "Bearer {}".format(token):
|
42 |
+
raise HTTPException(status_code=401, detail="Unauthorised.")
|
43 |
+
try:
|
44 |
+
return {'data': return_recent_posts(limit, strategy)}
|
45 |
+
except Exception as e:
|
46 |
+
# return a success message
|
47 |
+
raise HTTPException(status_code=400, detail=str(e))
|
utils/GetTopAndRecentQuestions.py
CHANGED
@@ -134,4 +134,43 @@ def return_top_question(limit=5):
|
|
134 |
|
135 |
return message
|
136 |
|
137 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
|
135 |
return message
|
136 |
|
137 |
+
|
138 |
+
def return_recent_posts(limit=5, strategy='recent'):
|
139 |
+
import os
|
140 |
+
import requests
|
141 |
+
import json
|
142 |
+
|
143 |
+
HASURA_URL = os.environ['HASURA_URL']
|
144 |
+
HASURA_ADMIN_SECRET = os.environ['HASURA_ADMIN_SECRET']
|
145 |
+
|
146 |
+
url = HASURA_URL
|
147 |
+
body = """query homeFeedQuery($strategy: Strategy, $limit: Int){
|
148 |
+
feed(strategy: $strategy, limit: $limit) {
|
149 |
+
hits {
|
150 |
+
link
|
151 |
+
title
|
152 |
+
date
|
153 |
+
author
|
154 |
+
}
|
155 |
+
}
|
156 |
+
}"""
|
157 |
+
variables = {'strategy': strategy, 'limit': limit}
|
158 |
+
response = requests.post(url=url, json={'query': body, 'variables': variables}, headers={
|
159 |
+
'x-hasura-admin-secret': HASURA_ADMIN_SECRET})
|
160 |
+
|
161 |
+
message = 'These are the recent Articles/Posts on the platform/twimbit website: \n'
|
162 |
+
|
163 |
+
if response.status_code == 200:
|
164 |
+
data = json.loads(response.content)
|
165 |
+
posts = data.get('data').get('feed').get('hits')
|
166 |
+
|
167 |
+
for key, post in enumerate(posts):
|
168 |
+
title = post.get('title')
|
169 |
+
link = post.get('link')
|
170 |
+
date = post.get('date')
|
171 |
+
authors = ','.join(post.get('author'))
|
172 |
+
message += 'Post/Article {}:- \n\tPost/Article Title:- {}\n\tPost/Article Link/URL:- {}\n\tPost/Article Publish Date:- {}\n\tPost/Article Author:- {}\n'.format(
|
173 |
+
key + 1, title, link, date, authors)
|
174 |
+
|
175 |
+
return message
|
176 |
+
|