feat(classes.ghost): Add members, settings and webhooks support; implement Member class and add tests

This commit is contained in:
2025-10-07 14:29:36 +00:00
parent cf10f51089
commit 76c2b714b5
15 changed files with 1173 additions and 4 deletions

View File

@@ -368,6 +368,94 @@ await ghostInstance.bulkUpdatePosts(postIds, {
await ghostInstance.bulkDeletePosts(['id4', 'id5']);
```
#### Members Management
Manage your Ghost site members (requires Ghost membership features enabled).
```typescript
// Get all members
const members = await ghostInstance.getMembers({ limit: 100 });
members.forEach(member => {
console.log(`${member.getName()} - ${member.getEmail()}`);
});
// Filter members with minimatch
const filteredMembers = await ghostInstance.getMembers({
filter: '*@gmail.com'
});
// Get member by email
const member = await ghostInstance.getMemberByEmail('user@example.com');
console.log(member.getStatus());
// Create a new member
const newMember = await ghostInstance.createMember({
email: 'newuser@example.com',
name: 'New User'
});
// Update a member
await newMember.update({
name: 'Updated Name',
note: 'VIP member'
});
// Delete a member
await newMember.delete();
```
#### Site Settings
Read and update Ghost site settings.
```typescript
// Get all settings
const settings = await ghostInstance.getSettings();
console.log(settings);
// Update settings
await ghostInstance.updateSettings([
{
key: 'title',
value: 'My Updated Site Title'
},
{
key: 'description',
value: 'My site description'
}
]);
```
#### Webhooks Management
Manage webhooks for Ghost events.
```typescript
// Get all webhooks
const webhooks = await ghostInstance.getWebhooks();
webhooks.forEach(webhook => {
console.log(`${webhook.name}: ${webhook.target_url}`);
});
// Get webhook by ID
const webhook = await ghostInstance.getWebhookById('webhook-id');
// Create a webhook
const newWebhook = await ghostInstance.createWebhook({
event: 'post.published',
target_url: 'https://example.com/webhook',
name: 'Post Published Webhook'
});
// Update a webhook
await ghostInstance.updateWebhook(newWebhook.id, {
target_url: 'https://example.com/new-webhook'
});
// Delete a webhook
await ghostInstance.deleteWebhook(newWebhook.id);
```
### Example Projects
To give you a comprehensive understanding, let's look at a couple of example projects.