spotted 0.1.0 → 0.3.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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/README.md +1 -1
  4. data/lib/spotted/client.rb +4 -0
  5. data/lib/spotted/internal/transport/base_client.rb +7 -1
  6. data/lib/spotted/models/audiobook_base.rb +182 -0
  7. data/lib/spotted/models/audiobook_list_response.rb +2 -174
  8. data/lib/spotted/models/audiobook_retrieve_response.rb +2 -174
  9. data/lib/spotted/models/chapter_list_response.rb +3 -183
  10. data/lib/spotted/models/chapter_retrieve_response.rb +3 -183
  11. data/lib/spotted/models/episode_object.rb +3 -166
  12. data/lib/spotted/models/me/audiobook_list_response.rb +2 -174
  13. data/lib/spotted/models/me/show_list_response.rb +3 -166
  14. data/lib/spotted/models/search_retrieve_response.rb +6 -345
  15. data/lib/spotted/models/show_base.rb +165 -0
  16. data/lib/spotted/models/show_list_response.rb +3 -163
  17. data/lib/spotted/models/show_retrieve_response.rb +2 -157
  18. data/lib/spotted/models/unwrap_webhook_event.rb +8 -0
  19. data/lib/spotted/models/webhook_unwrap_params.rb +14 -0
  20. data/lib/spotted/models.rb +9 -0
  21. data/lib/spotted/resources/webhooks.rb +22 -0
  22. data/lib/spotted/version.rb +1 -1
  23. data/lib/spotted.rb +5 -0
  24. data/rbi/spotted/client.rbi +3 -0
  25. data/rbi/spotted/internal/transport/base_client.rbi +5 -0
  26. data/rbi/spotted/internal/type/base_model.rbi +8 -4
  27. data/rbi/spotted/models/audiobook_base.rbi +219 -0
  28. data/rbi/spotted/models/audiobook_list_response.rbi +4 -212
  29. data/rbi/spotted/models/audiobook_retrieve_response.rbi +4 -209
  30. data/rbi/spotted/models/chapter_list_response.rbi +4 -249
  31. data/rbi/spotted/models/chapter_retrieve_response.rbi +4 -245
  32. data/rbi/spotted/models/episode_object.rbi +4 -199
  33. data/rbi/spotted/models/me/audiobook_list_response.rbi +4 -212
  34. data/rbi/spotted/models/me/show_list_response.rbi +6 -227
  35. data/rbi/spotted/models/search_retrieve_response.rbi +6 -473
  36. data/rbi/spotted/models/show_base.rbi +194 -0
  37. data/rbi/spotted/models/show_list_response.rbi +5 -216
  38. data/rbi/spotted/models/show_retrieve_response.rbi +4 -182
  39. data/rbi/spotted/models/unwrap_webhook_event.rbi +7 -0
  40. data/rbi/spotted/models/webhook_unwrap_params.rbi +27 -0
  41. data/rbi/spotted/models.rbi +12 -0
  42. data/rbi/spotted/resources/webhooks.rbi +19 -0
  43. data/sig/spotted/client.rbs +2 -0
  44. data/sig/spotted/internal/transport/base_client.rbs +2 -0
  45. data/sig/spotted/models/audiobook_base.rbs +122 -0
  46. data/sig/spotted/models/audiobook_list_response.rbs +8 -111
  47. data/sig/spotted/models/audiobook_retrieve_response.rbs +8 -113
  48. data/sig/spotted/models/chapter_list_response.rbs +4 -123
  49. data/sig/spotted/models/chapter_retrieve_response.rbs +4 -123
  50. data/sig/spotted/models/episode_object.rbs +4 -111
  51. data/sig/spotted/models/me/audiobook_list_response.rbs +8 -111
  52. data/sig/spotted/models/me/show_list_response.rbs +5 -121
  53. data/sig/spotted/models/search_retrieve_response.rbs +8 -234
  54. data/sig/spotted/models/show_base.rbs +110 -0
  55. data/sig/spotted/models/show_list_response.rbs +4 -116
  56. data/sig/spotted/models/show_retrieve_response.rbs +8 -101
  57. data/sig/spotted/models/unwrap_webhook_event.rbs +5 -0
  58. data/sig/spotted/models/webhook_unwrap_params.rbs +15 -0
  59. data/sig/spotted/models.rbs +8 -0
  60. data/sig/spotted/resources/webhooks.rbs +9 -0
  61. metadata +17 -2
@@ -22,14 +22,10 @@ module Spotted
22
22
  attr_accessor :audio_preview_url
23
23
 
24
24
  # The audiobook for which the chapter belongs.
25
- sig { returns(Spotted::Models::ChapterRetrieveResponse::Audiobook) }
25
+ sig { returns(Spotted::AudiobookBase) }
26
26
  attr_reader :audiobook
27
27
 
28
- sig do
29
- params(
30
- audiobook: Spotted::Models::ChapterRetrieveResponse::Audiobook::OrHash
31
- ).void
32
- end
28
+ sig { params(audiobook: Spotted::AudiobookBase::OrHash).void }
33
29
  attr_writer :audiobook
34
30
 
35
31
  # The number of the chapter
@@ -135,8 +131,7 @@ module Spotted
135
131
  params(
136
132
  id: String,
137
133
  audio_preview_url: T.nilable(String),
138
- audiobook:
139
- Spotted::Models::ChapterRetrieveResponse::Audiobook::OrHash,
134
+ audiobook: Spotted::AudiobookBase::OrHash,
140
135
  chapter_number: Integer,
141
136
  description: String,
142
137
  duration_ms: Integer,
@@ -218,7 +213,7 @@ module Spotted
218
213
  {
219
214
  id: String,
220
215
  audio_preview_url: T.nilable(String),
221
- audiobook: Spotted::Models::ChapterRetrieveResponse::Audiobook,
216
+ audiobook: Spotted::AudiobookBase,
222
217
  chapter_number: Integer,
223
218
  description: String,
224
219
  duration_ms: Integer,
@@ -244,242 +239,6 @@ module Spotted
244
239
  def to_hash
245
240
  end
246
241
 
247
- class Audiobook < Spotted::Internal::Type::BaseModel
248
- OrHash =
249
- T.type_alias do
250
- T.any(
251
- Spotted::Models::ChapterRetrieveResponse::Audiobook,
252
- Spotted::Internal::AnyHash
253
- )
254
- end
255
-
256
- # The [Spotify ID](/documentation/web-api/concepts/spotify-uris-ids) for the
257
- # audiobook.
258
- sig { returns(String) }
259
- attr_accessor :id
260
-
261
- # The author(s) for the audiobook.
262
- sig { returns(T::Array[Spotted::AuthorObject]) }
263
- attr_accessor :authors
264
-
265
- # A list of the countries in which the audiobook can be played, identified by
266
- # their [ISO 3166-1 alpha-2](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
267
- # code.
268
- sig { returns(T::Array[String]) }
269
- attr_accessor :available_markets
270
-
271
- # The copyright statements of the audiobook.
272
- sig { returns(T::Array[Spotted::CopyrightObject]) }
273
- attr_accessor :copyrights
274
-
275
- # A description of the audiobook. HTML tags are stripped away from this field, use
276
- # `html_description` field in case HTML tags are needed.
277
- sig { returns(String) }
278
- attr_accessor :description
279
-
280
- # Whether or not the audiobook has explicit content (true = yes it does; false =
281
- # no it does not OR unknown).
282
- sig { returns(T::Boolean) }
283
- attr_accessor :explicit
284
-
285
- # External URLs for this audiobook.
286
- sig { returns(Spotted::ExternalURLObject) }
287
- attr_reader :external_urls
288
-
289
- sig { params(external_urls: Spotted::ExternalURLObject::OrHash).void }
290
- attr_writer :external_urls
291
-
292
- # A link to the Web API endpoint providing full details of the audiobook.
293
- sig { returns(String) }
294
- attr_accessor :href
295
-
296
- # A description of the audiobook. This field may contain HTML tags.
297
- sig { returns(String) }
298
- attr_accessor :html_description
299
-
300
- # The cover art for the audiobook in various sizes, widest first.
301
- sig { returns(T::Array[Spotted::ImageObject]) }
302
- attr_accessor :images
303
-
304
- # A list of the languages used in the audiobook, identified by their
305
- # [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code.
306
- sig { returns(T::Array[String]) }
307
- attr_accessor :languages
308
-
309
- # The media type of the audiobook.
310
- sig { returns(String) }
311
- attr_accessor :media_type
312
-
313
- # The name of the audiobook.
314
- sig { returns(String) }
315
- attr_accessor :name
316
-
317
- # The narrator(s) for the audiobook.
318
- sig { returns(T::Array[Spotted::NarratorObject]) }
319
- attr_accessor :narrators
320
-
321
- # The publisher of the audiobook.
322
- sig { returns(String) }
323
- attr_accessor :publisher
324
-
325
- # The number of chapters in this audiobook.
326
- sig { returns(Integer) }
327
- attr_accessor :total_chapters
328
-
329
- # The object type.
330
- sig do
331
- returns(
332
- Spotted::Models::ChapterRetrieveResponse::Audiobook::Type::TaggedSymbol
333
- )
334
- end
335
- attr_accessor :type
336
-
337
- # The [Spotify URI](/documentation/web-api/concepts/spotify-uris-ids) for the
338
- # audiobook.
339
- sig { returns(String) }
340
- attr_accessor :uri
341
-
342
- # The edition of the audiobook.
343
- sig { returns(T.nilable(String)) }
344
- attr_reader :edition
345
-
346
- sig { params(edition: String).void }
347
- attr_writer :edition
348
-
349
- # The audiobook for which the chapter belongs.
350
- sig do
351
- params(
352
- id: String,
353
- authors: T::Array[Spotted::AuthorObject::OrHash],
354
- available_markets: T::Array[String],
355
- copyrights: T::Array[Spotted::CopyrightObject::OrHash],
356
- description: String,
357
- explicit: T::Boolean,
358
- external_urls: Spotted::ExternalURLObject::OrHash,
359
- href: String,
360
- html_description: String,
361
- images: T::Array[Spotted::ImageObject::OrHash],
362
- languages: T::Array[String],
363
- media_type: String,
364
- name: String,
365
- narrators: T::Array[Spotted::NarratorObject::OrHash],
366
- publisher: String,
367
- total_chapters: Integer,
368
- type:
369
- Spotted::Models::ChapterRetrieveResponse::Audiobook::Type::OrSymbol,
370
- uri: String,
371
- edition: String
372
- ).returns(T.attached_class)
373
- end
374
- def self.new(
375
- # The [Spotify ID](/documentation/web-api/concepts/spotify-uris-ids) for the
376
- # audiobook.
377
- id:,
378
- # The author(s) for the audiobook.
379
- authors:,
380
- # A list of the countries in which the audiobook can be played, identified by
381
- # their [ISO 3166-1 alpha-2](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
382
- # code.
383
- available_markets:,
384
- # The copyright statements of the audiobook.
385
- copyrights:,
386
- # A description of the audiobook. HTML tags are stripped away from this field, use
387
- # `html_description` field in case HTML tags are needed.
388
- description:,
389
- # Whether or not the audiobook has explicit content (true = yes it does; false =
390
- # no it does not OR unknown).
391
- explicit:,
392
- # External URLs for this audiobook.
393
- external_urls:,
394
- # A link to the Web API endpoint providing full details of the audiobook.
395
- href:,
396
- # A description of the audiobook. This field may contain HTML tags.
397
- html_description:,
398
- # The cover art for the audiobook in various sizes, widest first.
399
- images:,
400
- # A list of the languages used in the audiobook, identified by their
401
- # [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code.
402
- languages:,
403
- # The media type of the audiobook.
404
- media_type:,
405
- # The name of the audiobook.
406
- name:,
407
- # The narrator(s) for the audiobook.
408
- narrators:,
409
- # The publisher of the audiobook.
410
- publisher:,
411
- # The number of chapters in this audiobook.
412
- total_chapters:,
413
- # The object type.
414
- type:,
415
- # The [Spotify URI](/documentation/web-api/concepts/spotify-uris-ids) for the
416
- # audiobook.
417
- uri:,
418
- # The edition of the audiobook.
419
- edition: nil
420
- )
421
- end
422
-
423
- sig do
424
- override.returns(
425
- {
426
- id: String,
427
- authors: T::Array[Spotted::AuthorObject],
428
- available_markets: T::Array[String],
429
- copyrights: T::Array[Spotted::CopyrightObject],
430
- description: String,
431
- explicit: T::Boolean,
432
- external_urls: Spotted::ExternalURLObject,
433
- href: String,
434
- html_description: String,
435
- images: T::Array[Spotted::ImageObject],
436
- languages: T::Array[String],
437
- media_type: String,
438
- name: String,
439
- narrators: T::Array[Spotted::NarratorObject],
440
- publisher: String,
441
- total_chapters: Integer,
442
- type:
443
- Spotted::Models::ChapterRetrieveResponse::Audiobook::Type::TaggedSymbol,
444
- uri: String,
445
- edition: String
446
- }
447
- )
448
- end
449
- def to_hash
450
- end
451
-
452
- # The object type.
453
- module Type
454
- extend Spotted::Internal::Type::Enum
455
-
456
- TaggedSymbol =
457
- T.type_alias do
458
- T.all(
459
- Symbol,
460
- Spotted::Models::ChapterRetrieveResponse::Audiobook::Type
461
- )
462
- end
463
- OrSymbol = T.type_alias { T.any(Symbol, String) }
464
-
465
- AUDIOBOOK =
466
- T.let(
467
- :audiobook,
468
- Spotted::Models::ChapterRetrieveResponse::Audiobook::Type::TaggedSymbol
469
- )
470
-
471
- sig do
472
- override.returns(
473
- T::Array[
474
- Spotted::Models::ChapterRetrieveResponse::Audiobook::Type::TaggedSymbol
475
- ]
476
- )
477
- end
478
- def self.values
479
- end
480
- end
481
- end
482
-
483
242
  # The precision with which `release_date` value is known.
484
243
  module ReleaseDatePrecision
485
244
  extend Spotted::Internal::Type::Enum
@@ -80,10 +80,10 @@ module Spotted
80
80
  attr_accessor :release_date_precision
81
81
 
82
82
  # The show on which the episode belongs.
83
- sig { returns(Spotted::EpisodeObject::Show) }
83
+ sig { returns(Spotted::ShowBase) }
84
84
  attr_reader :show
85
85
 
86
- sig { params(show: Spotted::EpisodeObject::Show::OrHash).void }
86
+ sig { params(show: Spotted::ShowBase::OrHash).void }
87
87
  attr_writer :show
88
88
 
89
89
  # The object type.
@@ -139,7 +139,7 @@ module Spotted
139
139
  release_date: String,
140
140
  release_date_precision:
141
141
  Spotted::EpisodeObject::ReleaseDatePrecision::OrSymbol,
142
- show: Spotted::EpisodeObject::Show::OrHash,
142
+ show: Spotted::ShowBase::OrHash,
143
143
  type: Spotted::EpisodeObject::Type::OrSymbol,
144
144
  uri: String,
145
145
  language: String,
@@ -222,7 +222,7 @@ module Spotted
222
222
  release_date: String,
223
223
  release_date_precision:
224
224
  Spotted::EpisodeObject::ReleaseDatePrecision::TaggedSymbol,
225
- show: Spotted::EpisodeObject::Show,
225
+ show: Spotted::ShowBase,
226
226
  type: Spotted::EpisodeObject::Type::TaggedSymbol,
227
227
  uri: String,
228
228
  language: String,
@@ -269,201 +269,6 @@ module Spotted
269
269
  end
270
270
  end
271
271
 
272
- class Show < Spotted::Internal::Type::BaseModel
273
- OrHash =
274
- T.type_alias do
275
- T.any(Spotted::EpisodeObject::Show, Spotted::Internal::AnyHash)
276
- end
277
-
278
- # The [Spotify ID](/documentation/web-api/concepts/spotify-uris-ids) for the show.
279
- sig { returns(String) }
280
- attr_accessor :id
281
-
282
- # A list of the countries in which the show can be played, identified by their
283
- # [ISO 3166-1 alpha-2](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code.
284
- sig { returns(T::Array[String]) }
285
- attr_accessor :available_markets
286
-
287
- # The copyright statements of the show.
288
- sig { returns(T::Array[Spotted::CopyrightObject]) }
289
- attr_accessor :copyrights
290
-
291
- # A description of the show. HTML tags are stripped away from this field, use
292
- # `html_description` field in case HTML tags are needed.
293
- sig { returns(String) }
294
- attr_accessor :description
295
-
296
- # Whether or not the show has explicit content (true = yes it does; false = no it
297
- # does not OR unknown).
298
- sig { returns(T::Boolean) }
299
- attr_accessor :explicit
300
-
301
- # External URLs for this show.
302
- sig { returns(Spotted::ExternalURLObject) }
303
- attr_reader :external_urls
304
-
305
- sig { params(external_urls: Spotted::ExternalURLObject::OrHash).void }
306
- attr_writer :external_urls
307
-
308
- # A link to the Web API endpoint providing full details of the show.
309
- sig { returns(String) }
310
- attr_accessor :href
311
-
312
- # A description of the show. This field may contain HTML tags.
313
- sig { returns(String) }
314
- attr_accessor :html_description
315
-
316
- # The cover art for the show in various sizes, widest first.
317
- sig { returns(T::Array[Spotted::ImageObject]) }
318
- attr_accessor :images
319
-
320
- # True if all of the shows episodes are hosted outside of Spotify's CDN. This
321
- # field might be `null` in some cases.
322
- sig { returns(T::Boolean) }
323
- attr_accessor :is_externally_hosted
324
-
325
- # A list of the languages used in the show, identified by their
326
- # [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code.
327
- sig { returns(T::Array[String]) }
328
- attr_accessor :languages
329
-
330
- # The media type of the show.
331
- sig { returns(String) }
332
- attr_accessor :media_type
333
-
334
- # The name of the episode.
335
- sig { returns(String) }
336
- attr_accessor :name
337
-
338
- # The publisher of the show.
339
- sig { returns(String) }
340
- attr_accessor :publisher
341
-
342
- # The total number of episodes in the show.
343
- sig { returns(Integer) }
344
- attr_accessor :total_episodes
345
-
346
- # The object type.
347
- sig { returns(Spotted::EpisodeObject::Show::Type::TaggedSymbol) }
348
- attr_accessor :type
349
-
350
- # The [Spotify URI](/documentation/web-api/concepts/spotify-uris-ids) for the
351
- # show.
352
- sig { returns(String) }
353
- attr_accessor :uri
354
-
355
- # The show on which the episode belongs.
356
- sig do
357
- params(
358
- id: String,
359
- available_markets: T::Array[String],
360
- copyrights: T::Array[Spotted::CopyrightObject::OrHash],
361
- description: String,
362
- explicit: T::Boolean,
363
- external_urls: Spotted::ExternalURLObject::OrHash,
364
- href: String,
365
- html_description: String,
366
- images: T::Array[Spotted::ImageObject::OrHash],
367
- is_externally_hosted: T::Boolean,
368
- languages: T::Array[String],
369
- media_type: String,
370
- name: String,
371
- publisher: String,
372
- total_episodes: Integer,
373
- type: Spotted::EpisodeObject::Show::Type::OrSymbol,
374
- uri: String
375
- ).returns(T.attached_class)
376
- end
377
- def self.new(
378
- # The [Spotify ID](/documentation/web-api/concepts/spotify-uris-ids) for the show.
379
- id:,
380
- # A list of the countries in which the show can be played, identified by their
381
- # [ISO 3166-1 alpha-2](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code.
382
- available_markets:,
383
- # The copyright statements of the show.
384
- copyrights:,
385
- # A description of the show. HTML tags are stripped away from this field, use
386
- # `html_description` field in case HTML tags are needed.
387
- description:,
388
- # Whether or not the show has explicit content (true = yes it does; false = no it
389
- # does not OR unknown).
390
- explicit:,
391
- # External URLs for this show.
392
- external_urls:,
393
- # A link to the Web API endpoint providing full details of the show.
394
- href:,
395
- # A description of the show. This field may contain HTML tags.
396
- html_description:,
397
- # The cover art for the show in various sizes, widest first.
398
- images:,
399
- # True if all of the shows episodes are hosted outside of Spotify's CDN. This
400
- # field might be `null` in some cases.
401
- is_externally_hosted:,
402
- # A list of the languages used in the show, identified by their
403
- # [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code.
404
- languages:,
405
- # The media type of the show.
406
- media_type:,
407
- # The name of the episode.
408
- name:,
409
- # The publisher of the show.
410
- publisher:,
411
- # The total number of episodes in the show.
412
- total_episodes:,
413
- # The object type.
414
- type:,
415
- # The [Spotify URI](/documentation/web-api/concepts/spotify-uris-ids) for the
416
- # show.
417
- uri:
418
- )
419
- end
420
-
421
- sig do
422
- override.returns(
423
- {
424
- id: String,
425
- available_markets: T::Array[String],
426
- copyrights: T::Array[Spotted::CopyrightObject],
427
- description: String,
428
- explicit: T::Boolean,
429
- external_urls: Spotted::ExternalURLObject,
430
- href: String,
431
- html_description: String,
432
- images: T::Array[Spotted::ImageObject],
433
- is_externally_hosted: T::Boolean,
434
- languages: T::Array[String],
435
- media_type: String,
436
- name: String,
437
- publisher: String,
438
- total_episodes: Integer,
439
- type: Spotted::EpisodeObject::Show::Type::TaggedSymbol,
440
- uri: String
441
- }
442
- )
443
- end
444
- def to_hash
445
- end
446
-
447
- # The object type.
448
- module Type
449
- extend Spotted::Internal::Type::Enum
450
-
451
- TaggedSymbol =
452
- T.type_alias { T.all(Symbol, Spotted::EpisodeObject::Show::Type) }
453
- OrSymbol = T.type_alias { T.any(Symbol, String) }
454
-
455
- SHOW = T.let(:show, Spotted::EpisodeObject::Show::Type::TaggedSymbol)
456
-
457
- sig do
458
- override.returns(
459
- T::Array[Spotted::EpisodeObject::Show::Type::TaggedSymbol]
460
- )
461
- end
462
- def self.values
463
- end
464
- end
465
- end
466
-
467
272
  # The object type.
468
273
  module Type
469
274
  extend Spotted::Internal::Type::Enum