finally got the thing working

This commit is contained in:
Greg Gauthier 2025-04-12 17:30:44 +01:00
parent bb0474fe07
commit 4ed17de9ae
3 changed files with 67 additions and 2 deletions

47
examples/draft_post.py Normal file
View File

@ -0,0 +1,47 @@
from lunduke.config import DiscourseConfig
from lunduke.auth import DiscourseAuth
from lunduke.client import DiscourseClient
def main():
# Set up configuration
config = DiscourseConfig(
host='forum.lunduke.com',
username='gmgauthier'
)
# Set up authentication
auth = DiscourseAuth(
api_key_file='../keys/cli_key.txt',
username=config.username
)
# Create client
client = DiscourseClient(config, auth)
# Create a draft post
try:
draft_data = {
"title": "Simple forum post",
"raw": "Simple forum post content"
}
# draft_data = {
# "draft_key": "new_topic",
# "data": {
# "title": "Test Draft Topic from API",
# "raw": "This is the content of my draft post created via the API.",
# "category_id": 1 # Replace with your desired category ID
# }
# }
response = client.post('/posts.json', data=draft_data)
print(f"Draft created successfully: {response}")
except Exception as e:
print(f"Error creating draft: {e}")
if __name__ == "__main__":
main()

View File

@ -25,7 +25,8 @@ def main():
posts = response['latest_posts']
print(f"Found {len(posts)} posts")
for post in posts:
print(post['post_type'], post['username'], post['topic_id'])
# print(post)
print(post['username'], post['topic_title'], post['excerpt'])
except Exception as e:
print(f"Error: {e}")

View File

@ -38,4 +38,21 @@ class DiscourseClient:
response.raise_for_status() # Raise exception for error status codes
return response.json()
# Add other HTTP methods as needed (post, put, delete)
# Add other HTTP methods as needed (post, put, delete)
def post(self, endpoint, data=None) -> dict:
"""
Make a POST request to the API.
Args:
endpoint: API endpoint (e.g., '/posts.json')
data: Data to be sent in the request body
Returns:
Response data as JSON
"""
url = f"{self.config.get_base_url()}{endpoint}"
headers = self.auth.get_headers()
response = self.session.post(url, headers=headers, json=data)
response.raise_for_status() # Raise exception for error status codes
return response.json()