refactor: 模块化重构项目结构
This commit is contained in:
68
src/confluence.py
Normal file
68
src/confluence.py
Normal file
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Confluence API 客户端模块
|
||||
"""
|
||||
import requests
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class ConfluenceClient:
|
||||
"""Confluence REST API 客户端"""
|
||||
|
||||
def __init__(self, base_url: str, token: str):
|
||||
"""
|
||||
初始化客户端
|
||||
|
||||
参数:
|
||||
base_url: Confluence API 基础URL (不包含 /content)
|
||||
token: Bearer 认证令牌
|
||||
"""
|
||||
self.base_url = base_url.rstrip('/')
|
||||
self.headers = {
|
||||
'Authorization': f'Bearer {token}',
|
||||
'Accept': 'application/json'
|
||||
}
|
||||
|
||||
def fetch_content(self, content_id: str, expand: str = 'body.storage') -> dict:
|
||||
"""
|
||||
获取页面内容
|
||||
|
||||
参数:
|
||||
content_id: 页面ID
|
||||
expand: 展开字段
|
||||
|
||||
返回:
|
||||
API 响应数据
|
||||
"""
|
||||
url = f'{self.base_url}/content/{content_id}'
|
||||
params = {'expand': expand}
|
||||
|
||||
response = requests.get(url, headers=self.headers, params=params, timeout=30)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
|
||||
def get_html(self, content_id: str) -> str:
|
||||
"""
|
||||
获取页面HTML内容
|
||||
|
||||
参数:
|
||||
content_id: 页面ID
|
||||
|
||||
返回:
|
||||
HTML 字符串
|
||||
"""
|
||||
data = self.fetch_content(content_id)
|
||||
return data.get('body', {}).get('storage', {}).get('value', '')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 使用示例
|
||||
import os
|
||||
|
||||
client = ConfluenceClient(
|
||||
base_url='https://confluence.westwell-lab.com/rest/api',
|
||||
token=os.getenv('CONFLUENCE_TOKEN', '')
|
||||
)
|
||||
|
||||
html = client.get_html('155764524')
|
||||
print(f'获取到 {len(html)} 字符的HTML内容')
|
||||
Reference in New Issue
Block a user