@cascateer/sterio 1.0.1

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.
Files changed (58) hide show
  1. package/.env +0 -0
  2. package/.github/workflows/publish.yml +11 -0
  3. package/.vscode/settings.json +4 -0
  4. package/build/routes.ts +413 -0
  5. package/build/swagger.json +775 -0
  6. package/openapitools.json +14 -0
  7. package/package.json +56 -0
  8. package/src/Spotify.service.ts +202 -0
  9. package/src/Sterio.service.ts +208 -0
  10. package/src/Youtube.service.ts +112 -0
  11. package/src/YoutubeMusic.service.ts +52 -0
  12. package/src/api/.openapi-generator/FILES +29 -0
  13. package/src/api/.openapi-generator/VERSION +1 -0
  14. package/src/api/.openapi-generator-ignore +23 -0
  15. package/src/api/apis/DefaultApi.ts +154 -0
  16. package/src/api/apis/index.ts +1 -0
  17. package/src/api/index.ts +4 -0
  18. package/src/api/models/GetYoutubeMusicAlbums200ResponseInner.ts +29 -0
  19. package/src/api/models/PartialSterioAlbumResourcesFull.ts +39 -0
  20. package/src/api/models/SpotifyApiAlbumObjectSimplified.ts +152 -0
  21. package/src/api/models/SpotifyApiArtistObjectSimplified.ts +68 -0
  22. package/src/api/models/SpotifyApiExternalUrlObject.ts +25 -0
  23. package/src/api/models/SpotifyApiImageObject.ts +38 -0
  24. package/src/api/models/SpotifyApiRestrictionsObject.ts +24 -0
  25. package/src/api/models/SterioAlbum.ts +39 -0
  26. package/src/api/models/SterioAlbumResource.ts +29 -0
  27. package/src/api/models/SterioAlbumResourcesTable.ts +34 -0
  28. package/src/api/models/SterioAlbumSongs.ts +38 -0
  29. package/src/api/models/SterioAlbumSongsVideoIdsInner.ts +34 -0
  30. package/src/api/models/YoutubePlaylist.ts +38 -0
  31. package/src/api/models/YoutubeV3Schema36PlaylistItem.ts +59 -0
  32. package/src/api/models/YoutubeV3Schema36PlaylistItemContentDetails.ts +49 -0
  33. package/src/api/models/YoutubeV3Schema36PlaylistItemSnippet.ts +89 -0
  34. package/src/api/models/YoutubeV3Schema36PlaylistItemStatus.ts +26 -0
  35. package/src/api/models/YoutubeV3Schema36ResourceId.ts +44 -0
  36. package/src/api/models/YoutubeV3Schema36Thumbnail.ts +38 -0
  37. package/src/api/models/YoutubeV3Schema36ThumbnailDetails.ts +49 -0
  38. package/src/api/models/index.ts +20 -0
  39. package/src/api/runtime.ts +193 -0
  40. package/src/api/servers.ts +45 -0
  41. package/src/api/tsconfig.json +22 -0
  42. package/src/app.ts +58 -0
  43. package/src/config.ts +6 -0
  44. package/src/controller.ts +148 -0
  45. package/src/lib.ts +112 -0
  46. package/src/main.ts +225 -0
  47. package/src/tables.ts +178 -0
  48. package/src/types.ts +113 -0
  49. package/src/views/spotify/auth-callback.ejs +22 -0
  50. package/tables/document-files/82745273-7eda-4169-8b4a-998d2de00ac2.json +5208 -0
  51. package/tables/spotify-albums/5bff8eba-bd2b-4485-8136-1f89da5db6d7.json +1 -0
  52. package/tables/sterio-albums/81d5b327-68b1-4fef-8e40-491c792e8951.json +1 -0
  53. package/tables/stream-files/f6697f37-7320-41df-aa50-b70264fa1bbf.json +3788 -0
  54. package/tables/youtube-music-albums/55fd9bb8-46ba-4d0e-9376-f2f2cbb1aa38.json +1 -0
  55. package/tables/youtube-playlists/e3153ab8-8e1f-491e-995e-3142d07f4ecc.json +1 -0
  56. package/tables/youtube-videos/9067172e-4803-48f1-8b8e-4b942f3ca228.json +1 -0
  57. package/tsconfig.json +16 -0
  58. package/tsoa.json +14 -0
package/.env ADDED
File without changes
@@ -0,0 +1,11 @@
1
+ name: Publish to NPM
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ call-workflow:
10
+ uses: cascateer/lib/.github/workflows/publish.yml@main
11
+ secrets: inherit
@@ -0,0 +1,4 @@
1
+ {
2
+ "cSpell.words": ["sterio", "ytmusic"],
3
+ "js/ts.tsdk.path": "node_modules\\typescript\\lib"
4
+ }
@@ -0,0 +1,413 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
4
+ import type { TsoaRoute } from '@tsoa/runtime';
5
+ import { fetchMiddlewares, ExpressTemplateService } from '@tsoa/runtime';
6
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
7
+ import { SterioController } from './../src/controller';
8
+ import type { Request as ExRequest, Response as ExResponse, RequestHandler, Router } from 'express';
9
+
10
+
11
+
12
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
13
+
14
+ const models: TsoaRoute.Models = {
15
+ "SterioAlbumResource": {
16
+ "dataType": "refObject",
17
+ "properties": {
18
+ "id": {"dataType":"string","required":true},
19
+ "iteratee": {"dataType":"string"},
20
+ },
21
+ "additionalProperties": false,
22
+ },
23
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
24
+ "Partial_SterioAlbumResourcesFull_": {
25
+ "dataType": "refAlias",
26
+ "type": {"dataType":"nestedObjectLiteral","nestedProperties":{"youtubeMusic":{"ref":"SterioAlbumResource"},"youtube":{"ref":"SterioAlbumResource"},"spotify":{"ref":"SterioAlbumResource"}},"validators":{}},
27
+ },
28
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
29
+ "SterioAlbumResources": {
30
+ "dataType": "refAlias",
31
+ "type": {"ref":"Partial_SterioAlbumResourcesFull_","validators":{}},
32
+ },
33
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
34
+ "SterioAlbum": {
35
+ "dataType": "refObject",
36
+ "properties": {
37
+ "id": {"dataType":"string","required":true},
38
+ "resources": {"ref":"SterioAlbumResources"},
39
+ "songs": {"dataType":"nestedObjectLiteral","nestedProperties":{"exclude":{"dataType":"array","array":{"dataType":"double"}},"include":{"dataType":"array","array":{"dataType":"double"}},"videoIds":{"dataType":"array","array":{"dataType":"nestedObjectLiteral","nestedProperties":{"newValue":{"dataType":"string","required":true},"expectedValue":{"dataType":"string","required":true},"index":{"dataType":"double","required":true}}}}}},
40
+ },
41
+ "additionalProperties": false,
42
+ },
43
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
44
+ "SterioAlbumResourcesTable": {
45
+ "dataType": "refObject",
46
+ "properties": {
47
+ "youtubeMusic": {"dataType":"array","array":{"dataType":"string"},"required":true},
48
+ "youtube": {"dataType":"array","array":{"dataType":"string"},"required":true},
49
+ "spotify": {"dataType":"array","array":{"dataType":"string"},"required":true},
50
+ },
51
+ "additionalProperties": false,
52
+ },
53
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
54
+ "SpotifyApi.ExternalUrlObject": {
55
+ "dataType": "refObject",
56
+ "properties": {
57
+ "spotify": {"dataType":"string","required":true},
58
+ },
59
+ "additionalProperties": false,
60
+ },
61
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
62
+ "SpotifyApi.ArtistObjectSimplified": {
63
+ "dataType": "refObject",
64
+ "properties": {
65
+ "type": {"dataType":"enum","enums":["artist"],"required":true},
66
+ "href": {"dataType":"string","required":true},
67
+ "external_urls": {"ref":"SpotifyApi.ExternalUrlObject","required":true},
68
+ "uri": {"dataType":"string","required":true},
69
+ "name": {"dataType":"string","required":true},
70
+ "id": {"dataType":"string","required":true},
71
+ },
72
+ "additionalProperties": false,
73
+ },
74
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
75
+ "SpotifyApi.ImageObject": {
76
+ "dataType": "refObject",
77
+ "properties": {
78
+ "height": {"dataType":"union","subSchemas":[{"dataType":"double"},{"dataType":"undefined"}]},
79
+ "url": {"dataType":"string","required":true},
80
+ "width": {"dataType":"union","subSchemas":[{"dataType":"double"},{"dataType":"undefined"}]},
81
+ },
82
+ "additionalProperties": false,
83
+ },
84
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
85
+ "SpotifyApi.RestrictionsObject": {
86
+ "dataType": "refObject",
87
+ "properties": {
88
+ "reason": {"dataType":"string","required":true},
89
+ },
90
+ "additionalProperties": false,
91
+ },
92
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
93
+ "SpotifyApi.AlbumObjectSimplified": {
94
+ "dataType": "refObject",
95
+ "properties": {
96
+ "type": {"dataType":"enum","enums":["album"],"required":true},
97
+ "href": {"dataType":"string","required":true},
98
+ "external_urls": {"ref":"SpotifyApi.ExternalUrlObject","required":true},
99
+ "uri": {"dataType":"string","required":true},
100
+ "album_group": {"dataType":"union","subSchemas":[{"dataType":"enum","enums":["album"]},{"dataType":"enum","enums":["single"]},{"dataType":"enum","enums":["compilation"]},{"dataType":"enum","enums":["appears_on"]},{"dataType":"undefined"}]},
101
+ "album_type": {"dataType":"union","subSchemas":[{"dataType":"enum","enums":["album"]},{"dataType":"enum","enums":["single"]},{"dataType":"enum","enums":["compilation"]}],"required":true},
102
+ "artists": {"dataType":"array","array":{"dataType":"refObject","ref":"SpotifyApi.ArtistObjectSimplified"},"required":true},
103
+ "available_markets": {"dataType":"union","subSchemas":[{"dataType":"array","array":{"dataType":"string"}},{"dataType":"undefined"}]},
104
+ "id": {"dataType":"string","required":true},
105
+ "images": {"dataType":"array","array":{"dataType":"refObject","ref":"SpotifyApi.ImageObject"},"required":true},
106
+ "name": {"dataType":"string","required":true},
107
+ "release_date": {"dataType":"string","required":true},
108
+ "release_date_precision": {"dataType":"union","subSchemas":[{"dataType":"enum","enums":["year"]},{"dataType":"enum","enums":["month"]},{"dataType":"enum","enums":["day"]}],"required":true},
109
+ "restrictions": {"dataType":"union","subSchemas":[{"ref":"SpotifyApi.RestrictionsObject"},{"dataType":"undefined"}]},
110
+ "total_tracks": {"dataType":"double","required":true},
111
+ },
112
+ "additionalProperties": false,
113
+ },
114
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
115
+ "youtube_v3.Schema_36_PlaylistItemContentDetails": {
116
+ "dataType": "refObject",
117
+ "properties": {
118
+ "endAt": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
119
+ "note": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
120
+ "startAt": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
121
+ "videoId": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
122
+ "videoPublishedAt": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
123
+ },
124
+ "additionalProperties": false,
125
+ },
126
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
127
+ "youtube_v3.Schema_36_ResourceId": {
128
+ "dataType": "refObject",
129
+ "properties": {
130
+ "channelId": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
131
+ "kind": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
132
+ "playlistId": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
133
+ "videoId": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
134
+ },
135
+ "additionalProperties": false,
136
+ },
137
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
138
+ "youtube_v3.Schema_36_Thumbnail": {
139
+ "dataType": "refObject",
140
+ "properties": {
141
+ "height": {"dataType":"union","subSchemas":[{"dataType":"double"},{"dataType":"enum","enums":[null]}]},
142
+ "url": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
143
+ "width": {"dataType":"union","subSchemas":[{"dataType":"double"},{"dataType":"enum","enums":[null]}]},
144
+ },
145
+ "additionalProperties": false,
146
+ },
147
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
148
+ "youtube_v3.Schema_36_ThumbnailDetails": {
149
+ "dataType": "refObject",
150
+ "properties": {
151
+ "default": {"ref":"youtube_v3.Schema_36_Thumbnail"},
152
+ "high": {"ref":"youtube_v3.Schema_36_Thumbnail"},
153
+ "maxres": {"ref":"youtube_v3.Schema_36_Thumbnail"},
154
+ "medium": {"ref":"youtube_v3.Schema_36_Thumbnail"},
155
+ "standard": {"ref":"youtube_v3.Schema_36_Thumbnail"},
156
+ },
157
+ "additionalProperties": false,
158
+ },
159
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
160
+ "youtube_v3.Schema_36_PlaylistItemSnippet": {
161
+ "dataType": "refObject",
162
+ "properties": {
163
+ "channelId": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
164
+ "channelTitle": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
165
+ "description": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
166
+ "playlistId": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
167
+ "position": {"dataType":"union","subSchemas":[{"dataType":"double"},{"dataType":"enum","enums":[null]}]},
168
+ "publishedAt": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
169
+ "resourceId": {"ref":"youtube_v3.Schema_36_ResourceId"},
170
+ "thumbnails": {"ref":"youtube_v3.Schema_36_ThumbnailDetails"},
171
+ "title": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
172
+ "videoOwnerChannelId": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
173
+ "videoOwnerChannelTitle": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
174
+ },
175
+ "additionalProperties": false,
176
+ },
177
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
178
+ "youtube_v3.Schema_36_PlaylistItemStatus": {
179
+ "dataType": "refObject",
180
+ "properties": {
181
+ "privacyStatus": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
182
+ },
183
+ "additionalProperties": false,
184
+ },
185
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
186
+ "youtube_v3.Schema_36_PlaylistItem": {
187
+ "dataType": "refObject",
188
+ "properties": {
189
+ "contentDetails": {"ref":"youtube_v3.Schema_36_PlaylistItemContentDetails"},
190
+ "etag": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
191
+ "id": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
192
+ "kind": {"dataType":"union","subSchemas":[{"dataType":"string"},{"dataType":"enum","enums":[null]}]},
193
+ "snippet": {"ref":"youtube_v3.Schema_36_PlaylistItemSnippet"},
194
+ "status": {"ref":"youtube_v3.Schema_36_PlaylistItemStatus"},
195
+ },
196
+ "additionalProperties": false,
197
+ },
198
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
199
+ "YoutubePlaylist": {
200
+ "dataType": "refObject",
201
+ "properties": {
202
+ "id": {"dataType":"string","required":true},
203
+ "title": {"dataType":"string"},
204
+ "items": {"dataType":"array","array":{"dataType":"refObject","ref":"youtube_v3.Schema_36_PlaylistItem"},"required":true},
205
+ },
206
+ "additionalProperties": false,
207
+ },
208
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
209
+ };
210
+ const templateService = new ExpressTemplateService(models, {"noImplicitAdditionalProperties":"throw-on-extras","bodyCoercion":true});
211
+
212
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
213
+
214
+
215
+
216
+
217
+ export function RegisterRoutes(app: Router) {
218
+
219
+ // ###########################################################################################################
220
+ // NOTE: If you do not see routes for all of your controllers in this file, then you might not have informed tsoa of where to look
221
+ // Please look into the "controllerPathGlobs" config option described in the readme: https://github.com/lukeautry/tsoa
222
+ // ###########################################################################################################
223
+
224
+
225
+
226
+ const argsSterioController_getAlbum: Record<string, TsoaRoute.ParameterSchema> = {
227
+ id: {"in":"path","name":"id","required":true,"dataType":"string"},
228
+ };
229
+ app.get('/sterio/album/:id',
230
+ ...(fetchMiddlewares<RequestHandler>(SterioController)),
231
+ ...(fetchMiddlewares<RequestHandler>(SterioController.prototype.getAlbum)),
232
+
233
+ async function SterioController_getAlbum(request: ExRequest, response: ExResponse, next: any) {
234
+
235
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
236
+
237
+ let validatedArgs: any[] = [];
238
+ try {
239
+ validatedArgs = templateService.getValidatedArgs({ args: argsSterioController_getAlbum, request, response });
240
+
241
+ const controller = new SterioController();
242
+
243
+ await templateService.apiHandler({
244
+ methodName: 'getAlbum',
245
+ controller,
246
+ response,
247
+ next,
248
+ validatedArgs,
249
+ successStatus: undefined,
250
+ });
251
+ } catch (err) {
252
+ return next(err);
253
+ }
254
+ });
255
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
256
+ const argsSterioController_updateAlbum: Record<string, TsoaRoute.ParameterSchema> = {
257
+ album: {"in":"body","name":"album","required":true,"ref":"SterioAlbum"},
258
+ };
259
+ app.patch('/sterio/album',
260
+ ...(fetchMiddlewares<RequestHandler>(SterioController)),
261
+ ...(fetchMiddlewares<RequestHandler>(SterioController.prototype.updateAlbum)),
262
+
263
+ async function SterioController_updateAlbum(request: ExRequest, response: ExResponse, next: any) {
264
+
265
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
266
+
267
+ let validatedArgs: any[] = [];
268
+ try {
269
+ validatedArgs = templateService.getValidatedArgs({ args: argsSterioController_updateAlbum, request, response });
270
+
271
+ const controller = new SterioController();
272
+
273
+ await templateService.apiHandler({
274
+ methodName: 'updateAlbum',
275
+ controller,
276
+ response,
277
+ next,
278
+ validatedArgs,
279
+ successStatus: undefined,
280
+ });
281
+ } catch (err) {
282
+ return next(err);
283
+ }
284
+ });
285
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
286
+ const argsSterioController_getAlbumResourcesTable: Record<string, TsoaRoute.ParameterSchema> = {
287
+ id: {"in":"path","name":"id","required":true,"dataType":"string"},
288
+ };
289
+ app.post('/sterio/album/:id/resources/table',
290
+ ...(fetchMiddlewares<RequestHandler>(SterioController)),
291
+ ...(fetchMiddlewares<RequestHandler>(SterioController.prototype.getAlbumResourcesTable)),
292
+
293
+ async function SterioController_getAlbumResourcesTable(request: ExRequest, response: ExResponse, next: any) {
294
+
295
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
296
+
297
+ let validatedArgs: any[] = [];
298
+ try {
299
+ validatedArgs = templateService.getValidatedArgs({ args: argsSterioController_getAlbumResourcesTable, request, response });
300
+
301
+ const controller = new SterioController();
302
+
303
+ await templateService.apiHandler({
304
+ methodName: 'getAlbumResourcesTable',
305
+ controller,
306
+ response,
307
+ next,
308
+ validatedArgs,
309
+ successStatus: undefined,
310
+ });
311
+ } catch (err) {
312
+ return next(err);
313
+ }
314
+ });
315
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
316
+ const argsSterioController_getSpotifyAlbums: Record<string, TsoaRoute.ParameterSchema> = {
317
+ query: {"in":"query","name":"q","required":true,"dataType":"string"},
318
+ };
319
+ app.get('/sterio/spotify/albums',
320
+ ...(fetchMiddlewares<RequestHandler>(SterioController)),
321
+ ...(fetchMiddlewares<RequestHandler>(SterioController.prototype.getSpotifyAlbums)),
322
+
323
+ async function SterioController_getSpotifyAlbums(request: ExRequest, response: ExResponse, next: any) {
324
+
325
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
326
+
327
+ let validatedArgs: any[] = [];
328
+ try {
329
+ validatedArgs = templateService.getValidatedArgs({ args: argsSterioController_getSpotifyAlbums, request, response });
330
+
331
+ const controller = new SterioController();
332
+
333
+ await templateService.apiHandler({
334
+ methodName: 'getSpotifyAlbums',
335
+ controller,
336
+ response,
337
+ next,
338
+ validatedArgs,
339
+ successStatus: undefined,
340
+ });
341
+ } catch (err) {
342
+ return next(err);
343
+ }
344
+ });
345
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
346
+ const argsSterioController_getYoutubePlaylists: Record<string, TsoaRoute.ParameterSchema> = {
347
+ ids: {"in":"query","name":"ids","required":true,"dataType":"string"},
348
+ };
349
+ app.get('/sterio/youtube/playlists',
350
+ ...(fetchMiddlewares<RequestHandler>(SterioController)),
351
+ ...(fetchMiddlewares<RequestHandler>(SterioController.prototype.getYoutubePlaylists)),
352
+
353
+ async function SterioController_getYoutubePlaylists(request: ExRequest, response: ExResponse, next: any) {
354
+
355
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
356
+
357
+ let validatedArgs: any[] = [];
358
+ try {
359
+ validatedArgs = templateService.getValidatedArgs({ args: argsSterioController_getYoutubePlaylists, request, response });
360
+
361
+ const controller = new SterioController();
362
+
363
+ await templateService.apiHandler({
364
+ methodName: 'getYoutubePlaylists',
365
+ controller,
366
+ response,
367
+ next,
368
+ validatedArgs,
369
+ successStatus: undefined,
370
+ });
371
+ } catch (err) {
372
+ return next(err);
373
+ }
374
+ });
375
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
376
+ const argsSterioController_getYoutubeMusicAlbums: Record<string, TsoaRoute.ParameterSchema> = {
377
+ query: {"in":"query","name":"q","required":true,"dataType":"string"},
378
+ };
379
+ app.get('/sterio/youtube-music/albums',
380
+ ...(fetchMiddlewares<RequestHandler>(SterioController)),
381
+ ...(fetchMiddlewares<RequestHandler>(SterioController.prototype.getYoutubeMusicAlbums)),
382
+
383
+ async function SterioController_getYoutubeMusicAlbums(request: ExRequest, response: ExResponse, next: any) {
384
+
385
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
386
+
387
+ let validatedArgs: any[] = [];
388
+ try {
389
+ validatedArgs = templateService.getValidatedArgs({ args: argsSterioController_getYoutubeMusicAlbums, request, response });
390
+
391
+ const controller = new SterioController();
392
+
393
+ await templateService.apiHandler({
394
+ methodName: 'getYoutubeMusicAlbums',
395
+ controller,
396
+ response,
397
+ next,
398
+ validatedArgs,
399
+ successStatus: undefined,
400
+ });
401
+ } catch (err) {
402
+ return next(err);
403
+ }
404
+ });
405
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
406
+
407
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
408
+
409
+
410
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
411
+ }
412
+
413
+ // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa