rocksky 0.1.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e48d42415ab7937416c2e008a6b637b4e2aef4474f60aae824cf1e089a3814f3
4
- data.tar.gz: eefc4a0023800e5f0d03a4fd41837589b9fc02bd49e4244bcd7a260bc88895a6
3
+ metadata.gz: 7bf46315f6919d095154453f2daa8bf5b54fdd81d32b03e1b882dac582a36965
4
+ data.tar.gz: '041683204d6dbea62447f52385d6fc7d4385464a9c052eca2862f7d3f340ed28'
5
5
  SHA512:
6
- metadata.gz: 11773d9ea99df5d975d9c81636a3cd0058ea69a4a2cfcb9aa7b2579fbdcd0350f7b7c80ef34e4dadadd5b55232fd4d458773a319449d034118e7f436fafab71b
7
- data.tar.gz: 94cf1dba5ddb40fb27781044b27bf3cbe1e3cea3720e522541f4db5ab85d1431b1992af384db625128f13c3971a7a543f22f2747e0e011b936d4de3092219a57
6
+ metadata.gz: 0117e5bdd751d9465ff1a9a80a1d586fe8cd5bc5b28e8c7f48c6fe1ba608c5a7c0ffdcb342c760f6603391990e7a24bacc60c954b9bbe10708b5cc18f8d9b50b
7
+ data.tar.gz: 4ca4d2324391a138d429c02e997efd3046d8610fb3917aa315369c918c52a28b7dd3e7bbd45e98795458dcf5438b80ac11b3b61cf0f8f2d834823b309c667f14
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0
4
+
5
+ - Added lexicon-derived `Struct`s under `Rocksky::Generated::*` covering every
6
+ lex `*View*` / `*Record` / `*Input` / `*Output` / `*Params` shape. Generated
7
+ from `apps/api/lexicons/` via `bun run lexgen:types` at the repo root.
8
+
3
9
  ## 0.1.0
4
10
 
5
11
  - Initial release. Coverage for all `app.rocksky.*` XRPC endpoints across the
data/README.md CHANGED
@@ -132,7 +132,7 @@ pre-loaded with a `client` bound to your environment.
132
132
  ```bash
133
133
  $ gem install rocksky
134
134
  $ ROCKSKY_TOKEN=eyJ... rocksky-console
135
- Rocksky 0.1.0 — interactive console
135
+ Rocksky 0.2.0 — interactive console
136
136
  base_url : https://api.rocksky.app
137
137
  token : present (set via ROCKSKY_TOKEN)
138
138
 
@@ -194,6 +194,11 @@ client = Rocksky.new(open_timeout: 2, read_timeout: 5)
194
194
  | `open_timeout` | `10` seconds | — |
195
195
  | `read_timeout` | `30` seconds | — |
196
196
 
197
+ ## Types
198
+
199
+ Lexicon-derived `Struct` types are available under `Rocksky::Generated::*`, mirroring every lex `*View*` / `*Record` / `*Input` / `*Output` / `*Params` shape from [the Rocksky lexicons](https://tangled.org/rocksky.app/rocksky/tree/main/apps/api/lexicons). Regenerate with `bun run lexgen:types` at the repo root.
200
+
201
+
197
202
  ## Examples
198
203
 
199
204
  The `examples/` directory contains runnable scripts:
@@ -0,0 +1,217 @@
1
+ # frozen_string_literal: true
2
+ # AUTO-GENERATED FILE -- DO NOT EDIT.
3
+ # Source: apps/api/lexicons/**/*.json
4
+ # Regenerate via: bun run lexgen:types
5
+
6
+ module Rocksky
7
+ module Generated
8
+ BlobRef = Struct.new(:type, :ref, :mimeType, :size, keyword_init: true)
9
+
10
+ ActorArtistViewBasic = Struct.new(:id, :name, :picture, :uri, :user1Rank, :user2Rank, :weight, keyword_init: true)
11
+ ActorCompatibilityViewBasic = Struct.new(:compatibilityLevel, :compatibilityPercentage, :sharedArtists, :topSharedArtistNames, :topSharedDetailedArtists, :user1ArtistCount, :user2ArtistCount, keyword_init: true)
12
+ ActorNeighbourViewBasic = Struct.new(:userId, :did, :handle, :displayName, :avatar, :sharedArtistsCount, :similarityScore, :topSharedArtistNames, :topSharedArtistsDetails, keyword_init: true)
13
+ ActorProfileViewBasic = Struct.new(:id, :did, :handle, :displayName, :avatar, :createdAt, :updatedAt, keyword_init: true)
14
+ ActorProfileViewDetailed = Struct.new(:id, :did, :handle, :displayName, :avatar, :createdAt, :updatedAt, keyword_init: true)
15
+ ActorTrackView = Struct.new(:name, :artist, :album, :albumCoverUrl, :durationMs, :source, :recordingMbId, keyword_init: true)
16
+ AddDirectoryToQueueParams = Struct.new(:playerId, :directory, :position, :shuffle, keyword_init: true)
17
+ AddItemsToQueueParams = Struct.new(:playerId, :items, :position, :shuffle, keyword_init: true)
18
+ AlbumRecord = Struct.new(:title, :artist, :duration, :releaseDate, :year, :genre, :albumArt, :albumArtUrl, :tags, :youtubeLink, :spotifyLink, :tidalLink, :appleMusicLink, :createdAt, keyword_init: true)
19
+ AlbumViewBasic = Struct.new(:id, :uri, :title, :artist, :artistUri, :year, :albumArt, :releaseDate, :sha256, :playCount, :uniqueListeners, keyword_init: true)
20
+ AlbumViewDetailed = Struct.new(:id, :uri, :title, :artist, :artistUri, :year, :albumArt, :releaseDate, :sha256, :playCount, :uniqueListeners, :tags, :tracks, keyword_init: true)
21
+ ApiKeyView = Struct.new(:id, :name, :description, :createdAt, keyword_init: true)
22
+ ArtistListenerViewBasic = Struct.new(:id, :did, :handle, :displayName, :avatar, :mostListenedSong, :totalPlays, :rank, keyword_init: true)
23
+ ArtistMbid = Struct.new(:mbid, :name, keyword_init: true)
24
+ ArtistRecentListenerView = Struct.new(:id, :did, :handle, :displayName, :avatar, :timestamp, :scrobbleUri, keyword_init: true)
25
+ ArtistRecord = Struct.new(:name, :bio, :picture, :pictureUrl, :tags, :born, :died, :bornIn, :createdAt, keyword_init: true)
26
+ ArtistSongViewBasic = Struct.new(:uri, :title, :playCount, keyword_init: true)
27
+ ArtistViewBasic = Struct.new(:id, :uri, :name, :picture, :sha256, :playCount, :uniqueListeners, :tags, keyword_init: true)
28
+ ArtistViewDetailed = Struct.new(:id, :uri, :name, :picture, :sha256, :playCount, :uniqueListeners, :tags, keyword_init: true)
29
+ ChartsScrobbleViewBasic = Struct.new(:date, :count, keyword_init: true)
30
+ ChartsView = Struct.new(:scrobbles, keyword_init: true)
31
+ CreateApikeyInput = Struct.new(:name, :description, keyword_init: true)
32
+ CreatePlaylistParams = Struct.new(:name, :description, keyword_init: true)
33
+ CreateScrobbleInput = Struct.new(:title, :artist, :album, :duration, :mbId, :isrc, :albumArt, :trackNumber, :releaseDate, :year, :discNumber, :lyrics, :composer, :copyrightMessage, :label, :artistPicture, :spotifyLink, :lastfmLink, :tidalLink, :appleMusicLink, :youtubeLink, :deezerLink, :timestamp, keyword_init: true)
34
+ CreateShoutInput = Struct.new(:message, keyword_init: true)
35
+ CreateSongInput = Struct.new(:title, :artist, :albumArtist, :album, :duration, :mbId, :isrc, :albumArt, :trackNumber, :releaseDate, :year, :discNumber, :lyrics, keyword_init: true)
36
+ DescribeFeedGeneratorOutput = Struct.new(:did, :feeds, keyword_init: true)
37
+ DescribeFeedGeneratorParams = Struct.new(keyword_init: true)
38
+ DislikeShoutInput = Struct.new(:uri, keyword_init: true)
39
+ DislikeSongInput = Struct.new(:uri, keyword_init: true)
40
+ DownloadFileParams = Struct.new(:fileId, keyword_init: true)
41
+ DropboxFileListView = Struct.new(:files, keyword_init: true)
42
+ DropboxFileView = Struct.new(:id, :name, :pathLower, :pathDisplay, :clientModified, :serverModified, keyword_init: true)
43
+ DropboxTemporaryLinkView = Struct.new(:link, keyword_init: true)
44
+ FeedGeneratorsView = Struct.new(:feeds, keyword_init: true)
45
+ FeedGeneratorView = Struct.new(:id, :name, :description, :uri, :avatar, :creator, keyword_init: true)
46
+ FeedItemView = Struct.new(:scrobble, keyword_init: true)
47
+ FeedRecommendationsView = Struct.new(:recommendations, :cursor, keyword_init: true)
48
+ FeedRecommendationView = Struct.new(:title, :artist, :album, :albumArt, :trackUri, :artistUri, :albumUri, :genres, :recommendationScore, :source, :likesCount, keyword_init: true)
49
+ FeedRecommendedAlbumsView = Struct.new(:albums, :cursor, keyword_init: true)
50
+ FeedRecommendedAlbumView = Struct.new(:id, :uri, :title, :artist, :artistUri, :year, :albumArt, :recommendationScore, :source, keyword_init: true)
51
+ FeedRecommendedArtistsView = Struct.new(:artists, :cursor, keyword_init: true)
52
+ FeedRecommendedArtistView = Struct.new(:id, :uri, :name, :picture, :genres, :recommendationScore, :source, keyword_init: true)
53
+ FeedSearchResultsView = Struct.new(:hits, :processingTimeMs, :limit, :offset, :estimatedTotalHits, keyword_init: true)
54
+ FeedStoriesView = Struct.new(:stories, keyword_init: true)
55
+ FeedStoryView = Struct.new(:album, :albumArt, :albumArtist, :albumUri, :artist, :artistUri, :avatar, :createdAt, :did, :handle, :id, :title, :trackId, :trackUri, :uri, keyword_init: true)
56
+ FeedUriView = Struct.new(:uri, keyword_init: true)
57
+ FeedView = Struct.new(:feed, :cursor, keyword_init: true)
58
+ FollowAccountOutput = Struct.new(:subject, :followers, :cursor, keyword_init: true)
59
+ FollowAccountParams = Struct.new(:account, keyword_init: true)
60
+ FollowRecord = Struct.new(:createdAt, :subject, :via, keyword_init: true)
61
+ GeneratorRecord = Struct.new(:did, :avatar, :displayName, :description, :createdAt, keyword_init: true)
62
+ GetActorAlbumsOutput = Struct.new(:albums, keyword_init: true)
63
+ GetActorAlbumsParams = Struct.new(:did, :limit, :offset, :startDate, :endDate, keyword_init: true)
64
+ GetActorArtistsOutput = Struct.new(:artists, keyword_init: true)
65
+ GetActorArtistsParams = Struct.new(:did, :limit, :offset, :startDate, :endDate, keyword_init: true)
66
+ GetActorCompatibilityOutput = Struct.new(:compatibility, keyword_init: true)
67
+ GetActorCompatibilityParams = Struct.new(:did, keyword_init: true)
68
+ GetActorLovedSongsOutput = Struct.new(:tracks, keyword_init: true)
69
+ GetActorLovedSongsParams = Struct.new(:did, :limit, :offset, keyword_init: true)
70
+ GetActorNeighboursOutput = Struct.new(:neighbours, keyword_init: true)
71
+ GetActorNeighboursParams = Struct.new(:did, keyword_init: true)
72
+ GetActorPlaylistsOutput = Struct.new(:playlists, keyword_init: true)
73
+ GetActorPlaylistsParams = Struct.new(:did, :limit, :offset, keyword_init: true)
74
+ GetActorScrobblesOutput = Struct.new(:scrobbles, keyword_init: true)
75
+ GetActorScrobblesParams = Struct.new(:did, :limit, :offset, keyword_init: true)
76
+ GetActorSongsOutput = Struct.new(:songs, keyword_init: true)
77
+ GetActorSongsParams = Struct.new(:did, :limit, :offset, :startDate, :endDate, keyword_init: true)
78
+ GetAlbumParams = Struct.new(:uri, keyword_init: true)
79
+ GetAlbumRecommendationsParams = Struct.new(:did, :limit, keyword_init: true)
80
+ GetAlbumShoutsOutput = Struct.new(:shouts, keyword_init: true)
81
+ GetAlbumShoutsParams = Struct.new(:uri, :limit, :offset, keyword_init: true)
82
+ GetAlbumsOutput = Struct.new(:albums, keyword_init: true)
83
+ GetAlbumsParams = Struct.new(:limit, :offset, :genre, keyword_init: true)
84
+ GetAlbumTracksOutput = Struct.new(:tracks, keyword_init: true)
85
+ GetAlbumTracksParams = Struct.new(:uri, keyword_init: true)
86
+ GetApikeysOutput = Struct.new(:apiKeys, keyword_init: true)
87
+ GetApikeysParams = Struct.new(:offset, :limit, keyword_init: true)
88
+ GetArtistAlbumsOutput = Struct.new(:albums, keyword_init: true)
89
+ GetArtistAlbumsParams = Struct.new(:uri, keyword_init: true)
90
+ GetArtistListenersOutput = Struct.new(:listeners, keyword_init: true)
91
+ GetArtistListenersParams = Struct.new(:uri, :offset, :limit, keyword_init: true)
92
+ GetArtistParams = Struct.new(:uri, keyword_init: true)
93
+ GetArtistRecentListenersOutput = Struct.new(:listeners, keyword_init: true)
94
+ GetArtistRecentListenersParams = Struct.new(:uri, :offset, :limit, keyword_init: true)
95
+ GetArtistRecommendationsParams = Struct.new(:did, :limit, keyword_init: true)
96
+ GetArtistShoutsOutput = Struct.new(:shouts, keyword_init: true)
97
+ GetArtistShoutsParams = Struct.new(:uri, :limit, :offset, keyword_init: true)
98
+ GetArtistsOutput = Struct.new(:artists, keyword_init: true)
99
+ GetArtistsParams = Struct.new(:limit, :offset, :names, :genre, keyword_init: true)
100
+ GetArtistTracksOutput = Struct.new(:tracks, keyword_init: true)
101
+ GetArtistTracksParams = Struct.new(:uri, :limit, :offset, keyword_init: true)
102
+ GetCurrentlyPlayingParams = Struct.new(:playerId, :actor, keyword_init: true)
103
+ GetFeedGeneratorOutput = Struct.new(:view, keyword_init: true)
104
+ GetFeedGeneratorParams = Struct.new(:feed, keyword_init: true)
105
+ GetFeedGeneratorsParams = Struct.new(:size, keyword_init: true)
106
+ GetFeedParams = Struct.new(:feed, :limit, :cursor, keyword_init: true)
107
+ GetFeedSkeletonOutput = Struct.new(:scrobbles, :cursor, keyword_init: true)
108
+ GetFeedSkeletonParams = Struct.new(:feed, :limit, :offset, :cursor, keyword_init: true)
109
+ GetFileParams = Struct.new(:fileId, keyword_init: true)
110
+ GetFilesParams = Struct.new(:at, keyword_init: true)
111
+ GetFollowersOutput = Struct.new(:subject, :followers, :cursor, :count, keyword_init: true)
112
+ GetFollowersParams = Struct.new(:actor, :limit, :dids, :cursor, keyword_init: true)
113
+ GetFollowsOutput = Struct.new(:subject, :follows, :cursor, :count, keyword_init: true)
114
+ GetFollowsParams = Struct.new(:actor, :limit, :dids, :cursor, keyword_init: true)
115
+ GetKnownFollowersOutput = Struct.new(:subject, :followers, :cursor, keyword_init: true)
116
+ GetKnownFollowersParams = Struct.new(:actor, :limit, :cursor, keyword_init: true)
117
+ GetMetadataParams = Struct.new(:path, keyword_init: true)
118
+ GetMirrorSourcesOutput = Struct.new(:sources, keyword_init: true)
119
+ GetMirrorSourcesParams = Struct.new(keyword_init: true)
120
+ GetPlaybackQueueParams = Struct.new(:playerId, keyword_init: true)
121
+ GetPlaylistParams = Struct.new(:uri, keyword_init: true)
122
+ GetPlaylistsOutput = Struct.new(:playlists, keyword_init: true)
123
+ GetPlaylistsParams = Struct.new(:limit, :offset, keyword_init: true)
124
+ GetProfileParams = Struct.new(:did, keyword_init: true)
125
+ GetProfileShoutsOutput = Struct.new(:shouts, keyword_init: true)
126
+ GetProfileShoutsParams = Struct.new(:did, :offset, :limit, keyword_init: true)
127
+ GetRecommendationsParams = Struct.new(:did, :limit, keyword_init: true)
128
+ GetScrobbleParams = Struct.new(:uri, keyword_init: true)
129
+ GetScrobblesChartParams = Struct.new(:did, :artisturi, :albumuri, :songuri, :genre, :from, :to, keyword_init: true)
130
+ GetScrobblesOutput = Struct.new(:scrobbles, keyword_init: true)
131
+ GetScrobblesParams = Struct.new(:did, :following, :limit, :offset, keyword_init: true)
132
+ GetShoutRepliesOutput = Struct.new(:shouts, keyword_init: true)
133
+ GetShoutRepliesParams = Struct.new(:uri, :limit, :offset, keyword_init: true)
134
+ GetSongParams = Struct.new(:uri, :mbid, :isrc, :spotifyId, keyword_init: true)
135
+ GetSongRecentListenersOutput = Struct.new(:listeners, keyword_init: true)
136
+ GetSongRecentListenersParams = Struct.new(:uri, :offset, :limit, keyword_init: true)
137
+ GetSongsOutput = Struct.new(:songs, keyword_init: true)
138
+ GetSongsParams = Struct.new(:limit, :offset, :genre, :mbid, :isrc, :spotifyId, keyword_init: true)
139
+ GetStatsParams = Struct.new(:did, keyword_init: true)
140
+ GetStoriesParams = Struct.new(:size, keyword_init: true)
141
+ GetTemporaryLinkParams = Struct.new(:path, keyword_init: true)
142
+ GetTopArtistsOutput = Struct.new(:artists, keyword_init: true)
143
+ GetTopArtistsParams = Struct.new(:limit, :offset, :startDate, :endDate, keyword_init: true)
144
+ GetTopTracksOutput = Struct.new(:tracks, keyword_init: true)
145
+ GetTopTracksParams = Struct.new(:limit, :offset, :startDate, :endDate, keyword_init: true)
146
+ GetTrackShoutsOutput = Struct.new(:shouts, keyword_init: true)
147
+ GetTrackShoutsParams = Struct.new(:uri, keyword_init: true)
148
+ GetWrappedParams = Struct.new(:did, :year, keyword_init: true)
149
+ GoogledriveFileListView = Struct.new(:files, keyword_init: true)
150
+ GoogledriveFileView = Struct.new(:id, keyword_init: true)
151
+ # indicates that a handle or DID could not be resolved
152
+ GraphNotFoundActor = Struct.new(:actor, :notFound, keyword_init: true)
153
+ GraphRelationship = Struct.new(:did, :following, :followedBy, keyword_init: true)
154
+ InsertDirectoryParams = Struct.new(:uri, :directory, :position, keyword_init: true)
155
+ InsertFilesParams = Struct.new(:uri, :files, :position, keyword_init: true)
156
+ LikeRecord = Struct.new(:createdAt, :subject, keyword_init: true)
157
+ LikeShoutInput = Struct.new(:uri, keyword_init: true)
158
+ LikeSongInput = Struct.new(:uri, keyword_init: true)
159
+ MatchSongParams = Struct.new(:title, :artist, :mbId, :isrc, keyword_init: true)
160
+ MirrorSourceView = Struct.new(:provider, :enabled, :externalUsername, :hasCredentials, :lastPolledAt, :lastScrobbleSeenAt, keyword_init: true)
161
+ NextParams = Struct.new(:playerId, keyword_init: true)
162
+ PauseParams = Struct.new(:playerId, keyword_init: true)
163
+ PlayDirectoryParams = Struct.new(:playerId, :directoryId, :shuffle, :recurse, :position, keyword_init: true)
164
+ PlayerCurrentlyPlayingViewDetailed = Struct.new(:title, keyword_init: true)
165
+ PlayerPlaybackQueueViewDetailed = Struct.new(:tracks, keyword_init: true)
166
+ PlayFileParams = Struct.new(:playerId, :fileId, keyword_init: true)
167
+ PlaylistItemRecord = Struct.new(:subject, :createdAt, :track, :order, keyword_init: true)
168
+ PlaylistRecord = Struct.new(:name, :description, :picture, :pictureUrl, :createdAt, :spotifyLink, :tidalLink, :youtubeLink, :appleMusicLink, keyword_init: true)
169
+ # Basic view of a playlist, including its metadata
170
+ PlaylistViewBasic = Struct.new(:id, :title, :uri, :curatorDid, :curatorHandle, :curatorName, :curatorAvatarUrl, :description, :coverImageUrl, :createdAt, :trackCount, keyword_init: true)
171
+ # Detailed view of a playlist, including its tracks and metadata
172
+ PlaylistViewDetailed = Struct.new(:id, :title, :uri, :curatorDid, :curatorHandle, :curatorName, :curatorAvatarUrl, :description, :coverImageUrl, :createdAt, :tracks, keyword_init: true)
173
+ PlayParams = Struct.new(:playerId, keyword_init: true)
174
+ PreviousParams = Struct.new(:playerId, keyword_init: true)
175
+ ProfileRecord = Struct.new(:displayName, :description, :avatar, :banner, :labels, :joinedViaStarterPack, :createdAt, keyword_init: true)
176
+ PutMirrorSourceInput = Struct.new(:provider, :enabled, :externalUsername, :apiKey, keyword_init: true)
177
+ RadioRecord = Struct.new(:name, :url, :description, :genre, :logo, :website, :createdAt, keyword_init: true)
178
+ RadioViewBasic = Struct.new(:id, :name, :description, :createdAt, keyword_init: true)
179
+ RadioViewDetailed = Struct.new(:id, :name, :description, :website, :url, :genre, :logo, :createdAt, keyword_init: true)
180
+ RemoveApikeyParams = Struct.new(:id, keyword_init: true)
181
+ RemovePlaylistParams = Struct.new(:uri, keyword_init: true)
182
+ RemoveShoutParams = Struct.new(:id, keyword_init: true)
183
+ RemoveTrackParams = Struct.new(:uri, :position, keyword_init: true)
184
+ ReplyShoutInput = Struct.new(:shoutId, :message, keyword_init: true)
185
+ ReportShoutInput = Struct.new(:shoutId, :reason, keyword_init: true)
186
+ ScrobbleFirstScrobbleView = Struct.new(:handle, :avatar, :timestamp, keyword_init: true)
187
+ ScrobbleRecord = Struct.new(:title, :artist, :artists, :albumArtist, :album, :duration, :trackNumber, :discNumber, :releaseDate, :year, :genre, :tags, :composer, :lyrics, :copyrightMessage, :wiki, :albumArt, :albumArtUrl, :youtubeLink, :spotifyLink, :tidalLink, :appleMusicLink, :createdAt, :mbid, :label, :isrc, keyword_init: true)
188
+ ScrobbleViewBasic = Struct.new(:id, :user, :userDisplayName, :userAvatar, :title, :artist, :artistUri, :album, :albumUri, :cover, :date, :uri, :sha256, :liked, :likesCount, keyword_init: true)
189
+ ScrobbleViewDetailed = Struct.new(:id, :user, :title, :artist, :artistUri, :album, :albumUri, :cover, :date, :uri, :sha256, :liked, :likesCount, :listeners, :scrobbles, :artists, :firstScrobble, keyword_init: true)
190
+ SearchParams = Struct.new(:query, keyword_init: true)
191
+ SeekParams = Struct.new(:playerId, :position, keyword_init: true)
192
+ ShoutAuthor = Struct.new(:id, :did, :handle, :displayName, :avatar, keyword_init: true)
193
+ ShoutRecord = Struct.new(:message, :createdAt, :parent, :subject, keyword_init: true)
194
+ ShoutView = Struct.new(:id, :message, :parent, :createdAt, :author, keyword_init: true)
195
+ SongFirstScrobbleView = Struct.new(:handle, :avatar, :timestamp, keyword_init: true)
196
+ SongRecentListenerView = Struct.new(:id, :did, :handle, :displayName, :avatar, :timestamp, :scrobbleUri, keyword_init: true)
197
+ SongRecord = Struct.new(:title, :artist, :artists, :albumArtist, :album, :duration, :trackNumber, :discNumber, :releaseDate, :year, :genre, :tags, :composer, :lyrics, :copyrightMessage, :wiki, :albumArt, :albumArtUrl, :youtubeLink, :spotifyLink, :tidalLink, :appleMusicLink, :createdAt, :mbid, :label, :isrc, keyword_init: true)
198
+ SongViewBasic = Struct.new(:id, :title, :artist, :albumArtist, :albumArt, :uri, :album, :duration, :trackNumber, :discNumber, :playCount, :uniqueListeners, :albumUri, :artistUri, :sha256, :mbid, :isrc, :tags, :createdAt, keyword_init: true)
199
+ SongViewDetailed = Struct.new(:id, :title, :artist, :albumArtist, :albumArt, :uri, :album, :duration, :trackNumber, :discNumber, :playCount, :uniqueListeners, :albumUri, :artistUri, :sha256, :mbid, :isrc, :tags, :createdAt, :artists, :firstScrobble, keyword_init: true)
200
+ SpotifyTrackView = Struct.new(:id, :name, :artist, :album, :duration, :previewUrl, keyword_init: true)
201
+ StartPlaylistParams = Struct.new(:uri, :shuffle, :position, keyword_init: true)
202
+ StatsView = Struct.new(:scrobbles, :artists, :lovedTracks, :albums, :tracks, keyword_init: true)
203
+ StatsWrappedAlbum = Struct.new(:id, :title, :artist, :albumArt, :uri, :playCount, keyword_init: true)
204
+ StatsWrappedArtist = Struct.new(:id, :name, :picture, :uri, :playCount, keyword_init: true)
205
+ StatsWrappedDayCount = Struct.new(:date, :count, keyword_init: true)
206
+ StatsWrappedGenreCount = Struct.new(:genre, :count, keyword_init: true)
207
+ StatsWrappedMilestone = Struct.new(:trackTitle, :artistName, :timestamp, :trackUri, keyword_init: true)
208
+ StatsWrappedMonthCount = Struct.new(:month, :count, keyword_init: true)
209
+ StatsWrappedTrack = Struct.new(:id, :title, :artist, :albumArt, :uri, :artistUri, :albumUri, :playCount, keyword_init: true)
210
+ StatsWrappedView = Struct.new(:year, :totalScrobbles, :totalListeningTimeMinutes, :topArtists, :topTracks, :topAlbums, :topGenres, :scrobblesPerMonth, :mostActiveDay, :mostActiveHour, :newArtistsCount, :longestStreak, :firstScrobble, :lastScrobble, keyword_init: true)
211
+ StatusRecord = Struct.new(:track, :startedAt, :expiresAt, keyword_init: true)
212
+ StrongRef = Struct.new(:uri, :cid, keyword_init: true)
213
+ UnfollowAccountOutput = Struct.new(:subject, :followers, :cursor, keyword_init: true)
214
+ UnfollowAccountParams = Struct.new(:account, keyword_init: true)
215
+ UpdateApikeyInput = Struct.new(:id, :name, :description, keyword_init: true)
216
+ end
217
+ end
@@ -1,3 +1,3 @@
1
1
  module Rocksky
2
- VERSION = "0.1.0".freeze
2
+ VERSION = "0.2.0".freeze
3
3
  end
data/lib/rocksky.rb CHANGED
@@ -19,6 +19,7 @@ require "rocksky/resources/song"
19
19
  require "rocksky/resources/spotify"
20
20
  require "rocksky/resources/stats"
21
21
  require "rocksky/client"
22
+ require "rocksky/generated/types"
22
23
 
23
24
  module Rocksky
24
25
  # Build a new Rocksky client.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rocksky
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rocksky
@@ -81,6 +81,7 @@ files:
81
81
  - lib/rocksky.rb
82
82
  - lib/rocksky/client.rb
83
83
  - lib/rocksky/error.rb
84
+ - lib/rocksky/generated/types.rb
84
85
  - lib/rocksky/http.rb
85
86
  - lib/rocksky/resources/actor.rb
86
87
  - lib/rocksky/resources/album.rb