spotify-ruby-kev 0.2.5

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 052e7b0ae6c4d5b62e7732748a0e1c7e217a33557b447ef0baedd23f33d6aaa7
4
+ data.tar.gz: f981008c955f23c8651a2b854687ad41dcaa64588d20560c6bf67d916721d600
5
+ SHA512:
6
+ metadata.gz: 1898406732975c2cfceed39a7f86ed5b1f74a818c1dc745182b9f2478e58252d211d7ebd3a36c505917dd2b5f0b9b41668da020f6bba44a03248c996544e7536
7
+ data.tar.gz: cd047de9bd23771464e4d2456c12676981702d6155804cd728aa8d04714343e319092884e242fe700dbbecbb0d1c2d4cff170dd85b1c42679e57688c79450ce1
@@ -0,0 +1,3 @@
1
+ 👍🎉 First off, thanks for taking the time to contribute! 🎉👍
2
+
3
+ Please refer to these [guidelines](https://bih.github.io/spotify-ruby/documentation/contributing/) for details.
@@ -0,0 +1,27 @@
1
+ *Before you log an issue, please, make sure
2
+ that the problem you're reporting
3
+ hasn't been reported (and potentially fixed) already.*
4
+
5
+ *Please provide an unambiguous title for the issue.
6
+ Be clear and precise in your description of the problem.
7
+ Use the template below when reporting bugs*
8
+
9
+ *Before filing the ticket you should replace all text above the horizontal
10
+ rule with your own words.*
11
+
12
+ --------
13
+
14
+ ## Expected behavior
15
+
16
+ Describe here how you expected spotify-ruby to behave in this particular situation.
17
+
18
+ ## Actual behavior
19
+
20
+ Describe here what actually happened.
21
+
22
+ ## Steps to reproduce the problem
23
+
24
+ This is extremely important! Providing us with a reliable way to reproduce
25
+ a problem will expedite its solution.
26
+
27
+ ## Spotify-ruby version
data/.gitignore ADDED
@@ -0,0 +1,24 @@
1
+ /.yardoc
2
+ /Gemfile.lock
3
+ /.bundle/
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /html/
8
+ /pkg/
9
+ /spec/reports/
10
+ /tmp/
11
+ /.local/
12
+
13
+ # local console
14
+ /bin/console_local
15
+
16
+ # jekyll rendered site
17
+ /docs/_site
18
+ /docs/.sass-cache
19
+ /docs/.jekyll-metadata
20
+
21
+ # rspec failure tracking
22
+ .rspec_status
23
+ .coveralls.yml
24
+ .DS_Store
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,161 @@
1
+ AllCops:
2
+ Exclude:
3
+ - 'bin/console'
4
+ - 'bin/console_local'
5
+ - 'bin/generate_model'
6
+ - 'bin/generate_component'
7
+
8
+ # Commonly used screens these days easily fit more than 80 characters.
9
+ Metrics/LineLength:
10
+ Max: 120
11
+ Exclude:
12
+ - 'spec/**/*.rb'
13
+
14
+ # Too short methods lead to extraction of single-use methods, which can make
15
+ # the code easier to read (by naming things), but can also clutter the class
16
+ Metrics/MethodLength:
17
+ Max: 25
18
+
19
+ # The guiding principle of classes is SRP, SRP can't be accurately measured by LoC
20
+ Metrics/ClassLength:
21
+ Max: 1500
22
+ Exclude:
23
+ - 'spec/**/*.rb'
24
+
25
+ # The size of a block for a method.
26
+ Metrics/BlockLength:
27
+ CountComments: false
28
+ Max: 25
29
+ ExcludedMethods: []
30
+ Exclude:
31
+ - '*.gemspec'
32
+ - 'spec/**/*.rb'
33
+
34
+ # No space makes the method definition shorter and differentiates
35
+ # from a regular assignment.
36
+ Layout/SpaceAroundEqualsInParameterDefault:
37
+ EnforcedStyle: no_space
38
+
39
+ # Single quotes being faster is hardly measurable and only affects parse time.
40
+ # Enforcing double quotes reduces the times where you need to change them
41
+ # when introducing an interpolation. Use single quotes only if their semantics
42
+ # are needed.
43
+ Style/StringLiterals:
44
+ EnforcedStyle: double_quotes
45
+
46
+ # We do not need to support Ruby 1.9, so this is good to use.
47
+ Style/SymbolArray:
48
+ Enabled: true
49
+
50
+ # Most readable form.
51
+ Layout/AlignHash:
52
+ EnforcedHashRocketStyle: table
53
+ EnforcedColonStyle: table
54
+
55
+ # Mixing the styles looks just silly.
56
+ Style/HashSyntax:
57
+ EnforcedStyle: ruby19_no_mixed_keys
58
+
59
+ # has_key? and has_value? are far more readable than key? and value?
60
+ Style/PreferredHashMethods:
61
+ Enabled: false
62
+
63
+ # String#% is by far the least verbose and only object oriented variant.
64
+ Style/FormatString:
65
+ EnforcedStyle: percent
66
+
67
+ Style/CollectionMethods:
68
+ Enabled: true
69
+ PreferredMethods:
70
+ # inject seems more common in the community.
71
+ reduce: "inject"
72
+
73
+
74
+ # Either allow this style or don't. Marking it as safe with parenthesis
75
+ # is silly. Let's try to live without them for now.
76
+ Style/ParenthesesAroundCondition:
77
+ AllowSafeAssignment: false
78
+ Lint/AssignmentInCondition:
79
+ AllowSafeAssignment: false
80
+
81
+ # A specialized exception class will take one or more arguments and construct the message from it.
82
+ # So both variants make sense.
83
+ Style/RaiseArgs:
84
+ Enabled: false
85
+
86
+ # Indenting the chained dots beneath each other is not supported by this cop,
87
+ # see https://github.com/bbatsov/rubocop/issues/1633
88
+ Layout/MultilineOperationIndentation:
89
+ Enabled: false
90
+
91
+ # Fail is an alias of raise. Avoid aliases, it's more cognitive load for no gain.
92
+ # The argument that fail should be used to abort the program is wrong too,
93
+ # there's Kernel#abort for that.
94
+ Style/SignalException:
95
+ EnforcedStyle: only_raise
96
+
97
+ # Use of alias_method in a class body context.
98
+ Style/Alias:
99
+ Enabled: false
100
+
101
+ # Suppressing exceptions can be perfectly fine, and be it to avoid to
102
+ # explicitly type nil into the rescue since that's what you want to return,
103
+ # or suppressing LoadError for optional dependencies
104
+ Lint/HandleExceptions:
105
+ Enabled: false
106
+
107
+ Layout/SpaceInsideBlockBraces:
108
+ # The space here provides no real gain in readability while consuming
109
+ # horizontal space that could be used for a better parameter name.
110
+ # Also {| differentiates better from a hash than { | does.
111
+ SpaceBeforeBlockParameters: false
112
+
113
+ # No trailing space differentiates better from the block:
114
+ # foo} means hash, foo } means block.
115
+ Layout/SpaceInsideHashLiteralBraces:
116
+ EnforcedStyle: no_space
117
+
118
+ # { ... } for multi-line blocks is okay, follow Weirichs rule instead:
119
+ # https://web.archive.org/web/20140221124509/http://onestepback.org/index.cgi/Tech/Ruby/BraceVsDoEnd.rdoc
120
+ Style/BlockDelimiters:
121
+ Enabled: false
122
+
123
+ # do / end blocks should be used for side effects,
124
+ # methods that run a block for side effects and have
125
+ # a useful return value are rare, assign the return
126
+ # value to a local variable for those cases.
127
+ Style/MethodCalledOnDoEndBlock:
128
+ Enabled: true
129
+
130
+ # Enforcing the names of variables? To single letter ones? Just no.
131
+ Style/SingleLineBlockParams:
132
+ Enabled: false
133
+
134
+ # Shadowing outer local variables with block parameters is often useful
135
+ # to not reinvent a new name for the same thing, it highlights the relation
136
+ # between the outer variable and the parameter. The cases where it's actually
137
+ # confusing are rare, and usually bad for other reasons already, for example
138
+ # because the method is too long.
139
+ Lint/ShadowingOuterLocalVariable:
140
+ Enabled: false
141
+
142
+ # Check with yard instead.
143
+ Style/Documentation:
144
+ Enabled: false
145
+
146
+ # This is just silly. Calling the argument `other` in all cases makes no sense.
147
+ Naming/BinaryOperatorParameterName:
148
+ Enabled: false
149
+
150
+ # There are valid cases, for example debugging Cucumber steps,
151
+ # also they'll fail CI anyway
152
+ Lint/Debugger:
153
+ Enabled: false
154
+
155
+ # Style preference
156
+ Style/MethodDefParentheses:
157
+ Enabled: false
158
+
159
+ # Disable annotated tokens
160
+ Style/FormatStringToken:
161
+ Enabled: false
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.6.3
data/.rvm-version ADDED
@@ -0,0 +1 @@
1
+ 2.6.3
data/.travis.yml ADDED
@@ -0,0 +1,17 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.4.0
5
+ - 2.4.1
6
+ - 2.5.0
7
+ - 2.5.1
8
+ before_install: >
9
+ gem install bundler -v 2.1.4
10
+ before_script:
11
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
12
+ - chmod +x ./cc-test-reporter
13
+ - ./cc-test-reporter before-build
14
+ script:
15
+ - rake ci
16
+ after_script:
17
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
@@ -0,0 +1,74 @@
1
+ # Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at bil@spotify.com. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at [http://contributor-covenant.org/version/1/4][version]
72
+
73
+ [homepage]: http://contributor-covenant.org
74
+ [version]: http://contributor-covenant.org/version/1/4/
data/COVERAGE.md ADDED
@@ -0,0 +1,148 @@
1
+ # Spotify API Coverage
2
+
3
+ This covers all the Spotify API endpoints that are covered.
4
+
5
+ ### Albums Endpoints
6
+
7
+ | Endpoint | Description | Coverage Status |
8
+ | -------------------------- | --------------------- | --------------- |
9
+ | GET /v1/albums | Get Several Albums | × Not Started |
10
+ | GET /v1/albums/{id}/tracks | Get an Album's Tracks | × Not Started |
11
+
12
+ ### Artists Endpoints
13
+
14
+ | Endpoint | Description | Coverage Status |
15
+ | ------------------------------------ | ------------------------------- | --------------- |
16
+ | GET /v1/artists | Get Several Artists | × Not Started |
17
+ | GET /v1/artists/{id}/albums | Get an Artist's Albums | × Not Started |
18
+ | GET /v1/artists/{id}/top-tracks | Get an Artist's Top Tracks | × Not Started |
19
+ | GET /v1/artists/{id}/related-artists | Get an Artist's Related Artists | × Not Started |
20
+
21
+ ### Tracks Endpoints
22
+
23
+ | Endpoint | Description | Coverage Status |
24
+ | -------------- | ------------------ | --------------- |
25
+ | GET /v1/tracks | Get Several Tracks | × Not Started |
26
+
27
+ ### Audio Features Endpoints
28
+
29
+ | Endpoint | Description | Coverage Status |
30
+ | --------------------------- | ------------------------------------- | --------------- |
31
+ | GET /v1/audio-features/{id} | Get Audio Features for a Track | × Not Started |
32
+ | GET /v1/audio-features | Get Audio Features for Several Tracks | × Not Started |
33
+
34
+ ### Analysis Endpoints
35
+
36
+ | Endpoint | Description | Coverage Status |
37
+ | --------------------------- | ------------------------------ | --------------- |
38
+ | GET /v1/audio-analysis/{id} | Get Audio Analysis for a Track | × Not Started |
39
+
40
+ ### Search Endpoints
41
+
42
+ | Endpoint | Description | Coverage Status |
43
+ | -------------- | ------------------ | --------------- |
44
+ | GET /v1/search | Search for an Item | × Not Started |
45
+
46
+ ### Users Endpoints
47
+
48
+ | Endpoint | Description | Coverage Status |
49
+ | ----------------------- | -------------------------- | --------------- |
50
+ | GET /v1/users/{user_id} | Get a User's Profile | × |
51
+ | GET /v1/me | Get Current User's Profile | [me/info.rb] |
52
+
53
+ ### Saved Content Endpoints
54
+
55
+ | Endpoint | Description | Coverage Status |
56
+ | -------------------------- | --------------------------------- | --------------- |
57
+ | GET /v1/me/tracks | Get Current User's Saved Tracks | × Not Started |
58
+ | GET /v1/me/tracks/contains | Check Current User's Saved Tracks | × Not Started |
59
+ | PUT /v1/me/tracks | Save Tracks for Current User | × Not Started |
60
+ | DELETE /v1/me/tracks | Remove Tracks for Current User | × Not Started |
61
+ | GET /v1/me/albums | Get Current User's Saved Albums | × Not Started |
62
+ | GET /v1/me/albums/contains | Check Current User's Saved Albums | × Not Started |
63
+ | PUT /v1/me/albums | Save Albums for Current User | × Not Started |
64
+ | DELETE /v1/me/albums | Remove Albums for Current User | × Not Started |
65
+
66
+ ### Discovery Endpoints
67
+
68
+ | Endpoint | Description | Coverage Status |
69
+ | --------------------------------- | -------------------------------- | --------------- |
70
+ | GET /v1/browse/new-releases | Get a List of New Releases | × Not Started |
71
+ | GET /v1/browse/featured-playlists | Get a List of Featured Playlists | × Not Started |
72
+
73
+ ### Categories Endpoints
74
+
75
+ | Endpoint | Description | Coverage Status |
76
+ | ------------------------------------------------- | ------------------------------- | --------------- |
77
+ | GET /v1/browse/categories | Get a List of Browse Categories | × Not Started |
78
+ | GET /v1/browse/categories/{category_id} | Get a Single Browse Category | × Not Started |
79
+ | GET /v1/browse/categories/{category_id}/playlists | Get a Category's playlists | × Not Started |
80
+
81
+ ### Recommendation Endpoints
82
+
83
+ | Endpoint | Description | Coverage Status |
84
+ | --------------------------------------------- | ---------------------------------- | --------------- |
85
+ | GET /v1/recommendations | Get Recommendations Based on Seeds | × Not Started |
86
+ | GET /v1/recommendations/available-genre-seeds | Get Available Genre Seeds | × Not Started |
87
+
88
+ ### Follow Endpoints
89
+
90
+ | Endpoint | Description | Coverage Status |
91
+ | ------------------------------------------------------------------ | ---------------------------------------------- | -------------------------------------------------------------------- |
92
+ | GET /v1/me/following | Get Followed Artists | [me.rb] |
93
+ | GET /v1/me/following/contains | Check if Current User Follows Artists or Users | [me.rb] |
94
+ | PUT /v1/me/following | Follow Artists or Users | [🔘 Partial Support][artist.rb] (Following multiple not supported) |
95
+ | DELETE /v1/me/following | Unfollow Artists or Users | [🔘 Partial Support][artist.rb] (Unfollowing multiple not supported) |
96
+ | GET /v1/users/{user_id}/playlists/{playlist_id}/followers/contains | Check if Users Follow a Playlist | × Not Started |
97
+ | PUT /v1/users/{user_id}/playlists/{playlist_id}/followers | Follow a Playlist | × Not Started |
98
+ | DELETE /v1/users/{user_id}/playlists/{playlist_id}/followers | Unfollow a Playlist | × Not Started |
99
+
100
+ ### Playlists Endpoints
101
+
102
+ | Endpoint | Description | Coverage Status |
103
+ | --------------------------------------------------------- | -------------------------------------- | --------------- |
104
+ | GET /v1/users/{user_id}/playlists | Get a List of a User's Playlists | × Not Started |
105
+ | GET /v1/me/playlists | Get a List of Current User's Playlists | × Not Started |
106
+ | GET /v1/users/{user_id}/playlists/{playlist_id} | Get a Playlist | × Not Started |
107
+ | GET /v1/users/{user_id}/playlists/{playlist_id}/tracks | Get a Playlist's Tracks | × Not Started |
108
+ | POST /v1/users/{user_id}/playlists | Create a Playlist | × Not Started |
109
+ | POST /v1/users/{user_id}/playlists/{playlist_id}/tracks | Add Tracks to a Playlist | × Not Started |
110
+ | DELETE /v1/users/{user_id}/playlists/{playlist_id}/tracks | Remove Tracks from a Playlist | × Not Started |
111
+ | PUT /v1/users/{user_id}/playlists/{playlist_id}/tracks | Reorder or replace a Playlist's Tracks | × Not Started |
112
+ | PUT /v1/users/{user_id}/playlists/{playlist_id} | Change a Playlist's Details | × Not Started |
113
+
114
+ ### History Endpoints
115
+
116
+ | Endpoint | Description | Coverage Status |
117
+ | --------------------------------- | --------------------------------------------- | ----------------------- |
118
+ | GET /v1/me/top/{type} | Get User's Top Artists and Tracks | × Not Started |
119
+ | GET /v1/me/player/recently-played | Get the Current User's Recently Played Tracks | [Full support ✔][me.rb] |
120
+
121
+ ### Connect Endpoints
122
+
123
+ | Endpoint | Description | Coverage Status |
124
+ | ------------------------- | ------------------------------------------------- | ------------------------------------------- |
125
+ | GET /v1/me/player | Get Information About The User's Current Playback | [Full support ✔][connect/playback_state.rb] |
126
+ | GET /v1/me/player/devices | Get a User's Available Devices | [Full support ✔][connect.rb] |
127
+ | PUT /v1/me/player | Transfer a User's Playback | [Full support ✔][connect/device.rb] |
128
+
129
+ ### Player Endpoints
130
+
131
+ | Endpoint | Description | Coverage Status |
132
+ | ----------------------------------- | ------------------------------------------- | ----------------------------------- |
133
+ | GET /v1/me/player/currently-playing | Get the User's Currently Playing Track | × Not implementing |
134
+ | PUT /v1/me/player/play | Start/Resume a User's Playback | [Full support ✔][connect/device.rb] |
135
+ | PUT /v1/me/player/pause | Pause a User's Playback | [Full support ✔][connect/device.rb] |
136
+ | POST /v1/me/player/next | Skip User's Playback To Next Track | [Full support ✔][connect/device.rb] |
137
+ | POST /v1/me/player/previous | Skip User's Playback To Previous Track | [Full support ✔][connect/device.rb] |
138
+ | PUT /v1/me/player/seek | Seek To Position In Currently Playing Track | [Full support ✔][connect/device.rb] |
139
+ | PUT /v1/me/player/repeat | Set Repeat Mode On User's Playback | [Full support ✔][connect/device.rb] |
140
+ | PUT /v1/me/player/volume | Set Volume For User's Playback | [Full support ✔][connect/device.rb] |
141
+ | PUT /v1/me/player/shuffle | Toggle Shuffle For User's Playback | [Full support ✔][connect/device.rb] |
142
+
143
+ [connect.rb]: /lib/spotify/sdk/connect.rb
144
+ [connect/playback_state.rb]: /lib/spotify/sdk/connect/playback_state.rb
145
+ [connect/device.rb]: /lib/spotify/sdk/connect/device.rb
146
+ [artist.rb]: /lib/spotify/sdk/artist.rb
147
+ [me.rb]: /lib/spotify/sdk/me.rb
148
+ [me/info.rb]: /lib/spotify/sdk/me/info.rb