Skip to content

Commit

Permalink
feat: user get (#14)
Browse files Browse the repository at this point in the history
* feat: user get

* fix: report on fail
  • Loading branch information
db0 authored Jun 21, 2023
1 parent ed97433 commit 57147d4
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 0 deletions.
40 changes: 40 additions & 0 deletions examples/user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@

## python examples/user.py db0

import os
import argparse
import json
from pythorhead import Lemmy


arg_parser = argparse.ArgumentParser()
arg_parser.add_argument('username', action="store")
arg_parser.add_argument('-d', '--lemmy_domain', action='store', required=False, type=str, help="the domain in which to look for this user")
arg_parser.add_argument('-u', '--lemmy_username', action='store', required=False, type=str, help="Which user to authenticate as")
arg_parser.add_argument('-p', '--lemmy_password', action='store', required=False, type=str, help="Which password to authenticate with")
args = arg_parser.parse_args()



lemmy_domain = args.lemmy_domain
if not lemmy_domain:
lemmy_domain = os.getenv('LEMMY_DOMAIN', "lemmy.dbzer0.com")
if not lemmy_domain:
raise Exception("You need to provide a lemmy domain via env var or arg")

lemmy_username = args.lemmy_username
if not lemmy_username:
lemmy_username = os.getenv("LEMMY_USERNAME")

lemmy_password = args.lemmy_username
if not lemmy_password:
lemmy_password = os.getenv("LEMMY_PASSWORD")

lemmy = Lemmy(f"https://{lemmy_domain}")
if lemmy_username and lemmy_password:
lemmy.log_in(lemmy_username, lemmy_password)
user = lemmy.user.get(username=args.username)
if user:
print(json.dumps(user["person_view"], indent=4))
else:
print("no matching username found")
2 changes: 2 additions & 0 deletions pythorhead/lemmy.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from pythorhead.comment import Comment
from pythorhead.post import Post
from pythorhead.site import Site
from pythorhead.user import User
from pythorhead.requestor import Request, Requestor

logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
Expand All @@ -21,6 +22,7 @@ def __init__(self, api_base_url: str) -> None:
self.post = Post()
self.comment = Comment()
self.site = Site()
self.user = User()

def log_in(self, username_or_email: str, password: str) -> bool:
return self._requestor.log_in(username_or_email, password)
Expand Down
36 changes: 36 additions & 0 deletions pythorhead/user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from typing import Any, List, Literal, Optional

from pythorhead.requestor import Request, Requestor
from pythorhead.types import PostSortType


class User:
def __init__(self):
self._requestor = Requestor()

def get(
self,
person_id: Optional[str] = None,
username: Optional[str] = None,
sort: Optional[PostSortType] = None,
page: Optional[int] = None,
limit: Optional[int] = None,
community_id: Optional[int] = None,
saved_only: Optional[bool] = None,
) -> Optional[dict]:
"""
Get user details with various filters.
Args:
person_id (Optional[str], optional): Defaults to None.
username (Optional[str], optional): Defaults to None.
sort (Optional[CommentSortType], optional): Defaults to None.
page (Optional[int], optional): Defaults to None.
limit (Optional[int], optional): Defaults to None.
community_id (Optional[int], optional): Defaults to None.
saved_only (Optional[bool], optional): Defaults to None.
Returns:
dict: user view
"""
params: dict[str, Any] = {key: value for key, value in locals().items() if value is not None and key != 'self'}
return self._requestor.request(Request.GET, "/user", params=params)

0 comments on commit 57147d4

Please sign in to comment.