itd-sdk-js 1.0.8 → 1.0.9
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/package.json +1 -1
- package/src/auth.js +5 -2
- package/src/client.js +5 -15
- package/src/notifications.js +2 -1
- package/src/posts.js +2 -2
- package/src/users.js +2 -14
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "itd-sdk-js",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
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/auth.js
CHANGED
|
@@ -130,8 +130,11 @@ export class AuthManager {
|
|
|
130
130
|
|
|
131
131
|
if (response.status === 200) {
|
|
132
132
|
this.client.setAccessToken(null);
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
try {
|
|
134
|
+
this.client.cookieJar.removeAllCookiesSync();
|
|
135
|
+
} catch (e) {
|
|
136
|
+
// MemoryCookieStore поддерживает removeAllCookiesSync
|
|
137
|
+
}
|
|
135
138
|
return true;
|
|
136
139
|
}
|
|
137
140
|
return false;
|
package/src/client.js
CHANGED
|
@@ -199,7 +199,7 @@ export class ITDClient {
|
|
|
199
199
|
this.hashtags = new HashtagsManager(this);
|
|
200
200
|
this.files = new FilesManager(this);
|
|
201
201
|
this.reports = new ReportsManager(this);
|
|
202
|
-
this.
|
|
202
|
+
this.searchManager = new SearchManager(this);
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
/**
|
|
@@ -383,7 +383,7 @@ export class ITDClient {
|
|
|
383
383
|
*
|
|
384
384
|
* @param {string|null} username - Имя пользователя (null = лента/свои посты)
|
|
385
385
|
* @param {number} limit - Количество постов
|
|
386
|
-
* @param {string} sort - Сортировка: "
|
|
386
|
+
* @param {string} sort - Сортировка: "newest", "oldest", "popular"
|
|
387
387
|
* @param {string|null} cursor - Курсор для пагинации
|
|
388
388
|
* @param {string|null} tab - Тип ленты: "popular" (популярные), "following" (из подписок), null (обычная лента)
|
|
389
389
|
* @returns {Promise<Object>} { posts: [], pagination: {} }
|
|
@@ -843,7 +843,7 @@ export class ITDClient {
|
|
|
843
843
|
* @returns {Promise<Object|null>} { users: [], hashtags: [] } или null при ошибке
|
|
844
844
|
*/
|
|
845
845
|
async search(query, userLimit = 5, hashtagLimit = 5) {
|
|
846
|
-
return await this.
|
|
846
|
+
return await this.searchManager.search(query, userLimit, hashtagLimit);
|
|
847
847
|
}
|
|
848
848
|
|
|
849
849
|
/**
|
|
@@ -854,7 +854,7 @@ export class ITDClient {
|
|
|
854
854
|
* @returns {Promise<Array|null>} Массив пользователей или null при ошибке
|
|
855
855
|
*/
|
|
856
856
|
async searchUsers(query, limit = 5) {
|
|
857
|
-
return await this.
|
|
857
|
+
return await this.searchManager.searchUsers(query, limit);
|
|
858
858
|
}
|
|
859
859
|
|
|
860
860
|
/**
|
|
@@ -865,7 +865,7 @@ export class ITDClient {
|
|
|
865
865
|
* @returns {Promise<Array|null>} Массив хэштегов или null при ошибке
|
|
866
866
|
*/
|
|
867
867
|
async searchHashtags(query, limit = 5) {
|
|
868
|
-
return await this.
|
|
868
|
+
return await this.searchManager.searchHashtags(query, limit);
|
|
869
869
|
}
|
|
870
870
|
|
|
871
871
|
// ========== USER-FRIENDLY МЕТОДЫ ==========
|
|
@@ -995,16 +995,6 @@ export class ITDClient {
|
|
|
995
995
|
return await this.users.getMyClan();
|
|
996
996
|
}
|
|
997
997
|
|
|
998
|
-
/**
|
|
999
|
-
* Получает клан пользователя (эмодзи аватара) (удобный метод)
|
|
1000
|
-
*
|
|
1001
|
-
* @param {string} username - Имя пользователя
|
|
1002
|
-
* @returns {Promise<string|null>} Эмодзи клана или null
|
|
1003
|
-
*/
|
|
1004
|
-
async getUserClan(username) {
|
|
1005
|
-
return await this.users.getUserClan(username);
|
|
1006
|
-
}
|
|
1007
|
-
|
|
1008
998
|
// === Комментарии ===
|
|
1009
999
|
|
|
1010
1000
|
/**
|
package/src/notifications.js
CHANGED
|
@@ -143,7 +143,8 @@ export class NotificationsManager {
|
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
/**
|
|
146
|
-
* Отмечает все уведомления как
|
|
146
|
+
* Отмечает все уведомления как прочитанные.
|
|
147
|
+
* Экспериментально: endpoint /api/notifications/read-all может отличаться.
|
|
147
148
|
*
|
|
148
149
|
* @returns {Promise<boolean>} True если успешно
|
|
149
150
|
*/
|
package/src/posts.js
CHANGED
|
@@ -314,7 +314,7 @@ export class PostsManager {
|
|
|
314
314
|
const response = await this.axios.put(editUrl, postData);
|
|
315
315
|
|
|
316
316
|
if (response.status === 200) {
|
|
317
|
-
return response.data;
|
|
317
|
+
return response.data?.data ?? response.data;
|
|
318
318
|
} else {
|
|
319
319
|
console.error(`Ошибка редактирования поста: ${response.status} - ${JSON.stringify(response.data)}`);
|
|
320
320
|
return null;
|
|
@@ -424,7 +424,7 @@ export class PostsManager {
|
|
|
424
424
|
const response = await this.axios.post(repostUrl, repostData);
|
|
425
425
|
|
|
426
426
|
if (response.status === 200 || response.status === 201) {
|
|
427
|
-
return response.data;
|
|
427
|
+
return response.data?.data ?? response.data;
|
|
428
428
|
} else {
|
|
429
429
|
console.error(`Ошибка репоста: ${response.status}`);
|
|
430
430
|
if (response.data) {
|
package/src/users.js
CHANGED
|
@@ -306,9 +306,8 @@ export class UsersManager {
|
|
|
306
306
|
const response = await this.axios.get(topClansUrl);
|
|
307
307
|
|
|
308
308
|
if (response.status === 200) {
|
|
309
|
-
const data = response.data;
|
|
310
|
-
|
|
311
|
-
return data.clans || [];
|
|
309
|
+
const data = response.data?.data ?? response.data;
|
|
310
|
+
return data?.clans || [];
|
|
312
311
|
} else {
|
|
313
312
|
console.error(`Ошибка получения топ кланов: ${response.status}`);
|
|
314
313
|
return null;
|
|
@@ -403,15 +402,4 @@ export class UsersManager {
|
|
|
403
402
|
const profile = await this.getMyProfile();
|
|
404
403
|
return profile ? (profile.avatar || null) : null;
|
|
405
404
|
}
|
|
406
|
-
|
|
407
|
-
/**
|
|
408
|
-
* Получает клан пользователя (эмодзи аватара) (удобный метод)
|
|
409
|
-
*
|
|
410
|
-
* @param {string} username - Имя пользователя
|
|
411
|
-
* @returns {Promise<string|null>} Эмодзи клана или null
|
|
412
|
-
*/
|
|
413
|
-
async getUserClan(username) {
|
|
414
|
-
const profile = await this.getUserProfile(username);
|
|
415
|
-
return profile ? (profile.avatar || null) : null;
|
|
416
|
-
}
|
|
417
405
|
}
|