rustore 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/README.md +82 -5
- package/dist/api/apps.d.ts +42 -4
- package/dist/api/apps.d.ts.map +1 -1
- package/dist/api/apps.js +103 -15
- package/dist/api/apps.js.map +1 -1
- package/dist/api/auth.d.ts +8 -0
- package/dist/api/auth.d.ts.map +1 -1
- package/dist/api/auth.js +8 -0
- package/dist/api/auth.js.map +1 -1
- package/dist/api/catalog.d.ts +2 -0
- package/dist/api/catalog.d.ts.map +1 -1
- package/dist/api/catalog.js +2 -0
- package/dist/api/catalog.js.map +1 -1
- package/dist/api/client.d.ts +6 -1
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +21 -5
- package/dist/api/client.js.map +1 -1
- package/dist/api/feedback.d.ts +86 -0
- package/dist/api/feedback.d.ts.map +1 -0
- package/dist/api/feedback.js +113 -0
- package/dist/api/feedback.js.map +1 -0
- package/dist/api/payments-app.d.ts +2 -0
- package/dist/api/payments-app.d.ts.map +1 -1
- package/dist/api/payments-app.js +2 -0
- package/dist/api/payments-app.js.map +1 -1
- package/dist/api/payments.d.ts +2 -0
- package/dist/api/payments.d.ts.map +1 -1
- package/dist/api/payments.js +2 -0
- package/dist/api/payments.js.map +1 -1
- package/dist/bin.js +174 -2
- package/dist/bin.js.map +1 -1
- package/dist/commands/apps.d.ts +13 -0
- package/dist/commands/apps.d.ts.map +1 -1
- package/dist/commands/apps.js +85 -2
- package/dist/commands/apps.js.map +1 -1
- package/dist/commands/feedback.d.ts +30 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +189 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/config.d.ts +2 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +168 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<h1 align="center">rustore<br>CLI для работы с RuStore API</h1>
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
Командная строка для взаимодействия с RuStore API
|
|
4
|
+
Командная строка для взаимодействия с RuStore API
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
[![NPM version][npm-image]][npm-url]
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
- 🔐 Авторизация через приватный ключ из RuStore Консоль
|
|
14
14
|
- 🔑 Автоматическое управление токенами доступа
|
|
15
15
|
- 📦 Работа с API RuStore (платежи, подписки, приложения)
|
|
16
|
+
- 📄 Вывод результатов в формате JSON (`--json`) для удобной интеграции и обработки
|
|
16
17
|
- ⚙️ Сохранение конфигурации в `~/.rustore/config.json`
|
|
17
18
|
- 🧪 Полное покрытие тестами
|
|
18
19
|
|
|
@@ -73,10 +74,64 @@ rustore apps list
|
|
|
73
74
|
# Получить все приложения (с пагинацией)
|
|
74
75
|
rustore apps list --all
|
|
75
76
|
|
|
76
|
-
# Вывести результат в формате JSON
|
|
77
|
+
# Вывести результат в формате JSON (удобно для скриптов и интеграций)
|
|
77
78
|
rustore apps list --json
|
|
79
|
+
|
|
80
|
+
# Комбинирование опций: получить все приложения в JSON формате
|
|
81
|
+
rustore apps list --all --json
|
|
82
|
+
|
|
83
|
+
# Фильтрация с JSON выводом
|
|
84
|
+
rustore apps list --app-name "MyApp" --json
|
|
85
|
+
rustore apps list --app-status PUBLISHED --json
|
|
86
|
+
|
|
87
|
+
# Создать черновую версию приложения
|
|
88
|
+
rustore apps create-draft --app-id 123456 --version-name "1.0.0" --version-code 1
|
|
89
|
+
|
|
90
|
+
# Создать черновую версию с JSON выводом
|
|
91
|
+
rustore apps create-draft --app-id 123456 --version-name "2.0.0" --version-code 2 --json
|
|
92
|
+
|
|
93
|
+
# Загрузить APK/AAB файл для версии
|
|
94
|
+
rustore apps upload-apk --app-id 123456 --version-id 789 --file ./app-release.apk
|
|
95
|
+
|
|
96
|
+
# Загрузить APK/AAB файл с JSON выводом
|
|
97
|
+
rustore apps upload-apk --app-id 123456 --version-id 789 --file ./app-release.aab --json
|
|
78
98
|
```
|
|
79
99
|
|
|
100
|
+
### Работа с отзывами
|
|
101
|
+
|
|
102
|
+
```sh
|
|
103
|
+
# Получить отзывы приложения
|
|
104
|
+
rustore feedback list --package-name com.example.app
|
|
105
|
+
|
|
106
|
+
# Получить все отзывы (с пагинацией)
|
|
107
|
+
rustore feedback list --package-name com.example.app --all
|
|
108
|
+
|
|
109
|
+
# Получить отзывы в JSON формате
|
|
110
|
+
rustore feedback list --package-name com.example.app --json
|
|
111
|
+
|
|
112
|
+
# Оставить ответ на отзыв
|
|
113
|
+
rustore feedback answer --package-name com.example.app --comment-id 123456 --text "Спасибо за отзыв!"
|
|
114
|
+
|
|
115
|
+
# Получить статус ответа на отзыв
|
|
116
|
+
rustore feedback status --package-name com.example.app --feedback-id 789
|
|
117
|
+
|
|
118
|
+
# Получить все ответы на отзывы
|
|
119
|
+
rustore feedback status --package-name com.example.app
|
|
120
|
+
|
|
121
|
+
# Изменить ответ на отзыв
|
|
122
|
+
rustore feedback update --package-name com.example.app --feedback-id 789 --text "Обновлённый ответ"
|
|
123
|
+
|
|
124
|
+
# Удалить ответ на отзыв
|
|
125
|
+
rustore feedback delete --package-name com.example.app --feedback-id 789
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**💡 Совет:** Флаг `--json` полезен для:
|
|
129
|
+
|
|
130
|
+
- Автоматизации и скриптов
|
|
131
|
+
- Интеграции с другими инструментами
|
|
132
|
+
- Обработки данных через `jq` или другие JSON-парсеры
|
|
133
|
+
- Сохранения результатов в файл: `rustore apps list --json > apps.json`
|
|
134
|
+
|
|
80
135
|
## 📁 Конфигурация
|
|
81
136
|
|
|
82
137
|
CLI сохраняет конфигурацию в `~/.rustore/config.json`:
|
|
@@ -90,8 +145,6 @@ CLI сохраняет конфигурацию в `~/.rustore/config.json`:
|
|
|
90
145
|
}
|
|
91
146
|
```
|
|
92
147
|
|
|
93
|
-
**Важно:** Приватный ключ хранится в открытом виде. Защитите доступ к файлу конфигурации.
|
|
94
|
-
|
|
95
148
|
## 🔧 Разработка
|
|
96
149
|
|
|
97
150
|
### Установка зависимостей
|
|
@@ -190,7 +243,7 @@ API организовано по категориям, как в докумен
|
|
|
190
243
|
### Программный доступ
|
|
191
244
|
|
|
192
245
|
```typescript
|
|
193
|
-
import {login, appsApi, paymentsApi, catalogApi} from 'rustore';
|
|
246
|
+
import {login, appsApi, paymentsApi, catalogApi, feedbackApi} from 'rustore';
|
|
194
247
|
|
|
195
248
|
// Авторизация
|
|
196
249
|
await login('keyId', 'privateKey');
|
|
@@ -202,6 +255,30 @@ console.log(appsResponse.body.content);
|
|
|
202
255
|
// Получить все приложения (с автоматической пагинацией)
|
|
203
256
|
const allApps = await appsApi.getAllApps();
|
|
204
257
|
|
|
258
|
+
// Создать черновую версию приложения
|
|
259
|
+
const draftVersion = await appsApi.createDraftVersion(123456, {
|
|
260
|
+
versionName: '1.0.0',
|
|
261
|
+
versionCode: 1,
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
// Загрузить APK/AAB файл для версии
|
|
265
|
+
const uploadResult = await appsApi.uploadApkFile(
|
|
266
|
+
123456,
|
|
267
|
+
draftVersion.body?.versionId || 789,
|
|
268
|
+
'./app-release.apk',
|
|
269
|
+
);
|
|
270
|
+
|
|
271
|
+
// Получить отзывы приложения
|
|
272
|
+
const feedbackResponse = await feedbackApi.getFeedback('com.example.app');
|
|
273
|
+
|
|
274
|
+
// Оставить ответ на отзыв
|
|
275
|
+
const answerResponse = await feedbackApi.createFeedbackAnswer('com.example.app', 123456, {
|
|
276
|
+
text: 'Спасибо за отзыв!',
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
// Получить статус ответа на отзыв
|
|
280
|
+
const statusResponse = await feedbackApi.getFeedbackAnswerStatus('com.example.app', 789);
|
|
281
|
+
|
|
205
282
|
// Использование других API категорий
|
|
206
283
|
// await paymentsApi.refund(...);
|
|
207
284
|
// await catalogApi.getProducts(...);
|
package/dist/api/apps.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* API для работы с приложениями
|
|
3
3
|
* Категория: Загрузка и публикация приложений (общие методы)
|
|
4
|
+
*
|
|
5
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app
|
|
4
6
|
*/
|
|
5
7
|
import { RustoreApiClient } from './client.js';
|
|
6
|
-
import type { GetAppListResponse, App } from '../types.js';
|
|
8
|
+
import type { GetAppListResponse, App, GetAppListOptions, CreateDraftVersionRequest, CreateDraftVersionResponse, UploadApkFileResponse } from '../types.js';
|
|
7
9
|
/**
|
|
8
10
|
* Клиент для работы с приложениями
|
|
9
11
|
*/
|
|
@@ -15,15 +17,51 @@ export declare class AppsApi extends RustoreApiClient {
|
|
|
15
17
|
* Метод позволяет получить приложения, доступные владельцу аккаунта,
|
|
16
18
|
* для которого создан приватный ключ.
|
|
17
19
|
*
|
|
18
|
-
* @param
|
|
20
|
+
* @param options - Параметры запроса (continuationToken, pageSize, appName и др.)
|
|
19
21
|
* @returns Список приложений
|
|
22
|
+
*
|
|
23
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/get-app-list
|
|
20
24
|
*/
|
|
21
|
-
getAppList(
|
|
25
|
+
getAppList(options?: GetAppListOptions): Promise<GetAppListResponse>;
|
|
22
26
|
/**
|
|
23
27
|
* Получить все приложения (с автоматической пагинацией)
|
|
28
|
+
*
|
|
29
|
+
* Вспомогательный метод, который автоматически обрабатывает пагинацию
|
|
30
|
+
* и возвращает все приложения из всех страниц.
|
|
31
|
+
*
|
|
32
|
+
* @param options - Параметры запроса (pageSize, appName и др., кроме continuationToken)
|
|
24
33
|
* @returns Массив всех приложений
|
|
34
|
+
*
|
|
35
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/get-app-list
|
|
36
|
+
*/
|
|
37
|
+
getAllApps(options?: Omit<GetAppListOptions, 'continuationToken'>): Promise<App[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Создать черновую версию приложения
|
|
40
|
+
* POST /public/v1/application/{appId}/draft-version
|
|
41
|
+
*
|
|
42
|
+
* Метод позволяет создать черновую версию приложения для последующей загрузки APK/AAB.
|
|
43
|
+
*
|
|
44
|
+
* @param appId - ID приложения
|
|
45
|
+
* @param data - Данные для создания черновой версии (versionName, versionCode)
|
|
46
|
+
* @returns Информация о созданной черновой версии
|
|
47
|
+
*
|
|
48
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/create-draft-version
|
|
49
|
+
*/
|
|
50
|
+
createDraftVersion(appId: number, data: CreateDraftVersionRequest): Promise<CreateDraftVersionResponse>;
|
|
51
|
+
/**
|
|
52
|
+
* Загрузить APK/AAB файл для версии приложения
|
|
53
|
+
* POST /public/v1/application/{appId}/version/{versionId}/apk-file
|
|
54
|
+
*
|
|
55
|
+
* Метод позволяет загрузить APK или AAB файл для черновой версии приложения.
|
|
56
|
+
*
|
|
57
|
+
* @param appId - ID приложения
|
|
58
|
+
* @param versionId - ID версии (полученный из createDraftVersion)
|
|
59
|
+
* @param filePath - Путь к APK/AAB файлу
|
|
60
|
+
* @returns Информация о загруженном файле
|
|
61
|
+
*
|
|
62
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/apk-file-upload
|
|
25
63
|
*/
|
|
26
|
-
|
|
64
|
+
uploadApkFile(appId: number, versionId: number, filePath: string): Promise<UploadApkFileResponse>;
|
|
27
65
|
}
|
|
28
66
|
/**
|
|
29
67
|
* Экспортируемый экземпляр клиента для работы с приложениями
|
package/dist/api/apps.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/api/apps.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/api/apps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EACV,kBAAkB,EAClB,GAAG,EACH,iBAAiB,EACjB,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,qBAAa,OAAQ,SAAQ,gBAAgB;IAC3C;;;;;;;;;;;OAWG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA4B1E;;;;;;;;;;OAUG;IACG,UAAU,CACd,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,GACrD,OAAO,CAAC,GAAG,EAAE,CAAC;IAcjB;;;;;;;;;;;OAWG;IACG,kBAAkB,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,0BAA0B,CAAC;IAKtC;;;;;;;;;;;;OAYG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,CAAC;CA+ClC;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,SAAgB,CAAC"}
|
package/dist/api/apps.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* API для работы с приложениями
|
|
3
3
|
* Категория: Загрузка и публикация приложений (общие методы)
|
|
4
|
+
*
|
|
5
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app
|
|
4
6
|
*/
|
|
7
|
+
import { readFileSync } from 'node:fs';
|
|
5
8
|
import { RustoreApiClient } from './client.js';
|
|
9
|
+
import { getToken } from './auth.js';
|
|
6
10
|
/**
|
|
7
11
|
* Клиент для работы с приложениями
|
|
8
12
|
*/
|
|
@@ -14,40 +18,124 @@ export class AppsApi extends RustoreApiClient {
|
|
|
14
18
|
* Метод позволяет получить приложения, доступные владельцу аккаунта,
|
|
15
19
|
* для которого создан приватный ключ.
|
|
16
20
|
*
|
|
17
|
-
* @param
|
|
21
|
+
* @param options - Параметры запроса (continuationToken, pageSize, appName и др.)
|
|
18
22
|
* @returns Список приложений
|
|
23
|
+
*
|
|
24
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/get-app-list
|
|
19
25
|
*/
|
|
20
|
-
async getAppList(
|
|
26
|
+
async getAppList(options) {
|
|
21
27
|
// Проверяем, не указан ли endpoint вручную через переменную окружения
|
|
22
28
|
const customEndpoint = process.env.RUSTORE_APPLICATIONS_ENDPOINT;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
const baseEndpoint = customEndpoint || '/public/v1/application';
|
|
30
|
+
// Формируем query параметры
|
|
31
|
+
const queryParams = new URLSearchParams();
|
|
32
|
+
if (options) {
|
|
33
|
+
Object.entries(options).forEach(([key, value]) => {
|
|
34
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
35
|
+
// Boolean значения конвертируем в строки "true"/"false"
|
|
36
|
+
// TODO: Фильтр по paid может не работать корректно
|
|
37
|
+
// При использовании paid=false API может возвращать пустой результат
|
|
38
|
+
// или игнорировать параметр. Требуется проверка документации:
|
|
39
|
+
// https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/get-app-list
|
|
40
|
+
// Возможно, API требует другой формат (0/1) или не поддерживает фильтрацию по false
|
|
41
|
+
const stringValue = typeof value === 'boolean' ? String(value) : String(value);
|
|
42
|
+
queryParams.append(key, stringValue);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
28
45
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const baseEndpoint = '/public/v1/application';
|
|
32
|
-
const endpoint = continuationToken
|
|
33
|
-
? `${baseEndpoint}?continuationToken=${encodeURIComponent(continuationToken)}`
|
|
34
|
-
: baseEndpoint;
|
|
46
|
+
const queryString = queryParams.toString();
|
|
47
|
+
const endpoint = queryString ? `${baseEndpoint}?${queryString}` : baseEndpoint;
|
|
35
48
|
return this.get(endpoint);
|
|
36
49
|
}
|
|
37
50
|
/**
|
|
38
51
|
* Получить все приложения (с автоматической пагинацией)
|
|
52
|
+
*
|
|
53
|
+
* Вспомогательный метод, который автоматически обрабатывает пагинацию
|
|
54
|
+
* и возвращает все приложения из всех страниц.
|
|
55
|
+
*
|
|
56
|
+
* @param options - Параметры запроса (pageSize, appName и др., кроме continuationToken)
|
|
39
57
|
* @returns Массив всех приложений
|
|
58
|
+
*
|
|
59
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/get-app-list
|
|
40
60
|
*/
|
|
41
|
-
async getAllApps() {
|
|
61
|
+
async getAllApps(options) {
|
|
42
62
|
const allApps = [];
|
|
43
63
|
let continuationToken;
|
|
44
64
|
do {
|
|
45
|
-
const response = await this.getAppList(continuationToken);
|
|
65
|
+
const response = await this.getAppList({ ...options, continuationToken });
|
|
46
66
|
allApps.push(...response.body.content);
|
|
47
67
|
continuationToken = response.body.continuationToken;
|
|
48
68
|
} while (continuationToken);
|
|
49
69
|
return allApps;
|
|
50
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Создать черновую версию приложения
|
|
73
|
+
* POST /public/v1/application/{appId}/draft-version
|
|
74
|
+
*
|
|
75
|
+
* Метод позволяет создать черновую версию приложения для последующей загрузки APK/AAB.
|
|
76
|
+
*
|
|
77
|
+
* @param appId - ID приложения
|
|
78
|
+
* @param data - Данные для создания черновой версии (versionName, versionCode)
|
|
79
|
+
* @returns Информация о созданной черновой версии
|
|
80
|
+
*
|
|
81
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/create-draft-version
|
|
82
|
+
*/
|
|
83
|
+
async createDraftVersion(appId, data) {
|
|
84
|
+
const endpoint = `/public/v1/application/${appId}/draft-version`;
|
|
85
|
+
return this.post(endpoint, data);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Загрузить APK/AAB файл для версии приложения
|
|
89
|
+
* POST /public/v1/application/{appId}/version/{versionId}/apk-file
|
|
90
|
+
*
|
|
91
|
+
* Метод позволяет загрузить APK или AAB файл для черновой версии приложения.
|
|
92
|
+
*
|
|
93
|
+
* @param appId - ID приложения
|
|
94
|
+
* @param versionId - ID версии (полученный из createDraftVersion)
|
|
95
|
+
* @param filePath - Путь к APK/AAB файлу
|
|
96
|
+
* @returns Информация о загруженном файле
|
|
97
|
+
*
|
|
98
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-upload-publication-app/apk-file-upload
|
|
99
|
+
*/
|
|
100
|
+
async uploadApkFile(appId, versionId, filePath) {
|
|
101
|
+
const endpoint = `/public/v1/application/${appId}/version/${versionId}/apk-file`;
|
|
102
|
+
// Читаем файл
|
|
103
|
+
const fileBuffer = readFileSync(filePath);
|
|
104
|
+
const fileName = filePath.split('/').pop() || 'app.apk';
|
|
105
|
+
// Создаём FormData для multipart/form-data запроса
|
|
106
|
+
const formData = new FormData();
|
|
107
|
+
const blob = new Blob([fileBuffer], {
|
|
108
|
+
type: 'application/vnd.android.package-archive',
|
|
109
|
+
});
|
|
110
|
+
formData.append('file', blob, fileName);
|
|
111
|
+
// Выполняем запрос с FormData
|
|
112
|
+
const token = await getToken();
|
|
113
|
+
const url = `${this.baseUrl}${endpoint}`;
|
|
114
|
+
if (process.env.DEBUG) {
|
|
115
|
+
console.error(`[DEBUG] API Request: ${url} (uploading ${fileName})`);
|
|
116
|
+
}
|
|
117
|
+
const response = await fetch(url, {
|
|
118
|
+
method: 'POST',
|
|
119
|
+
headers: {
|
|
120
|
+
'Public-Token': token,
|
|
121
|
+
// Не устанавливаем Content-Type - браузер установит автоматически с boundary
|
|
122
|
+
},
|
|
123
|
+
body: formData,
|
|
124
|
+
});
|
|
125
|
+
if (!response.ok) {
|
|
126
|
+
const errorText = await response.text();
|
|
127
|
+
let errorData;
|
|
128
|
+
try {
|
|
129
|
+
errorData = JSON.parse(errorText);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// Игнорируем ошибку парсинга
|
|
133
|
+
}
|
|
134
|
+
const errorMessage = errorData?.message ?? errorText;
|
|
135
|
+
throw new Error(`Ошибка API (${response.status}): ${errorMessage}`);
|
|
136
|
+
}
|
|
137
|
+
return (await response.json());
|
|
138
|
+
}
|
|
51
139
|
}
|
|
52
140
|
/**
|
|
53
141
|
* Экспортируемый экземпляр клиента для работы с приложениями
|
package/dist/api/apps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/api/apps.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/api/apps.ts"],"names":[],"mappings":"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"}
|
package/dist/api/auth.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Модуль для работы с авторизацией RuStore API
|
|
3
|
+
*
|
|
4
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-authorization-token
|
|
3
5
|
*/
|
|
4
6
|
import type { AuthRequest, AuthTokenResponse } from '../types.js';
|
|
5
7
|
/**
|
|
@@ -12,10 +14,16 @@ export declare function generateSignature(keyId: string, timestamp: string, priv
|
|
|
12
14
|
export declare function createAuthRequest(keyId: string, privateKey: string): AuthRequest;
|
|
13
15
|
/**
|
|
14
16
|
* Получает токен авторизации от RuStore API
|
|
17
|
+
*
|
|
18
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-authorization-token
|
|
15
19
|
*/
|
|
16
20
|
export declare function getAuthToken(keyId: string, privateKey: string): Promise<AuthTokenResponse>;
|
|
17
21
|
/**
|
|
18
22
|
* Сохраняет токен в конфигурацию
|
|
23
|
+
*
|
|
24
|
+
* Выполняет авторизацию и сохраняет полученный токен в конфигурацию.
|
|
25
|
+
*
|
|
26
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-authorization-token
|
|
19
27
|
*/
|
|
20
28
|
export declare function login(keyId: string, privateKey: string): Promise<void>;
|
|
21
29
|
/**
|
package/dist/api/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/api/auth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/api/auth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAC,WAAW,EAAE,iBAAiB,EAAS,MAAM,aAAa,CAAC;AAKxE;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,CA4CR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAYhF;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAyB5B;AAED;;;;;;GAMG;AACH,wBAAsB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe5E;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAQtC;AAED;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CA8BhD"}
|
package/dist/api/auth.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Модуль для работы с авторизацией RuStore API
|
|
3
|
+
*
|
|
4
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-authorization-token
|
|
3
5
|
*/
|
|
4
6
|
import { createSign } from 'node:crypto';
|
|
5
7
|
import { loadConfig, saveConfig } from '../config.js';
|
|
@@ -64,6 +66,8 @@ export function createAuthRequest(keyId, privateKey) {
|
|
|
64
66
|
}
|
|
65
67
|
/**
|
|
66
68
|
* Получает токен авторизации от RuStore API
|
|
69
|
+
*
|
|
70
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-authorization-token
|
|
67
71
|
*/
|
|
68
72
|
export async function getAuthToken(keyId, privateKey) {
|
|
69
73
|
const authRequest = createAuthRequest(keyId, privateKey);
|
|
@@ -86,6 +90,10 @@ export async function getAuthToken(keyId, privateKey) {
|
|
|
86
90
|
}
|
|
87
91
|
/**
|
|
88
92
|
* Сохраняет токен в конфигурацию
|
|
93
|
+
*
|
|
94
|
+
* Выполняет авторизацию и сохраняет полученный токен в конфигурацию.
|
|
95
|
+
*
|
|
96
|
+
* @see https://www.rustore.ru/help/work-with-rustore-api/api-authorization-token
|
|
89
97
|
*/
|
|
90
98
|
export async function login(keyId, privateKey) {
|
|
91
99
|
const tokenResponse = await getAuthToken(keyId, privateKey);
|
package/dist/api/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/api/auth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/api/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/api/catalog.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,qBAAa,UAAW,SAAQ,gBAAgB;CAG/C;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,YAAmB,CAAC"}
|
package/dist/api/catalog.js
CHANGED
package/dist/api/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/api/catalog.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,gBAAgB;CAG/C;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC"}
|
package/dist/api/client.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Клиент для работы с RuStore API
|
|
3
|
+
*
|
|
4
|
+
* Базовый класс для всех API клиентов RuStore.
|
|
5
|
+
* Предоставляет методы для выполнения авторизованных запросов.
|
|
6
|
+
*
|
|
7
|
+
* @see https://www.rustore.ru/help/en/work-with-rustore-api
|
|
3
8
|
*/
|
|
4
9
|
/**
|
|
5
10
|
* Базовый класс для работы с API
|
|
6
11
|
*/
|
|
7
12
|
export declare class RustoreApiClient {
|
|
8
|
-
|
|
13
|
+
protected baseUrl: string;
|
|
9
14
|
constructor(baseUrl?: string);
|
|
10
15
|
/**
|
|
11
16
|
* Выполняет авторизованный запрос к API
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,OAAO,GAAE,MAAqB;IAI1C;;OAEG;cACa,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IA+CnF;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1C;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAO3D;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAO1D;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAG9C;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,kBAAyB,CAAC"}
|
package/dist/api/client.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Клиент для работы с RuStore API
|
|
3
|
+
*
|
|
4
|
+
* Базовый класс для всех API клиентов RuStore.
|
|
5
|
+
* Предоставляет методы для выполнения авторизованных запросов.
|
|
6
|
+
*
|
|
7
|
+
* @see https://www.rustore.ru/help/en/work-with-rustore-api
|
|
3
8
|
*/
|
|
4
9
|
import { getToken } from './auth.js';
|
|
5
10
|
const API_BASE_URL = 'https://public-api.rustore.ru';
|
|
@@ -17,15 +22,26 @@ export class RustoreApiClient {
|
|
|
17
22
|
async request(endpoint, options = {}) {
|
|
18
23
|
const token = await getToken();
|
|
19
24
|
const url = `${this.baseUrl}${endpoint}`;
|
|
25
|
+
// Debug: логируем URL для отладки (можно убрать в production)
|
|
26
|
+
if (process.env.DEBUG) {
|
|
27
|
+
console.error(`[DEBUG] API Request: ${url}`);
|
|
28
|
+
}
|
|
29
|
+
// Определяем заголовки: для multipart/form-data не устанавливаем Content-Type
|
|
30
|
+
// (браузер/fetch установит его автоматически с boundary)
|
|
31
|
+
const isMultipart = options.body instanceof FormData;
|
|
32
|
+
const headers = {
|
|
33
|
+
'Public-Token': token, // JWE токен из login передаётся в заголовке Public-Token
|
|
34
|
+
...options.headers,
|
|
35
|
+
};
|
|
36
|
+
// Для JSON запросов добавляем Content-Type
|
|
37
|
+
if (!isMultipart) {
|
|
38
|
+
headers['Content-Type'] = 'application/json';
|
|
39
|
+
}
|
|
20
40
|
// RuStore API использует JWE токен в заголовке Public-Token
|
|
21
41
|
// Токен получается через login и передаётся в заголовке Public-Token
|
|
22
42
|
const response = await fetch(url, {
|
|
23
43
|
...options,
|
|
24
|
-
headers
|
|
25
|
-
'Content-Type': 'application/json',
|
|
26
|
-
'Public-Token': token, // JWE токен из login передаётся в заголовке Public-Token
|
|
27
|
-
...options.headers,
|
|
28
|
-
},
|
|
44
|
+
headers,
|
|
29
45
|
});
|
|
30
46
|
if (!response.ok) {
|
|
31
47
|
const errorText = await response.text();
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|