pyfedi/app/api/alpha/utils/user.py

42 lines
1.4 KiB
Python

from app.api.alpha.views import user_view
from app.utils import authorise_api_user
from app.api.alpha.utils.post import get_post_list
from app.api.alpha.utils.reply import get_reply_list
def get_user(auth, data):
if not data or ('person_id' not in data and 'username' not in data):
raise Exception('missing_parameters')
# user_id = logged in user, person_id = person who's posts, comments etc are being fetched
# when 'username' is requested, user_id and person_id are the same
person_id = None
if 'person_id' in data:
person_id = int(data['person_id'])
user_id = None
if auth:
try:
user_id = authorise_api_user(auth)
if 'username' in data:
data['person_id'] = user_id
person_id = int(user_id)
auth = None # avoid authenticating user again in get_post_list and get_reply_list
except Exception as e:
raise e
# bit unusual. have to help construct the json here rather than in views, to avoid circular dependencies
post_list = get_post_list(auth, data, user_id)
reply_list = get_reply_list(auth, data, user_id)
try:
user_json = user_view(user=person_id, variant=3)
user_json['posts'] = post_list['posts']
user_json['comments'] = reply_list['comments']
return user_json
except:
raise