discogs-wrapper 2.1.1 → 2.1.2
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 +4 -4
- data/README.markdown +65 -55
- data/lib/wrapper/authentication.rb +5 -5
- data/lib/wrapper/wrapper.rb +2 -3
- data/spec/wrapper_methods/search_spec.rb +3 -3
- data/spec/wrapper_spec.rb +1 -1
- metadata +43 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c264470609e42cec3b34d3e3f26eee0ee2ec98ea
|
4
|
+
data.tar.gz: 988c6e27cd78fe56077489ffeb9a59ae1cfedd66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3fa923afa4b681feffb684b62ca7a3c98d2aa6c3771a47e534f1b38db6cdd824807fe2863865b6ba55f2d8e08d0467780d443a39078a77d389ae86b167ccc600
|
7
|
+
data.tar.gz: 0788c097b724e9a510bf3a341d6c174bdb25650b5c3eddee0af1ac787d3e5906d68655b9817362a5b158d2d595ed07186ad856b79509ddf970be5ba6ea81f883
|
data/README.markdown
CHANGED
@@ -3,7 +3,7 @@ Discogs::Wrapper
|
|
3
3
|
|
4
4
|
ABOUT
|
5
5
|
-----
|
6
|
-
A
|
6
|
+
A Ruby wrapper of the Discogs.com API v2.0.
|
7
7
|
|
8
8
|
Discogs::Wrapper abstracts all of the boilerplate code needed to interact with the Discogs API. It gives you direct access to the information you need. All methods return a ruby Hash wrapped in a [Hashie](https://github.com/intridea/hashie) object with the same structure as documented on the [Discogs API website](http://www.discogs.com/developers/index.html).
|
9
9
|
|
@@ -39,7 +39,7 @@ INSTALLATION
|
|
39
39
|
|
40
40
|
$ gem install discogs-wrapper
|
41
41
|
|
42
|
-
Or
|
42
|
+
Or, if you are using Bundler:
|
43
43
|
|
44
44
|
gem "discogs-wrapper"
|
45
45
|
|
@@ -47,40 +47,44 @@ USAGE
|
|
47
47
|
-----
|
48
48
|
To use this library, you must supply the name of your application. For example:
|
49
49
|
|
50
|
-
|
50
|
+
```ruby
|
51
|
+
wrapper = Discogs::Wrapper.new("My awesome web app")
|
52
|
+
```
|
51
53
|
|
52
54
|
Accessing information is easy:
|
53
55
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
56
|
+
```ruby
|
57
|
+
artist = wrapper.get_artist("329937")
|
58
|
+
artist_releases = wrapper.get_artist_releases("329937")
|
59
|
+
release = wrapper.get_release("1529724")
|
60
|
+
label = wrapper.get_label("29515")
|
58
61
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
+
# You must be authenticated in order to search. I provide a few ways to do this. See the AUTHENTICATION section below.
|
63
|
+
auth_wrapper = Discogs::Wrapper.new("My awesome web app", user_token: "my_user_token")
|
64
|
+
search = auth_wrapper.search("Necrovore", :per_page => 10, :type => :artist)
|
62
65
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
66
|
+
artist.name # => "Manilla Road"
|
67
|
+
artist.members.count # => 4
|
68
|
+
artist.members.first.name # => "Mark Shelton"
|
69
|
+
artist.profile # => "Heavy Metal band from ..."
|
67
70
|
|
68
|
-
|
69
|
-
|
71
|
+
artist_releases.releases.count # => 35
|
72
|
+
artist_releases.releases.first.title # => "Invasion"
|
70
73
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
74
|
+
release.title # => "Medieval"
|
75
|
+
release.labels.first.name # => "New Renaissance Records"
|
76
|
+
release.formats[0].descriptions[0] # => "12\""
|
77
|
+
release.styles # => [ "Heavy Metal", "Doom Metal" ]
|
78
|
+
release.tracklist[1].title # => "Death is Beauty"
|
76
79
|
|
77
|
-
|
78
|
-
|
80
|
+
label.name # => "Monitor (2)"
|
81
|
+
label.sublabels.count # => 3
|
79
82
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
83
|
+
search.pagination.items # => 2
|
84
|
+
search.results.first.title # => "Necrovore"
|
85
|
+
search.results.first.type # => "artist"
|
86
|
+
search.results.first.id # => 691078
|
87
|
+
```
|
84
88
|
|
85
89
|
Many of the API endpoints return further URLs that will yield specific data. To cater for this, the library provides a "raw" method that accepts a valid API URL. For example:
|
86
90
|
|
@@ -96,9 +100,9 @@ AUTHENTICATION
|
|
96
100
|
--------------
|
97
101
|
Many of the API endpoints require the user to be authenticated via oAuth. The library provides support for this.
|
98
102
|
|
99
|
-
For non user-facing apps (when you only want to authenticate as yourself), you can simply pass your
|
103
|
+
For non user-facing apps (when you only want to authenticate as yourself), you can simply pass your user token (generated from your API dashboard) to the constructor. For example:
|
100
104
|
|
101
|
-
wrapper = Discogs::Wrapper.new("Test OAuth",
|
105
|
+
wrapper = Discogs::Wrapper.new("Test OAuth", user_token: "my_user_token")
|
102
106
|
results = wrapper.search("Nick Cave")
|
103
107
|
|
104
108
|
For user-facing apps, I've provided [a simple Rails application](https://github.com/buntine/discogs-oauth) that demonstrates how to perform authenticated requests.
|
@@ -107,37 +111,39 @@ AUTHENTICATION
|
|
107
111
|
|
108
112
|
Basically, you should preform the "oAuth dance" like so:
|
109
113
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
+
```ruby
|
115
|
+
# Add an action to initiate the process.
|
116
|
+
def authenticate
|
117
|
+
@discogs = Discogs::Wrapper.new("Test OAuth")
|
118
|
+
request_data = @discogs.get_request_token("YOUR_APP_KEY", "YOUR_APP_SECRET", "http://127.0.0.1:3000/callback")
|
114
119
|
|
115
|
-
|
120
|
+
session[:request_token] = request_data[:request_token]
|
116
121
|
|
117
|
-
|
118
|
-
|
122
|
+
redirect_to request_data[:authorize_url]
|
123
|
+
end
|
119
124
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
125
|
+
# And an action that Discogs will redirect back to.
|
126
|
+
def callback
|
127
|
+
@discogs = Discogs::Wrapper.new("Test OAuth")
|
128
|
+
request_token = session[:request_token]
|
129
|
+
verifier = params[:oauth_verifier]
|
130
|
+
access_token = @discogs.authenticate(request_token, verifier)
|
126
131
|
|
127
|
-
|
128
|
-
|
132
|
+
session[:request_token] = nil
|
133
|
+
session[:access_token] = access_token
|
129
134
|
|
130
|
-
|
135
|
+
@discogs.access_token = access_token
|
131
136
|
|
132
|
-
|
133
|
-
|
137
|
+
# You can now perform authenticated requests.
|
138
|
+
end
|
134
139
|
|
135
|
-
|
136
|
-
|
137
|
-
|
140
|
+
# Once you have it, you can also pass your access_token into the constructor.
|
141
|
+
def another_action
|
142
|
+
@discogs = Discogs::Wrapper.new("Test OAuth", access_token: session[:access_token])
|
138
143
|
|
139
|
-
|
140
|
-
|
144
|
+
# You can now perform authenticated requests.
|
145
|
+
end
|
146
|
+
```
|
141
147
|
|
142
148
|
PAGINATION
|
143
149
|
----------
|
@@ -145,11 +151,15 @@ PAGINATION
|
|
145
151
|
|
146
152
|
Page defaults to 1, page size defaults to 50.
|
147
153
|
|
148
|
-
|
154
|
+
```ruby
|
155
|
+
wrapper.get_artist_releases(345211, :page => 2, :per_page => 10)
|
156
|
+
```
|
149
157
|
|
150
158
|
If other params are accepted, they can also be passed:
|
151
159
|
|
152
|
-
|
160
|
+
```ruby
|
161
|
+
wrapper.get_user_inventory("username", :page => 3, :sort => "price", :sort_order => "asc")
|
162
|
+
```
|
153
163
|
|
154
164
|
LICENSE
|
155
165
|
-----
|
@@ -157,4 +167,4 @@ LICENSE
|
|
157
167
|
|
158
168
|
CONTRIBUTORS
|
159
169
|
------------
|
160
|
-
|
170
|
+
[Thank you for the support](https://github.com/buntine/discogs/graphs/contributors)
|
@@ -4,7 +4,7 @@ module Authentication
|
|
4
4
|
|
5
5
|
def auth_params
|
6
6
|
if self_authenticating?
|
7
|
-
{:
|
7
|
+
{:token => @user_token}
|
8
8
|
else
|
9
9
|
{}
|
10
10
|
end
|
@@ -19,7 +19,7 @@ module Authentication
|
|
19
19
|
# Indicates whether this instance is self-authenticated.
|
20
20
|
# @return [Boolean]
|
21
21
|
def self_authenticating?
|
22
|
-
|
22
|
+
!!@user_token
|
23
23
|
end
|
24
24
|
|
25
25
|
# @return [Boolean]
|
@@ -34,9 +34,9 @@ module Authentication
|
|
34
34
|
# @param app_secret [String] application secret
|
35
35
|
# @return [Hash] containing a :request_token that should be stored locally and a :authorize_url that the user must browse to.
|
36
36
|
def get_request_token(app_key, app_secret, callback)
|
37
|
-
consumer
|
38
|
-
|
39
|
-
|
37
|
+
consumer = OAuth::Consumer.new(app_key, app_secret,
|
38
|
+
:authorize_url => "http://www.discogs.com/oauth/authorize",
|
39
|
+
:site => "https://api.discogs.com")
|
40
40
|
request_token = consumer.get_request_token(:oauth_callback => callback)
|
41
41
|
|
42
42
|
{:request_token => request_token,
|
data/lib/wrapper/wrapper.rb
CHANGED
@@ -17,7 +17,7 @@ class Discogs::Wrapper
|
|
17
17
|
@@root_host = "https://api.discogs.com"
|
18
18
|
|
19
19
|
attr_reader :app_name
|
20
|
-
attr_accessor :access_token, :
|
20
|
+
attr_accessor :access_token, :user_token
|
21
21
|
|
22
22
|
def initialize(app_name, auth_opts={})
|
23
23
|
@app_name = app_name
|
@@ -25,8 +25,7 @@ class Discogs::Wrapper
|
|
25
25
|
# Allow for backwards-compatibility with v2.0.0
|
26
26
|
if auth_opts.is_a?(Hash)
|
27
27
|
@access_token = auth_opts[:access_token]
|
28
|
-
@
|
29
|
-
@app_secret = auth_opts[:app_secret]
|
28
|
+
@user_token = auth_opts[:user_token]
|
30
29
|
else
|
31
30
|
@access_token = auth_opts
|
32
31
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Discogs::Wrapper do
|
4
4
|
|
5
5
|
before do
|
6
|
-
@wrapper = Discogs::Wrapper.new("some_user_agent")
|
6
|
+
@wrapper = Discogs::Wrapper.new("some_user_agent", :user_token => "token")
|
7
7
|
@search_term = "Winter Falls Over the Land"
|
8
8
|
@search_type = "release"
|
9
9
|
end
|
@@ -11,7 +11,7 @@ describe Discogs::Wrapper do
|
|
11
11
|
describe "when handling an advanced search" do
|
12
12
|
|
13
13
|
it "should properly encode the request URI" do
|
14
|
-
encoded_uri = "/database/search?f=json&q=Release+Title+artist%3AArtist+Name&type=release"
|
14
|
+
encoded_uri = "/database/search?f=json&q=Release+Title+artist%3AArtist+Name&token=token&type=release"
|
15
15
|
get = Net::HTTP::Get.new(encoded_uri)
|
16
16
|
Net::HTTP::Get.should_receive(:new).with(encoded_uri).and_return(get)
|
17
17
|
|
@@ -23,7 +23,7 @@ describe Discogs::Wrapper do
|
|
23
23
|
describe "when handling a search including whitespace" do
|
24
24
|
|
25
25
|
it "should properly encode spaces in the request URI" do
|
26
|
-
encoded_uri = "/database/search?f=json&q=One+Two"
|
26
|
+
encoded_uri = "/database/search?f=json&q=One+Two&token=token"
|
27
27
|
get = Net::HTTP::Get.new(encoded_uri)
|
28
28
|
Net::HTTP::Get.should_receive(:new).with(encoded_uri).and_return(get)
|
29
29
|
|
data/spec/wrapper_spec.rb
CHANGED
@@ -39,7 +39,7 @@ describe Discogs::Wrapper do
|
|
39
39
|
|
40
40
|
describe "requested URIs" do
|
41
41
|
before do
|
42
|
-
@uri = mock("uri", :host => "", :query => "", :path => "")
|
42
|
+
@uri = mock("uri", :host => "", :query => "", :path => "", :port => "", :scheme => "")
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should generate the correct release URL to parse" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: discogs-wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Buntine
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-07-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pry
|
@@ -71,16 +71,16 @@ dependencies:
|
|
71
71
|
name: hashie
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - "
|
74
|
+
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '
|
76
|
+
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - "
|
81
|
+
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '
|
83
|
+
version: '0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: oauth
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -175,56 +175,56 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
175
|
version: '0'
|
176
176
|
requirements: []
|
177
177
|
rubyforge_project:
|
178
|
-
rubygems_version: 2.4.
|
178
|
+
rubygems_version: 2.4.8
|
179
179
|
signing_key:
|
180
180
|
specification_version: 4
|
181
181
|
summary: Discogs::Wrapper is a full wrapper for the http://www.discogs.com API V2
|
182
182
|
test_files:
|
183
|
-
- spec/
|
184
|
-
- spec/
|
185
|
-
- spec/wrapper_methods/
|
186
|
-
- spec/wrapper_methods/
|
187
|
-
- spec/wrapper_methods/get_label_releases_spec.rb
|
188
|
-
- spec/wrapper_methods/get_user_folders_spec.rb
|
183
|
+
- spec/wrapper_spec.rb
|
184
|
+
- spec/spec_helper.rb
|
185
|
+
- spec/wrapper_methods/get_user_folder_spec.rb
|
186
|
+
- spec/wrapper_methods/get_user_spec.rb
|
189
187
|
- spec/wrapper_methods/get_user_wantlist_spec.rb
|
190
|
-
- spec/wrapper_methods/get_label_spec.rb
|
191
|
-
- spec/wrapper_methods/get_order_messages_spec.rb
|
192
|
-
- spec/wrapper_methods/edit_release_in_user_wantlist_spec.rb
|
193
|
-
- spec/wrapper_methods/get_release_spec.rb
|
194
|
-
- spec/wrapper_methods/get_identity_spec.rb
|
195
|
-
- spec/wrapper_methods/get_listing_spec.rb
|
196
188
|
- spec/wrapper_methods/get_master_release_versions_spec.rb
|
189
|
+
- spec/wrapper_methods/search_spec.rb
|
190
|
+
- spec/wrapper_methods/get_user_collection_spec.rb
|
191
|
+
- spec/wrapper_methods/get_order_spec.rb
|
192
|
+
- spec/wrapper_methods/get_listing_spec.rb
|
197
193
|
- spec/wrapper_methods/get_price_suggestions_spec.rb
|
194
|
+
- spec/wrapper_methods/add_release_to_user_wantlist_spec.rb
|
198
195
|
- spec/wrapper_methods/get_master_release_spec.rb
|
199
|
-
- spec/wrapper_methods/
|
200
|
-
- spec/wrapper_methods/
|
201
|
-
- spec/wrapper_methods/
|
196
|
+
- spec/wrapper_methods/get_release_spec.rb
|
197
|
+
- spec/wrapper_methods/get_order_messages_spec.rb
|
198
|
+
- spec/wrapper_methods/get_identity_spec.rb
|
199
|
+
- spec/wrapper_methods/get_artist_spec.rb
|
202
200
|
- spec/wrapper_methods/edit_user_spec.rb
|
203
|
-
- spec/wrapper_methods/
|
204
|
-
- spec/wrapper_methods/
|
205
|
-
- spec/
|
201
|
+
- spec/wrapper_methods/get_artist_releases_spec.rb
|
202
|
+
- spec/wrapper_methods/edit_release_in_user_wantlist_spec.rb
|
203
|
+
- spec/wrapper_methods/get_user_folders_spec.rb
|
204
|
+
- spec/wrapper_methods/get_user_inventory_spec.rb
|
205
|
+
- spec/wrapper_methods/get_label_spec.rb
|
206
|
+
- spec/wrapper_methods/get_label_releases_spec.rb
|
206
207
|
- spec/samples/valid_user_wantlist.json
|
207
|
-
- spec/samples/valid_artist.json
|
208
|
-
- spec/samples/valid_master_release.json
|
209
|
-
- spec/samples/valid_master_release_versions.json
|
210
|
-
- spec/samples/valid_label.json
|
211
208
|
- spec/samples/valid_search_results.json
|
212
|
-
- spec/samples/
|
213
|
-
- spec/samples/valid_artist_releases.json
|
214
|
-
- spec/samples/valid_order.json
|
215
|
-
- spec/samples/valid_user_collection.json
|
216
|
-
- spec/samples/valid_order_messages.json
|
209
|
+
- spec/samples/valid_fields.json
|
217
210
|
- spec/samples/valid_user_folder.json
|
211
|
+
- spec/samples/valid_user_collection.json
|
212
|
+
- spec/samples/valid_artist_releases.json
|
213
|
+
- spec/samples/valid_master_release.json
|
214
|
+
- spec/samples/valid_folder.json
|
215
|
+
- spec/samples/valid_price_suggestions.json
|
218
216
|
- spec/samples/valid_listing.json
|
219
|
-
- spec/samples/
|
217
|
+
- spec/samples/valid_order_messages.json
|
220
218
|
- spec/samples/valid_wantlist_release.json
|
221
|
-
- spec/samples/valid_price_suggestions.json
|
222
|
-
- spec/samples/valid_fields.json
|
223
|
-
- spec/samples/valid_user_inventory.json
|
224
|
-
- spec/samples/valid_user_profile.json
|
225
|
-
- spec/samples/valid_user_folders.json
|
226
|
-
- spec/samples/valid_release.json
|
227
219
|
- spec/samples/valid_label_releases.json
|
220
|
+
- spec/samples/valid_label.json
|
221
|
+
- spec/samples/valid_user_profile.json
|
222
|
+
- spec/samples/valid_user_inventory.json
|
223
|
+
- spec/samples/valid_identity.json
|
228
224
|
- spec/samples/valid_user.json
|
229
|
-
- spec/
|
230
|
-
- spec/
|
225
|
+
- spec/samples/valid_master_release_versions.json
|
226
|
+
- spec/samples/valid_artist.json
|
227
|
+
- spec/samples/valid_release.json
|
228
|
+
- spec/samples/valid_user_folders.json
|
229
|
+
- spec/samples/valid_order.json
|
230
|
+
- spec/samples/valid_orders.json
|