itd-sdk-js 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/API_REFERENCE.md +13 -1
- package/README.md +7 -0
- package/package.json +1 -1
- package/src/client.js +12 -0
- package/src/posts.js +65 -0
package/API_REFERENCE.md
CHANGED
|
@@ -63,6 +63,18 @@ client.auth.isAuthenticated = true;
|
|
|
63
63
|
|
|
64
64
|
- **Параметры**: `text` (string), `imagePath` (string, опционально).
|
|
65
65
|
|
|
66
|
+
### createWallPost(username, text, imagePath?)
|
|
67
|
+
|
|
68
|
+
Создает пост **на стене другого пользователя** (wall post).
|
|
69
|
+
|
|
70
|
+
- Делается через `POST /api/posts` с телом `{ content, wallRecipientId }`.
|
|
71
|
+
- `wallRecipientId` — это **ID пользователя-получателя**, поэтому метод сначала запрашивает профиль через `getUserProfile(username)` и берет `profile.id`.
|
|
72
|
+
|
|
73
|
+
- **Параметры**:
|
|
74
|
+
- `username` — username получателя (string)
|
|
75
|
+
- `text` — текст поста (string)
|
|
76
|
+
- `imagePath` — путь к изображению (string, опционально)
|
|
77
|
+
|
|
66
78
|
### getPost(postId)
|
|
67
79
|
|
|
68
80
|
Запрашивает данные конкретного поста.
|
|
@@ -248,4 +260,4 @@ if (result.pagination.hasMore) {
|
|
|
248
260
|
|
|
249
261
|
---
|
|
250
262
|
|
|
251
|
-
**Последнее обновление документации**: 2026-01-
|
|
263
|
+
**Последнее обновление документации**: 2026-01-28.
|
package/README.md
CHANGED
|
@@ -84,6 +84,13 @@ console.log(`${stats.likes} лайков, ${stats.views} просмотров`);
|
|
|
84
84
|
|
|
85
85
|
Полное описание каждого метода — в **[API_REFERENCE.md](API_REFERENCE.md)**.
|
|
86
86
|
|
|
87
|
+
## Пост на чужой стене (wall post)
|
|
88
|
+
|
|
89
|
+
```javascript
|
|
90
|
+
// Пишем пост на стене другого пользователя (нужен wallRecipientId, SDK получит его сам)
|
|
91
|
+
await client.createWallPost('ITD_API', 'Тестовый пост на чужой стене 🦫');
|
|
92
|
+
```
|
|
93
|
+
|
|
87
94
|
## Важно
|
|
88
95
|
|
|
89
96
|
Это неофициальный проект. Если разработчики сайта изменят структуру API или введут новую защиту, методы могут временно перестать работать. Используйте аккуратно и не спамьте запросами.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "itd-sdk-js",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Unofficial SDK for итд.com - Node.js library for working with API. Automatic token refresh, session management, and convenient methods for posts, comments, users, and notifications.",
|
|
5
5
|
"main": "src/client.js",
|
|
6
6
|
"type": "module",
|
package/src/client.js
CHANGED
|
@@ -239,6 +239,18 @@ export class ITDClient {
|
|
|
239
239
|
return await this.posts.createPost(text, imagePath);
|
|
240
240
|
}
|
|
241
241
|
|
|
242
|
+
/**
|
|
243
|
+
* Создает пост на стене другого пользователя (wall post)
|
|
244
|
+
*
|
|
245
|
+
* @param {string} username - Имя пользователя, на чью стену нужно написать
|
|
246
|
+
* @param {string} text - Текст поста
|
|
247
|
+
* @param {string|null} imagePath - Путь к изображению (опционально)
|
|
248
|
+
* @returns {Promise<Object|null>} Данные созданного поста или null
|
|
249
|
+
*/
|
|
250
|
+
async createWallPost(username, text, imagePath = null) {
|
|
251
|
+
return await this.posts.createWallPost(username, text, imagePath);
|
|
252
|
+
}
|
|
253
|
+
|
|
242
254
|
/**
|
|
243
255
|
* Редактирует пост (удобный метод)
|
|
244
256
|
*
|
package/src/posts.js
CHANGED
|
@@ -69,6 +69,71 @@ export class PostsManager {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Создает пост на стене другого пользователя (wall post)
|
|
74
|
+
*
|
|
75
|
+
* @param {string} username - Имя пользователя, на чью стену нужно написать
|
|
76
|
+
* @param {string} text - Текст поста
|
|
77
|
+
* @param {string|null} imagePath - Путь к изображению (опционально)
|
|
78
|
+
* @returns {Promise<Object|null>} Данные созданного поста или null при ошибке
|
|
79
|
+
*/
|
|
80
|
+
async createWallPost(username, text, imagePath = null) {
|
|
81
|
+
if (!await this.client.auth.checkAuth()) {
|
|
82
|
+
console.error('Ошибка: необходимо войти в аккаунт');
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
try {
|
|
87
|
+
// Получаем профиль пользователя, чтобы получить его ID
|
|
88
|
+
const profile = await this.client.users.getUserProfile(username);
|
|
89
|
+
if (!profile || !profile.id) {
|
|
90
|
+
console.error(`Ошибка: не удалось получить профиль пользователя ${username}`);
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const wallRecipientId = profile.id;
|
|
95
|
+
|
|
96
|
+
// Реальный URL из анализа
|
|
97
|
+
const postUrl = `${this.client.baseUrl}/api/posts`;
|
|
98
|
+
|
|
99
|
+
// Подготовка данных с wallRecipientId
|
|
100
|
+
let postData = {
|
|
101
|
+
content: text,
|
|
102
|
+
wallRecipientId: wallRecipientId, // ID получателя поста на стене
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// Если есть изображение
|
|
106
|
+
if (imagePath) {
|
|
107
|
+
// Сначала загружаем файл через /api/files/upload
|
|
108
|
+
const uploadedFile = await this.client.files.uploadFile(imagePath);
|
|
109
|
+
if (!uploadedFile) {
|
|
110
|
+
console.error('Ошибка: не удалось загрузить изображение');
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Затем создаем пост с ID загруженного файла
|
|
115
|
+
postData.attachments = [uploadedFile.id];
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Создаем пост на стене
|
|
119
|
+
const response = await this.axios.post(postUrl, postData);
|
|
120
|
+
|
|
121
|
+
if (response.status === 200 || response.status === 201) {
|
|
122
|
+
return response.data;
|
|
123
|
+
} else {
|
|
124
|
+
console.error(`Ошибка создания поста на стене: ${response.status} - ${JSON.stringify(response.data)}`);
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
} catch (error) {
|
|
128
|
+
console.error('Исключение при создании поста на стене:', error.message);
|
|
129
|
+
if (error.response) {
|
|
130
|
+
console.error('Response status:', error.response.status);
|
|
131
|
+
console.error('Response data:', error.response.data);
|
|
132
|
+
}
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
72
137
|
/**
|
|
73
138
|
* Получает список постов пользователя или ленту
|
|
74
139
|
*
|