@stream-io/node-sdk 0.1.0
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-assets/Github-Graphic-JS.jpg +0 -0
- package/LICENSE +219 -0
- package/README.md +29 -0
- package/dist/__tests__/block-lists.test.d.ts +1 -0
- package/dist/__tests__/call-members.test.d.ts +1 -0
- package/dist/__tests__/call-types.test.d.ts +1 -0
- package/dist/__tests__/call.test.d.ts +1 -0
- package/dist/__tests__/channel-types.test.d.ts +1 -0
- package/dist/__tests__/channel.test.d.ts +1 -0
- package/dist/__tests__/command.test.d.ts +1 -0
- package/dist/__tests__/create-token.test.d.ts +1 -0
- package/dist/__tests__/devices-push.test.d.ts +1 -0
- package/dist/__tests__/messages.test.d.ts +1 -0
- package/dist/__tests__/permissions-app-settings.test.d.ts +1 -0
- package/dist/__tests__/user-compat.test.d.ts +1 -0
- package/dist/__tests__/users.test.d.ts +1 -0
- package/dist/index.cjs.js +8789 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.es.js +8708 -0
- package/dist/index.es.js.map +1 -0
- package/dist/src/StreamCall.d.ts +37 -0
- package/dist/src/StreamChannel.d.ts +39 -0
- package/dist/src/StreamChatClient.d.ts +31 -0
- package/dist/src/StreamClient.d.ts +68 -0
- package/dist/src/StreamVideoClient.d.ts +16 -0
- package/dist/src/gen/chat/apis/ChannelTypesApi.d.ts +81 -0
- package/dist/src/gen/chat/apis/ChannelsApi.d.ts +308 -0
- package/dist/src/gen/chat/apis/CustomCommandsApi.d.ts +81 -0
- package/dist/src/gen/chat/apis/DefaultApi.d.ts +60 -0
- package/dist/src/gen/chat/apis/DevicesApi.d.ts +58 -0
- package/dist/src/gen/chat/apis/EventsApi.d.ts +64 -0
- package/dist/src/gen/chat/apis/FilesApi.d.ts +81 -0
- package/dist/src/gen/chat/apis/GDPRApi.d.ts +114 -0
- package/dist/src/gen/chat/apis/ImportsApi.d.ts +67 -0
- package/dist/src/gen/chat/apis/MessagesApi.d.ts +370 -0
- package/dist/src/gen/chat/apis/ModerationApi.d.ts +271 -0
- package/dist/src/gen/chat/apis/PermissionsV2Api.d.ts +77 -0
- package/dist/src/gen/chat/apis/PushApi.d.ts +65 -0
- package/dist/src/gen/chat/apis/ReactionsApi.d.ts +62 -0
- package/dist/src/gen/chat/apis/ServerSideApi.d.ts +31 -0
- package/dist/src/gen/chat/apis/SettingsApi.d.ts +257 -0
- package/dist/src/gen/chat/apis/TasksApi.d.ts +31 -0
- package/dist/src/gen/chat/apis/TestingApi.d.ts +57 -0
- package/dist/src/gen/chat/apis/UsersApi.d.ts +313 -0
- package/dist/src/gen/chat/apis/index.d.ts +19 -0
- package/dist/src/gen/chat/index.d.ts +3 -0
- package/dist/src/gen/chat/models/index.d.ts +15624 -0
- package/dist/src/gen/chat/runtime.d.ts +180 -0
- package/dist/src/gen/video/apis/DefaultApi.d.ts +505 -0
- package/dist/src/gen/video/apis/ServerSideApi.d.ts +81 -0
- package/dist/src/gen/video/apis/index.d.ts +2 -0
- package/dist/src/gen/video/index.d.ts +3 -0
- package/dist/src/gen/video/models/index.d.ts +4733 -0
- package/dist/src/gen/video/runtime.d.ts +180 -0
- package/dist/src/types.d.ts +1 -0
- package/dist/src/utils/create-token.d.ts +3 -0
- package/index.ts +7 -0
- package/package.json +47 -0
- package/src/StreamCall.ts +161 -0
- package/src/StreamChannel.ts +165 -0
- package/src/StreamChatClient.ts +102 -0
- package/src/StreamClient.ts +440 -0
- package/src/StreamVideoClient.ts +63 -0
- package/src/gen/chat/.openapi-generator/FILES +24 -0
- package/src/gen/chat/.openapi-generator/VERSION +1 -0
- package/src/gen/chat/.openapi-generator-ignore +23 -0
- package/src/gen/chat/apis/ChannelTypesApi.ts +275 -0
- package/src/gen/chat/apis/ChannelsApi.ts +1221 -0
- package/src/gen/chat/apis/CustomCommandsApi.ts +276 -0
- package/src/gen/chat/apis/DefaultApi.ts +196 -0
- package/src/gen/chat/apis/DevicesApi.ts +180 -0
- package/src/gen/chat/apis/EventsApi.ts +220 -0
- package/src/gen/chat/apis/FilesApi.ts +312 -0
- package/src/gen/chat/apis/GDPRApi.ts +418 -0
- package/src/gen/chat/apis/ImportsApi.ts +222 -0
- package/src/gen/chat/apis/MessagesApi.ts +1475 -0
- package/src/gen/chat/apis/ModerationApi.ts +1038 -0
- package/src/gen/chat/apis/PermissionsV2Api.ts +259 -0
- package/src/gen/chat/apis/PushApi.ts +183 -0
- package/src/gen/chat/apis/ReactionsApi.ts +202 -0
- package/src/gen/chat/apis/ServerSideApi.ts +79 -0
- package/src/gen/chat/apis/SettingsApi.ts +948 -0
- package/src/gen/chat/apis/TasksApi.ts +75 -0
- package/src/gen/chat/apis/TestingApi.ts +185 -0
- package/src/gen/chat/apis/UsersApi.ts +1203 -0
- package/src/gen/chat/apis/index.ts +30 -0
- package/src/gen/chat/index.ts +5 -0
- package/src/gen/chat/models/index.ts +15541 -0
- package/src/gen/chat/runtime.ts +415 -0
- package/src/gen/video/.openapi-generator/FILES +7 -0
- package/src/gen/video/.openapi-generator/VERSION +1 -0
- package/src/gen/video/.openapi-generator-ignore +23 -0
- package/src/gen/video/apis/DefaultApi.ts +1997 -0
- package/src/gen/video/apis/ServerSideApi.ts +276 -0
- package/src/gen/video/apis/index.ts +4 -0
- package/src/gen/video/index.ts +5 -0
- package/src/gen/video/models/index.ts +4642 -0
- package/src/gen/video/runtime.ts +415 -0
- package/src/types.ts +1 -0
- package/src/utils/create-token.ts +49 -0
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
import { StreamChatClient } from "./StreamChatClient";
|
|
2
|
+
import { StreamVideoClient } from "./StreamVideoClient";
|
|
3
|
+
import {
|
|
4
|
+
APIError,
|
|
5
|
+
BanRequest,
|
|
6
|
+
CheckPushRequest,
|
|
7
|
+
CreateDeviceRequest,
|
|
8
|
+
CreateRoleRequest,
|
|
9
|
+
DeactivateUserRequest,
|
|
10
|
+
DeactivateUsersRequest,
|
|
11
|
+
DeleteDeviceRequest,
|
|
12
|
+
DeletePushProviderRequest,
|
|
13
|
+
DeleteRoleRequest,
|
|
14
|
+
DeleteUserRequest,
|
|
15
|
+
DeleteUsersRequest,
|
|
16
|
+
DevicesApi,
|
|
17
|
+
EventsApi,
|
|
18
|
+
ExportUserRequest,
|
|
19
|
+
ExportUsersRequest,
|
|
20
|
+
FlagRequest,
|
|
21
|
+
GetPermissionRequest,
|
|
22
|
+
GetTaskRequest,
|
|
23
|
+
GuestRequest,
|
|
24
|
+
ListDevicesRequest,
|
|
25
|
+
MuteUserRequest,
|
|
26
|
+
PermissionsV2Api,
|
|
27
|
+
PushApi,
|
|
28
|
+
PushProviderRequest,
|
|
29
|
+
QueryBannedUsersRequest,
|
|
30
|
+
QueryUsersRequest,
|
|
31
|
+
ReactivateUserRequest,
|
|
32
|
+
ReactivateUsersRequest,
|
|
33
|
+
RestoreUsersRequest,
|
|
34
|
+
ServerSideApi,
|
|
35
|
+
SettingsApi,
|
|
36
|
+
TasksApi,
|
|
37
|
+
TestingApi,
|
|
38
|
+
UnbanRequest,
|
|
39
|
+
UnmuteUserRequest,
|
|
40
|
+
UpdateAppRequest,
|
|
41
|
+
UpdateUserPartialRequest,
|
|
42
|
+
UpdateUsersRequest,
|
|
43
|
+
UserCustomEventRequest,
|
|
44
|
+
UserObject,
|
|
45
|
+
UserObjectRequest,
|
|
46
|
+
UserResponse,
|
|
47
|
+
UsersApi,
|
|
48
|
+
} from "./gen/chat";
|
|
49
|
+
import {
|
|
50
|
+
Configuration,
|
|
51
|
+
HTTPQuery,
|
|
52
|
+
JSONApiResponse,
|
|
53
|
+
RequestContext,
|
|
54
|
+
ResponseContext,
|
|
55
|
+
} from "./gen/video";
|
|
56
|
+
import { v4 as uuidv4 } from "uuid";
|
|
57
|
+
import { JWTServerToken, JWTUserToken } from "./utils/create-token";
|
|
58
|
+
|
|
59
|
+
export class StreamClient {
|
|
60
|
+
public readonly video: StreamVideoClient;
|
|
61
|
+
public readonly chat: StreamChatClient;
|
|
62
|
+
private readonly usersApi: UsersApi;
|
|
63
|
+
private readonly devicesApi: DevicesApi;
|
|
64
|
+
private readonly pushApi: PushApi;
|
|
65
|
+
private readonly serversideApi: ServerSideApi;
|
|
66
|
+
private readonly testingApi: TestingApi;
|
|
67
|
+
private readonly permissionsApi: PermissionsV2Api;
|
|
68
|
+
private readonly settingsApi: SettingsApi;
|
|
69
|
+
private readonly eventsApi: EventsApi;
|
|
70
|
+
private readonly tasksApi: TasksApi;
|
|
71
|
+
private token: string;
|
|
72
|
+
|
|
73
|
+
constructor(
|
|
74
|
+
private apiKey: string,
|
|
75
|
+
private secret: string,
|
|
76
|
+
public readonly basePath?: string
|
|
77
|
+
) {
|
|
78
|
+
this.token = JWTServerToken(this.secret);
|
|
79
|
+
this.video = new StreamVideoClient(this);
|
|
80
|
+
this.chat = new StreamChatClient(this);
|
|
81
|
+
|
|
82
|
+
const chatConfiguration = this.getConfiguration();
|
|
83
|
+
//@ts-expect-error typing problem
|
|
84
|
+
this.usersApi = new UsersApi(chatConfiguration);
|
|
85
|
+
//@ts-expect-error typing problem
|
|
86
|
+
this.devicesApi = new DevicesApi(chatConfiguration);
|
|
87
|
+
//@ts-expect-error typing problem
|
|
88
|
+
this.pushApi = new PushApi(chatConfiguration);
|
|
89
|
+
//@ts-expect-error typing problem
|
|
90
|
+
this.serversideApi = new ServerSideApi(chatConfiguration);
|
|
91
|
+
//@ts-expect-error typing problem
|
|
92
|
+
this.testingApi = new TestingApi(chatConfiguration);
|
|
93
|
+
//@ts-expect-error typing problem
|
|
94
|
+
this.permissionsApi = new PermissionsV2Api(chatConfiguration);
|
|
95
|
+
//@ts-expect-error typing problem
|
|
96
|
+
this.settingsApi = new SettingsApi(chatConfiguration);
|
|
97
|
+
//@ts-expect-error typing problem
|
|
98
|
+
this.eventsApi = new EventsApi(chatConfiguration);
|
|
99
|
+
//@ts-expect-error typing problem
|
|
100
|
+
this.tasksApi = new TasksApi(chatConfiguration);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
createToken(
|
|
104
|
+
userID: string,
|
|
105
|
+
exp?: number,
|
|
106
|
+
iat?: number,
|
|
107
|
+
call_cids?: string[],
|
|
108
|
+
) {
|
|
109
|
+
const extra: { exp?: number; iat?: number; call_cids?: string[] } = {};
|
|
110
|
+
|
|
111
|
+
if (exp) {
|
|
112
|
+
extra.exp = exp;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (iat) {
|
|
116
|
+
extra.iat = iat;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (call_cids) {
|
|
120
|
+
extra.call_cids = call_cids;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return JWTUserToken(this.secret, userID, extra);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
createDevice = (createDeviceRequest: CreateDeviceRequest) => {
|
|
127
|
+
return this.devicesApi.createDevice({ createDeviceRequest });
|
|
128
|
+
};
|
|
129
|
+
deleteDevice = (requestParameters: DeleteDeviceRequest) => {
|
|
130
|
+
return this.devicesApi.deleteDevice(requestParameters);
|
|
131
|
+
};
|
|
132
|
+
listDevices = (requestParameters: ListDevicesRequest) => {
|
|
133
|
+
return this.devicesApi.listDevices(requestParameters);
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
listPushProviders= () => {
|
|
137
|
+
return this.pushApi.listPushProviders();
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
deletePushProvider = (request: DeletePushProviderRequest) => {
|
|
141
|
+
return this.pushApi.deletePushProvider(request);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
upsertPushProvider = (request: PushProviderRequest) => {
|
|
145
|
+
return this.serversideApi.upsertPushProvider({upsertPushProviderRequest: {push_provider: request}});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
checkPush = (checkPushRequest: CheckPushRequest) => {
|
|
149
|
+
return this.testingApi.checkPush({checkPushRequest});
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
createGuest = async (guestRequest: GuestRequest) => {
|
|
153
|
+
guestRequest.user = this.mapCustomDataBeforeSend(guestRequest.user);
|
|
154
|
+
const response = await this.usersApi.createGuest({ guestRequest });
|
|
155
|
+
response.user = this.mapCustomDataAfterReceive(response.user);
|
|
156
|
+
|
|
157
|
+
return response;
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
banUser = (banRequest: BanRequest) => {
|
|
161
|
+
banRequest.user = this.mapCustomDataBeforeSend(banRequest.user);
|
|
162
|
+
banRequest.banned_by = this.mapCustomDataBeforeSend(banRequest.banned_by);
|
|
163
|
+
return this.usersApi.ban({ banRequest });
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
deactivateUser = async (deactivateUserRequest: DeactivateUserRequest) => {
|
|
167
|
+
const response = await this.usersApi.deactivateUser({
|
|
168
|
+
deactivateUserRequest,
|
|
169
|
+
userId: deactivateUserRequest.user_id,
|
|
170
|
+
});
|
|
171
|
+
response.user = this.mapCustomDataAfterReceive(response.user);
|
|
172
|
+
|
|
173
|
+
return response;
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
deactivateUsers = (deactivateUsersRequest: DeactivateUsersRequest) => {
|
|
177
|
+
return this.usersApi.deactivateUsers({ deactivateUsersRequest });
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
deleteUser = async (request: DeleteUserRequest) => {
|
|
181
|
+
const response = await this.usersApi.deleteUser(request);
|
|
182
|
+
response.user = this.mapCustomDataAfterReceive(response.user);
|
|
183
|
+
|
|
184
|
+
return response;
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
deleteUsers = (deleteUsersRequest: DeleteUsersRequest) => {
|
|
188
|
+
return this.usersApi.deleteUsers({ deleteUsersRequest });
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
exportUser = (request: ExportUserRequest) => {
|
|
192
|
+
return this.usersApi.exportUser(request);
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
exportUsers = (exportUsersRequest: ExportUsersRequest) => {
|
|
196
|
+
return this.usersApi.exportUsers({ exportUsersRequest });
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
flag = async (flagRequest: FlagRequest) => {
|
|
200
|
+
flagRequest.user = this.mapCustomDataBeforeSend(flagRequest.user);
|
|
201
|
+
const response = await this.usersApi.flag({ flagRequest });
|
|
202
|
+
if (response.flag?.user) {
|
|
203
|
+
response.flag.user = this.mapCustomDataAfterReceive(response.flag?.user);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return response;
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
queryBannedUsers = async (payload: QueryBannedUsersRequest) => {
|
|
210
|
+
payload.user = this.mapCustomDataBeforeSend(payload.user);
|
|
211
|
+
const response = await this.usersApi.queryBannedUsers({ payload });
|
|
212
|
+
response.bans.forEach(b => {
|
|
213
|
+
b.banned_by = this.mapCustomDataAfterReceive(b.banned_by);
|
|
214
|
+
b.user = this.mapCustomDataAfterReceive(b.user);
|
|
215
|
+
})
|
|
216
|
+
|
|
217
|
+
return response;
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
queryUsers = async (payload: QueryUsersRequest) => {
|
|
221
|
+
payload.user = this.mapCustomDataBeforeSend(payload.user);
|
|
222
|
+
const response = await this.usersApi.queryUsers({ payload });
|
|
223
|
+
// @ts-expect-error
|
|
224
|
+
response.users = response.users.map(u => this.mapCustomDataAfterReceive(u)!);
|
|
225
|
+
|
|
226
|
+
return response;
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
reactivateUser = async (reactivateUserRequest: ReactivateUserRequest) => {
|
|
230
|
+
const response = await this.usersApi.reactivateUser({
|
|
231
|
+
reactivateUserRequest,
|
|
232
|
+
userId: reactivateUserRequest.user_id,
|
|
233
|
+
});
|
|
234
|
+
response.user = this.mapCustomDataAfterReceive(response.user);
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
reactivateUsers = (reactivateUsersRequest: ReactivateUsersRequest) => {
|
|
238
|
+
return this.usersApi.reactivateUsers({ reactivateUsersRequest });
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
restoreUsers = (restoreUsersRequest: RestoreUsersRequest) => {
|
|
242
|
+
return this.usersApi.restoreUsers({ restoreUsersRequest });
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
unbanUser = (request: UnbanRequest) => {
|
|
246
|
+
return this.usersApi.unban(request);
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
unflag = async (flagRequest: FlagRequest) => {
|
|
250
|
+
const response = await this.usersApi.unflag({ flagRequest });
|
|
251
|
+
if (response.flag?.user) {
|
|
252
|
+
response.flag.user = this.mapCustomDataAfterReceive(response.flag.user);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
return response;
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
upsertUsers = async (updateUsersRequest: UpdateUsersRequest) => {
|
|
259
|
+
Object.keys(updateUsersRequest.users).forEach(key => {
|
|
260
|
+
updateUsersRequest.users[key] = this.mapCustomDataBeforeSend(updateUsersRequest.users[key]);
|
|
261
|
+
})
|
|
262
|
+
const response = await this.usersApi.updateUsers({ updateUsersRequest });
|
|
263
|
+
Object.keys(response.users).forEach(key => {
|
|
264
|
+
response.users[key] = this.mapCustomDataAfterReceive(response.users[key])!;
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
return response;
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
updateUsersPartial = async (request: {users: UpdateUserPartialRequest[]}) => {
|
|
271
|
+
// @ts-expect-error typing error
|
|
272
|
+
const response = await this.usersApi.updateUsersPartial({ updateUserPartialRequest: request });
|
|
273
|
+
Object.keys(response.users).forEach(key => {
|
|
274
|
+
response.users[key] = this.mapCustomDataAfterReceive(response.users[key])!;
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
return response;
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
muteUser = async (muteUserRequest: MuteUserRequest) => {
|
|
281
|
+
muteUserRequest.user = this.mapCustomDataBeforeSend(muteUserRequest.user);
|
|
282
|
+
const response = await this.usersApi.muteUser({ muteUserRequest });
|
|
283
|
+
if (response.mute?.user) {
|
|
284
|
+
response.mute.user = this.mapCustomDataAfterReceive(response.mute?.user);
|
|
285
|
+
}
|
|
286
|
+
if (response.mutes) {
|
|
287
|
+
response.mutes = response.mutes.map(m => {
|
|
288
|
+
return {
|
|
289
|
+
...m,
|
|
290
|
+
user: this.mapCustomDataAfterReceive(m.user)
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
return response;
|
|
296
|
+
};
|
|
297
|
+
|
|
298
|
+
unmuteUser = (unmuteUserRequest: UnmuteUserRequest) => {
|
|
299
|
+
unmuteUserRequest.user = this.mapCustomDataBeforeSend(unmuteUserRequest.user);
|
|
300
|
+
return this.usersApi.unmuteUser({ unmuteUserRequest });
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
sendCustomEventToUser = (userId: string, event: UserCustomEventRequest) => {
|
|
304
|
+
return this.eventsApi.sendUserCustomEvent({userId, sendUserCustomEventRequest: {event}});
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
createRole = (createRoleRequest: CreateRoleRequest) => {
|
|
308
|
+
return this.permissionsApi.createRole({createRoleRequest});
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
deleteRole = (request: DeleteRoleRequest) => {
|
|
312
|
+
return this.permissionsApi.deleteRole(request);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
getPermission = (request: GetPermissionRequest) => {
|
|
316
|
+
return this.permissionsApi.getPermission(request);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
listPermissions = () => {
|
|
320
|
+
return this.permissionsApi.listPermissions();
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
listRoles = () => {
|
|
324
|
+
return this.permissionsApi.listRoles();
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
getAppSettings = () => {
|
|
328
|
+
return this.settingsApi.getApp();
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
updateAppSettings = (updateAppRequest: UpdateAppRequest) => {
|
|
332
|
+
return this.settingsApi.updateApp({updateAppRequest});
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
getRateLimits = () => {
|
|
336
|
+
return this.settingsApi.getRateLimits();
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
getTaskStatus = (request: GetTaskRequest) => {
|
|
340
|
+
return this.tasksApi.getTask(request);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
getConfiguration = (options?: { basePath?: string }) => {
|
|
344
|
+
return new Configuration({
|
|
345
|
+
apiKey: (name: string) => {
|
|
346
|
+
const mapping: { [key: string]: string } = {
|
|
347
|
+
"Stream-Auth-Type": "jwt",
|
|
348
|
+
api_key: this.apiKey,
|
|
349
|
+
Authorization: this.token,
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
return mapping[name];
|
|
353
|
+
},
|
|
354
|
+
basePath: options?.basePath || this.basePath,
|
|
355
|
+
headers: {
|
|
356
|
+
"X-Stream-Client": "stream-node-" + process.env.PKG_VERSION,
|
|
357
|
+
},
|
|
358
|
+
middleware: [
|
|
359
|
+
{
|
|
360
|
+
pre: (context: RequestContext) => {
|
|
361
|
+
context.init.headers = {
|
|
362
|
+
...context.init.headers,
|
|
363
|
+
"x-client-request-id": uuidv4(),
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
return Promise.resolve(context);
|
|
367
|
+
},
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
// This should be the last post middleware because that will throw an error
|
|
371
|
+
// The Fetch API won't throw an error for HTTP error responses, which means the "onError" middleware won't be called so we need to throw error from "post" middleware
|
|
372
|
+
post: async (context: ResponseContext) => {
|
|
373
|
+
if (
|
|
374
|
+
(context.response && context.response.status < 200) ||
|
|
375
|
+
context.response.status >= 300
|
|
376
|
+
) {
|
|
377
|
+
const response = new JSONApiResponse(context.response);
|
|
378
|
+
const value = (await response.value()) as APIError;
|
|
379
|
+
throw new Error(
|
|
380
|
+
`Stream error code ${value.code}: ${value.message}`
|
|
381
|
+
);
|
|
382
|
+
}
|
|
383
|
+
},
|
|
384
|
+
},
|
|
385
|
+
],
|
|
386
|
+
// https://github.com/OpenAPITools/openapi-generator/issues/13222
|
|
387
|
+
queryParamsStringify: (params: HTTPQuery) => {
|
|
388
|
+
const newParams = [];
|
|
389
|
+
for (const k in params) {
|
|
390
|
+
if (Array.isArray(params[k]) || typeof params[k] === "object") {
|
|
391
|
+
newParams.push(
|
|
392
|
+
`${k}=${encodeURIComponent(JSON.stringify(params[k]))}`
|
|
393
|
+
);
|
|
394
|
+
} else {
|
|
395
|
+
const value = params[k];
|
|
396
|
+
if (
|
|
397
|
+
typeof value === "string" ||
|
|
398
|
+
typeof value === "number" ||
|
|
399
|
+
typeof value === "boolean"
|
|
400
|
+
) {
|
|
401
|
+
newParams.push(`${k}=${encodeURIComponent(value)}`);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
return newParams.join("&");
|
|
407
|
+
},
|
|
408
|
+
});
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
private reservedKeywords = ['ban_expires', 'banned', 'id', 'invisible', 'language', 'push_notifications', 'revoke_tokens_issued_before', 'role', 'teams', 'created_at', 'deactivated_at', 'deleted_at', 'last_active', 'online', 'updated_at', 'shadow_banned', 'name', 'image'];
|
|
412
|
+
private mapCustomDataBeforeSend = (user: UserObject | UserObjectRequest | UserResponse | undefined) => {
|
|
413
|
+
if (!user) {
|
|
414
|
+
return undefined;
|
|
415
|
+
}
|
|
416
|
+
const copy = {...user};
|
|
417
|
+
delete copy.custom;
|
|
418
|
+
return {...copy, ...user.custom}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
private mapCustomDataAfterReceive = (user: UserObject | UserResponse | undefined) => {
|
|
422
|
+
if (!user) {
|
|
423
|
+
return undefined;
|
|
424
|
+
}
|
|
425
|
+
// @ts-expect-error
|
|
426
|
+
let result: UserObject | UserResponse = {};
|
|
427
|
+
Object.keys(user).forEach(key => {
|
|
428
|
+
if (!this.reservedKeywords.includes(key)) {
|
|
429
|
+
if (!result.custom) {
|
|
430
|
+
result.custom = {};
|
|
431
|
+
}
|
|
432
|
+
result.custom[key] = (user as any)[key];
|
|
433
|
+
} else {
|
|
434
|
+
result[key] = (user as any)[key];
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
|
|
438
|
+
return result;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { StreamCall } from "./StreamCall";
|
|
2
|
+
import { StreamClient } from "./StreamClient";
|
|
3
|
+
import {
|
|
4
|
+
DefaultApi,
|
|
5
|
+
DeleteCallTypeRequest,
|
|
6
|
+
GetCallTypeRequest,
|
|
7
|
+
ServerSideApi,
|
|
8
|
+
VideoCreateCallTypeRequest,
|
|
9
|
+
VideoQueryCallsRequest,
|
|
10
|
+
VideoUpdateCallTypeRequest,
|
|
11
|
+
} from "./gen/video";
|
|
12
|
+
|
|
13
|
+
export class StreamVideoClient {
|
|
14
|
+
private readonly apiClient: DefaultApi;
|
|
15
|
+
private readonly videoServerSideApiClient: ServerSideApi;
|
|
16
|
+
|
|
17
|
+
constructor(private streamClient: StreamClient) {
|
|
18
|
+
const configuration = this.streamClient.getConfiguration({
|
|
19
|
+
basePath:
|
|
20
|
+
this.streamClient.basePath || "https://video.stream-io-api.com/video",
|
|
21
|
+
});
|
|
22
|
+
this.apiClient = new DefaultApi(configuration);
|
|
23
|
+
this.videoServerSideApiClient = new ServerSideApi(configuration);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
call = (type: string, id: string) => {
|
|
27
|
+
return new StreamCall(this.streamClient, type, id);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
queryCalls = (request?: VideoQueryCallsRequest) => {
|
|
31
|
+
return this.apiClient.queryCalls({
|
|
32
|
+
videoQueryCallsRequest: request || {},
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
createCallType = (videoCreateCallTypeRequest: VideoCreateCallTypeRequest) => {
|
|
37
|
+
return this.videoServerSideApiClient.createCallType({
|
|
38
|
+
videoCreateCallTypeRequest,
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
deleteCallType = (request: DeleteCallTypeRequest) => {
|
|
43
|
+
return this.videoServerSideApiClient.deleteCallType(request);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
getCallType = (request: GetCallTypeRequest) => {
|
|
47
|
+
return this.videoServerSideApiClient.getCallType(request);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
listCallTypes = () => {
|
|
51
|
+
return this.videoServerSideApiClient.listCallTypes();
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
updateCallType = (
|
|
55
|
+
name: string,
|
|
56
|
+
videoUpdateCallTypeRequest: VideoUpdateCallTypeRequest
|
|
57
|
+
) => {
|
|
58
|
+
return this.videoServerSideApiClient.updateCallType({
|
|
59
|
+
name,
|
|
60
|
+
videoUpdateCallTypeRequest,
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
.openapi-generator-ignore
|
|
2
|
+
apis/ChannelTypesApi.ts
|
|
3
|
+
apis/ChannelsApi.ts
|
|
4
|
+
apis/CustomCommandsApi.ts
|
|
5
|
+
apis/DefaultApi.ts
|
|
6
|
+
apis/DevicesApi.ts
|
|
7
|
+
apis/EventsApi.ts
|
|
8
|
+
apis/FilesApi.ts
|
|
9
|
+
apis/GDPRApi.ts
|
|
10
|
+
apis/ImportsApi.ts
|
|
11
|
+
apis/MessagesApi.ts
|
|
12
|
+
apis/ModerationApi.ts
|
|
13
|
+
apis/PermissionsV2Api.ts
|
|
14
|
+
apis/PushApi.ts
|
|
15
|
+
apis/ReactionsApi.ts
|
|
16
|
+
apis/ServerSideApi.ts
|
|
17
|
+
apis/SettingsApi.ts
|
|
18
|
+
apis/TasksApi.ts
|
|
19
|
+
apis/TestingApi.ts
|
|
20
|
+
apis/UsersApi.ts
|
|
21
|
+
apis/index.ts
|
|
22
|
+
index.ts
|
|
23
|
+
models/index.ts
|
|
24
|
+
runtime.ts
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
6.6.0
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# OpenAPI Generator Ignore
|
|
2
|
+
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
|
|
3
|
+
|
|
4
|
+
# Use this file to prevent files from being overwritten by the generator.
|
|
5
|
+
# The patterns follow closely to .gitignore or .dockerignore.
|
|
6
|
+
|
|
7
|
+
# As an example, the C# client generator defines ApiClient.cs.
|
|
8
|
+
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
|
|
9
|
+
#ApiClient.cs
|
|
10
|
+
|
|
11
|
+
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
|
|
12
|
+
#foo/*/qux
|
|
13
|
+
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
|
|
14
|
+
|
|
15
|
+
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
|
|
16
|
+
#foo/**/qux
|
|
17
|
+
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
|
|
18
|
+
|
|
19
|
+
# You can also negate patterns with an exclamation (!).
|
|
20
|
+
# For example, you can ignore all files in a docs folder with the file extension .md:
|
|
21
|
+
#docs/*.md
|
|
22
|
+
# Then explicitly reverse the ignore rule for a single file:
|
|
23
|
+
#!docs/README.md
|