├── .github └── workflows │ └── test.yml ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── UPGRADE.md ├── composer.json ├── lib └── Discogs │ ├── ClientFactory.php │ └── Subscriber │ └── ThrottleSubscriber.php ├── phpunit.xml.dist ├── resources └── service.php └── tests ├── Discogs └── Test │ ├── ClientFactoryTest.php │ ├── ClientTest.php │ └── Subscriber │ └── ThrottleSubscriberTest.php ├── bootstrap.php └── fixtures ├── add_order_message ├── change_listing ├── change_order ├── create_listing ├── delete_listing ├── get_artist ├── get_artist_releases ├── get_collection_folder ├── get_collection_folders ├── get_collection_items_by_folder ├── get_inventory ├── get_label ├── get_label_releases ├── get_listing ├── get_master ├── get_master_versions ├── get_oauth_identity ├── get_order ├── get_orders ├── get_profile ├── get_release └── search /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | push: 5 | 6 | jobs: 7 | run: 8 | name: PHPUnit 9 | runs-on: 'ubuntu-latest' 10 | strategy: 11 | matrix: 12 | php-versions: 13 | - 5.4 14 | - 5.5 15 | - 5.6 16 | - 7.0 17 | - 7.4 18 | 19 | steps: 20 | - uses: actions/checkout@v2 21 | 22 | - name: Setup PHP 23 | uses: shivammathur/setup-php@v2 24 | with: 25 | php-version: ${{ matrix.php-versions }} 26 | coverage: xdebug 27 | tools: composer:v1 28 | 29 | - name: Install composer dependencies 30 | uses: ramsey/composer-install@v2 31 | 32 | - name: Run PHPUnit 33 | run: vendor/bin/phpunit 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | vendor 3 | composer.lock 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - 5.4 5 | - 5.5 6 | - 5.6 7 | - 7.0 8 | - hhvm 9 | 10 | matrix: 11 | allow_failures: 12 | - php: hhvm 13 | 14 | notifications: 15 | email: 16 | - richard@vandenbrand.org 17 | 18 | before_script: 19 | - wget http://getcomposer.org/composer.phar 20 | - php composer.phar install 21 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010-2014 Richard van den Brand 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Discogs Api 2 | 3 | [![Build Status](https://secure.travis-ci.org/ricbra/php-discogs-api.png)](http://travis-ci.org/ricbra/php-discogs-api) 4 | [![Latest Stable Version](https://poser.pugx.org/ricbra/php-discogs-api/v/stable.svg)](https://packagist.org/packages/ricbra/php-discogs-api) 5 | [![Total Downloads](https://poser.pugx.org/ricbra/php-discogs-api/downloads.png)](https://packagist.org/packages/ricbra/php-discogs-api) 6 | [![License](https://poser.pugx.org/ricbra/php-discogs-api/license.png)](https://packagist.org/packages/ricbra/php-discogs-api) 7 | [![Quality](https://scrutinizer-ci.com/g/ricbra/php-discogs-api/badges/quality-score.png)](https://scrutinizer-ci.com/g/ricbra/php-discogs-api/) 8 | 9 | This library is a PHP 5.4 implementation of the [Discogs API v2.0.](http://www.discogs.com/developers/index.html) 10 | The Discogs API is a REST-based interface. By using this library you don't have to worry about communicating with the 11 | API: all the hard work has already be done. 12 | 13 | This API is build upon the shoulders of a giant: [Guzzle 4.0](http://guzzle.readthedocs.org/en/latest/). This is an absolutely awesome library. 14 | 15 | # Deprecated 16 | 17 | This repository is outdated and not maintained anymore. Please see https://github.com/calliostro/php-discogs-api for a more up to date version. 18 | 19 | ## License 20 | This library is released under the MIT license. See the complete license in the LICENSE file. 21 | 22 | ## Installation 23 | Start by [installing composer](http://getcomposer.org/doc/01-basic-usage.md#installation). 24 | Next do: 25 | 26 | $ composer require ricbra/php-discogs-api 27 | 28 | ## Requirements 29 | PHP >=5.4.0 30 | 31 | ## Usage 32 | Creating a new instance is as simple as: 33 | 34 | ```php 35 | [ 46 | 'headers' => ['User-Agent' => 'your-app-name/0.1 +https://www.awesomesite.com'], 47 | ] 48 | ]); 49 | ``` 50 | 51 | ### Throttling 52 | Discogs doesn't like it when you hit their API at a too high connection rate. Use the ThrottleSubscriber to 53 | prevent getting errors or banned: 54 | 55 | ```php 56 | getHttpClient()->getEmitter()->attach(new Discogs\Subscriber\ThrottleSubscriber()); 60 | 61 | ``` 62 | 63 | #### Authentication 64 | 65 | Discogs API allow to access protected endpoints with either a simple [Discogs Auth Flow](https://www.discogs.com/developers/#page:authentication,header:authentication-discogs-auth-flow) or a more advanced (and more complex) [Oauth Flow](https://www.discogs.com/developers/#page:authentication,header:authentication-oauth-flow) 66 | 67 | ### Discogs Auth 68 | 69 | As stated in the Discogs Authentication documentation: 70 | > In order to access protected endpoints, you’ll need to register for either a consumer key and secret or user token, depending on your situation: 71 | > - To easily access your own user account information, use a *User token*. 72 | > - To get access to an endpoint that requires authentication and build 3rd party apps, use a *Consumer Key and Secret*. 73 | 74 | With the Discogs Php API you can add your credentials to each request by adding a `query` key to your own defaults like this: 75 | ```php 76 | $client = ClientFactory::factory([ 77 | 'defaults' => [ 78 | 'query' => [ 79 | 'key' => 'my-key', 80 | 'secret' => 'my-secret', 81 | ], 82 | ] 83 | ]); 84 | ``` 85 | 86 | ### OAuth 87 | There are a lot of endpoints which require OAuth. Lucky for you using Guzzle this is peanuts. If you're having trouble obtaining the token and token_secret, please check out my [example implementation](https://github.com/ricbra/php-discogs-api-example). 88 | 89 | ```php 90 | $consumerKey, // from Discogs developer page 95 | 'consumer_secret' => $consumerSecret, // from Discogs developer page 96 | 'token' => $token['oauth_token'], // get this using a OAuth library 97 | 'token_secret' => $token['oauth_token_secret'] // get this using a OAuth library 98 | ]); 99 | $client->getHttpClient()->getEmitter()->attach($oauth); 100 | 101 | $response = $client->search([ 102 | 'q' => 'searchstring' 103 | ]); 104 | ``` 105 | 106 | ### History 107 | Another cool plugin is the History plugin: 108 | 109 | ```php 110 | getHttpClient()->getEmitter()->attach($history); 115 | 116 | $response = $client->search([ 117 | 'q' => 'searchstring' 118 | ]); 119 | 120 | foreach ($history as $row) { 121 | print (string) $row['request']; 122 | print (string) $row['response']; 123 | } 124 | 125 | ``` 126 | 127 | ### More info and plugins 128 | For more information about Guzzle and its plugins checkout [the docs.](http://guzzle.readthedocs.org/en/latest/) 129 | 130 | ### Perform a search: 131 | Per august 2014 a signed OAuth request is required for this endpoint. 132 | 133 | ```php 134 | search([ 137 | 'q' => 'Meagashira' 138 | ]); 139 | // Loop through results 140 | foreach ($response['results'] as $result) { 141 | var_dump($result['title']); 142 | } 143 | // Pagination data 144 | var_dump($response['pagination']); 145 | 146 | // Dump all data 147 | var_dump($response->toArray()); 148 | 149 | ``` 150 | 151 | ### Get information about a label: 152 | 153 | ```php 154 | getLabel([ 157 | 'id' => 1 158 | ]); 159 | 160 | ``` 161 | 162 | ### Get information about an artist: 163 | 164 | ```php 165 | getArtist([ 168 | 'id' => 1 169 | ]); 170 | 171 | ``` 172 | 173 | ### Get information about a release: 174 | 175 | ```php 176 | getRelease([ 179 | 'id' => 1 180 | ]); 181 | 182 | echo $release['title']."\n"; 183 | ``` 184 | 185 | ### Get information about a master release: 186 | 187 | ```php 188 | getMaster([ 191 | 'id' => 1 192 | ]); 193 | 194 | echo $master['title']."\n"; 195 | ``` 196 | 197 | ### Get image 198 | 199 | Discogs returns the full url to images so just use the internal client to get those: 200 | 201 | ``` 202 | php 203 | 204 | $release = $client->getRelease([ 205 | 'id' => 1 206 | ]); 207 | foreach ($release['images'] as $image) { 208 | $response = $client->getHttpClient()->get($image['uri']); 209 | // response code 210 | echo $response->getStatusCode(); 211 | // image blob itself 212 | echo $client->getHttpClient()->get($image['uri'])->getBody()->getContents(); 213 | } 214 | 215 | ``` 216 | 217 | ### User Collection 218 | 219 | Authorization is required when `folder_id` is not `0`. 220 | 221 | #### Get collection folders 222 | 223 | ```php 224 | getCollectionFolders([ 227 | 'username' => 'example' 228 | ]); 229 | ``` 230 | 231 | #### Get collection folder 232 | 233 | 234 | ```php 235 | getCollectionFolder([ 238 | 'username' => 'example', 239 | 'folder_id' => 1 240 | ]); 241 | ``` 242 | 243 | #### Get collection items by folder 244 | 245 | ```php 246 | getCollectionItemsByFolder([ 249 | 'username' => 'example', 250 | 'folder_id' => 3 251 | ]); 252 | ``` 253 | 254 | ## Documentation 255 | Further documentation can be found at the [Discogs API v2.0 Documentation](http://www.discogs.com/developers/index.html). 256 | 257 | ## Contributing 258 | Implemented a missing call? PR's are welcome! 259 | 260 | 261 | [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/ricbra/php-discogs-api/trend.png)](https://bitdeli.com/free "Bitdeli Badge") 262 | 263 | -------------------------------------------------------------------------------- /UPGRADE.md: -------------------------------------------------------------------------------- 1 | Upgrade from 0.x.x to 1.0.0 2 | =========================== 3 | 4 | API calls 5 | --------- 6 | 7 | All API calls signatures have changed. Old situation: 8 | 9 | getArtist(1); 12 | 13 | New situation is always using arrays: 14 | 15 | getArtist([ 18 | 'id' => 1 19 | ]); 20 | 21 | In the resources/service.php file you can find all the implemented calls and their signatures and responses. 22 | 23 | Iterator removed 24 | ---------------- 25 | 26 | It's not yet possible to iterate over the responses. Perhaps this will be added in the near future. It should be 27 | easy to implement an Iterator yourself. PR's are welcome :). 28 | 29 | Caching removed 30 | --------------- 31 | 32 | Caching in the library itself is removed. This can be achieved by creating or using a cache plugin. At the moment of 33 | writing the plugin for Guzzle isn't refactored yet for version 4.0. 34 | 35 | No more models 36 | -------------- 37 | 38 | Models have been replaced with plain old arrays. Models were nice for typing but a hell to manage. All responses will 39 | return an array. When you want to debug the output use $response->toArray(). 40 | 41 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ricbra/php-discogs-api", 3 | "description": "The Discogs API makes it easy for developers to communicate with the Discogs platform", 4 | "type": "library", 5 | "keywords": ["discogs", "api"], 6 | "license": "MIT", 7 | "require": { 8 | "php": ">=5.4.0", 9 | "guzzlehttp/guzzle": "~5.0", 10 | "guzzlehttp/guzzle-services": "~0.5.0", 11 | "guzzlehttp/oauth-subscriber": "~0.2" 12 | }, 13 | "require-dev": { 14 | "phpunit/phpunit": "~4" 15 | }, 16 | "authors": [ 17 | { 18 | "name": "Richard van den Brand", 19 | "email": "richard@vandenbrand.org" 20 | } 21 | ], 22 | "autoload": { 23 | "psr-0": { "Discogs": "lib/" } 24 | }, 25 | "extra": { 26 | "branch-alias": { 27 | "dev-master": "1.0.x-dev" 28 | } 29 | }, 30 | "suggest": { 31 | "ricbra/discogs-bundle": "For integrating Discogs into Symfony2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /lib/Discogs/ClientFactory.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * For the full copyright and license information, please view the LICENSE 8 | * file that was distributed with this source code. 9 | */ 10 | 11 | namespace Discogs; 12 | 13 | use GuzzleHttp\Client; 14 | use GuzzleHttp\Command\Guzzle\Description; 15 | use GuzzleHttp\Command\Guzzle\GuzzleClient; 16 | 17 | class ClientFactory 18 | { 19 | public static function factory(array $config = []) 20 | { 21 | $defaultConfig = [ 22 | 'defaults' => [ 23 | 'headers' => ['User-Agent' => 'php-discogs-api/1.0.0 +https://github.com/ricbra/php-discogs-api'], 24 | 'auth' => 'oauth' 25 | ], 26 | ]; 27 | 28 | $client = new Client(self::mergeRecursive($defaultConfig, $config)); 29 | $service = include __DIR__ . '/../../resources/service.php'; 30 | $description = new Description($service); 31 | 32 | return new GuzzleClient($client, $description); 33 | } 34 | 35 | public static function &mergeRecursive(array &$array1, &$array2 = null) 36 | { 37 | $merged = $array1; 38 | 39 | if (is_array($array2)) { 40 | foreach ($array2 as $key => $val) { 41 | if (is_array($array2[$key])) { 42 | $merged[$key] = isset($merged[$key]) && is_array($merged[$key]) ? self::mergeRecursive($merged[$key], $array2[$key]) : $array2[$key]; 43 | } else { 44 | $merged[$key] = $val; 45 | } 46 | } 47 | } 48 | 49 | return $merged; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /lib/Discogs/Subscriber/ThrottleSubscriber.php: -------------------------------------------------------------------------------- 1 | throttle = (int) $throttle; 22 | } 23 | 24 | public function getEvents() 25 | { 26 | return [ 27 | 'complete' => ['onComplete'] 28 | ]; 29 | } 30 | 31 | public function onComplete(CompleteEvent $event) 32 | { 33 | $now = microtime(true); 34 | $wait = self::$previousTimestamp + $this->throttle - $now; 35 | 36 | if ($wait > 0) { 37 | usleep($wait); 38 | } 39 | 40 | self::$previousTimestamp = microtime(true); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | tests/Discogs/ 7 | 8 | 9 | 10 | 11 | 12 | lib/Discogs/ 13 | 14 | 15 | -------------------------------------------------------------------------------- /resources/service.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * For the full copyright and license information, please view the LICENSE 8 | * file that was distributed with this source code. 9 | */ 10 | 11 | return [ 12 | 'baseUrl' => 'https://api.discogs.com/', 13 | 'operations' => [ 14 | 'getArtist' => [ 15 | 'httpMethod' => 'GET', 16 | 'uri' => 'artists/{id}', 17 | 'responseModel' => 'GetResponse', 18 | 'parameters' => [ 19 | 'id' => [ 20 | 'type' => 'string', 21 | 'location' => 'uri', 22 | 'required' => true 23 | ] 24 | ] 25 | ], 26 | 'getArtistReleases' => [ 27 | 'httpMethod' => 'GET', 28 | 'uri' => 'artists/{id}/releases', 29 | 'responseModel' => 'GetResponse', 30 | 'parameters' => [ 31 | 'id' => [ 32 | 'type' => 'string', 33 | 'location' => 'uri', 34 | 'required' => true 35 | ], 36 | 'per_page' => [ 37 | 'type' => 'integer', 38 | 'location' => 'query', 39 | 'required' => false 40 | ], 41 | 'page' => [ 42 | 'type' => 'integer', 43 | 'location' => 'query', 44 | 'required' => false 45 | ] 46 | ] 47 | ], 48 | 'search' => [ 49 | 'httpMethod' => 'GET', 50 | 'uri' => 'database/search', 51 | 'responseModel' => 'GetResponse', 52 | 'parameters' => [ 53 | 'q' => [ 54 | 'type' => 'string', 55 | 'location' => 'query', 56 | 'required' => false 57 | ], 58 | 'type' => [ 59 | 'type' => 'string', 60 | 'location' => 'query', 61 | 'required' => false 62 | ], 63 | 'title' => [ 64 | 'type' => 'string', 65 | 'location' => 'query', 66 | 'required' => false 67 | ], 68 | 'release_title' => [ 69 | 'type' => 'string', 70 | 'location' => 'query', 71 | 'required' => false 72 | ], 73 | 'credit' => [ 74 | 'type' => 'string', 75 | 'location' => 'query', 76 | 'required' => false 77 | ], 78 | 'artist' => [ 79 | 'type' => 'string', 80 | 'location' => 'query', 81 | 'required' => false 82 | ], 83 | 'anv' => [ 84 | 'type' => 'string', 85 | 'location' => 'query', 86 | 'required' => false 87 | ], 88 | 'label' => [ 89 | 'type' => 'string', 90 | 'location' => 'query', 91 | 'required' => false 92 | ], 93 | 'genre' => [ 94 | 'type' => 'string', 95 | 'location' => 'query', 96 | 'required' => false 97 | ], 98 | 'style' => [ 99 | 'type' => 'string', 100 | 'location' => 'query', 101 | 'required' => false 102 | ], 103 | 'country' => [ 104 | 'type' => 'string', 105 | 'location' => 'query', 106 | 'required' => false 107 | ], 108 | 'year' => [ 109 | 'type' => 'string', 110 | 'location' => 'query', 111 | 'required' => false 112 | ], 113 | 'format' => [ 114 | 'type' => 'string', 115 | 'location' => 'query', 116 | 'required' => false 117 | ], 118 | 'catno' => [ 119 | 'type' => 'string', 120 | 'location' => 'query', 121 | 'required' => false 122 | ], 123 | 'barcode' => [ 124 | 'type' => 'string', 125 | 'location' => 'query', 126 | 'required' => false 127 | ], 128 | 'track' => [ 129 | 'type' => 'string', 130 | 'location' => 'query', 131 | 'required' => false 132 | ], 133 | 'submitter' => [ 134 | 'type' => 'string', 135 | 'location' => 'query', 136 | 'required' => false 137 | ], 138 | 'contributor' => [ 139 | 'type' => 'string', 140 | 'location' => 'query', 141 | 'required' => false 142 | ], 143 | 'per_page' => [ 144 | 'type' => 'integer', 145 | 'location' => 'query', 146 | 'required' => false 147 | ], 148 | 'page' => [ 149 | 'type' => 'integer', 150 | 'location' => 'query', 151 | 'required' => false 152 | ] 153 | ] 154 | ], 155 | 'getRelease' => [ 156 | 'httpMethod' => 'GET', 157 | 'uri' => 'releases/{id}', 158 | 'responseModel' => 'GetResponse', 159 | 'parameters' => [ 160 | 'id' => [ 161 | 'type' => 'string', 162 | 'location' => 'uri', 163 | 'required' => true 164 | ], 165 | 'curr_abbr' => [ 166 | 'type' => 'string', 167 | 'location' => 'query', 168 | 'required' => false 169 | ] 170 | ] 171 | ], 172 | 'getMaster' => [ 173 | 'httpMethod' => 'GET', 174 | 'uri' => 'masters/{id}', 175 | 'responseModel' => 'GetResponse', 176 | 'parameters' => [ 177 | 'id' => [ 178 | 'type' => 'string', 179 | 'location' => 'uri', 180 | 'required' => true 181 | ] 182 | ] 183 | ], 184 | 'getMasterVersions' => [ 185 | 'httpMethod' => 'GET', 186 | 'uri' => 'masters/{id}/versions', 187 | 'responseModel' => 'GetResponse', 188 | 'parameters' => [ 189 | 'id' => [ 190 | 'type' => 'string', 191 | 'location' => 'uri', 192 | 'required' => true 193 | ], 194 | 'per_page' => [ 195 | 'type' => 'integer', 196 | 'location' => 'query', 197 | 'required' => false 198 | ], 199 | 'page' => [ 200 | 'type' => 'integer', 201 | 'location' => 'query', 202 | 'required' => false 203 | ] 204 | ] 205 | ], 206 | 'getLabel' => [ 207 | 'httpMethod' => 'GET', 208 | 'uri' => 'labels/{id}', 209 | 'responseModel' => 'GetResponse', 210 | 'parameters' => [ 211 | 'id' => [ 212 | 'type' => 'string', 213 | 'location' => 'uri', 214 | 'required' => true 215 | ] 216 | ] 217 | ], 218 | 'getLabelReleases' => [ 219 | 'httpMethod' => 'GET', 220 | 'uri' => 'labels/{id}/releases', 221 | 'responseModel' => 'GetResponse', 222 | 'parameters' => [ 223 | 'id' => [ 224 | 'type' => 'string', 225 | 'location' => 'uri', 226 | 'required' => true 227 | ], 228 | 'per_page' => [ 229 | 'type' => 'integer', 230 | 'location' => 'query', 231 | 'required' => false 232 | ], 233 | 'page' => [ 234 | 'type' => 'integer', 235 | 'location' => 'query', 236 | 'required' => false 237 | ] 238 | ] 239 | ], 240 | 'getOAuthIdentity' => [ 241 | 'httpMethod' => 'GET', 242 | 'uri' => 'oauth/identity', 243 | 'responseModel' => 'GetResponse', 244 | ], 245 | 'getProfile' => [ 246 | 'httpMethod' => 'GET', 247 | 'uri' => 'users/{username}', 248 | 'responseModel' => 'GetResponse', 249 | 'parameters' => [ 250 | 'username' => [ 251 | 'type' => 'string', 252 | 'location' => 'uri', 253 | 'required' => true 254 | ], 255 | ], 256 | ], 257 | 'getInventory' => [ 258 | 'httpMethod' => 'GET', 259 | 'uri' => 'users/{username}/inventory', 260 | 'responseModel' => 'GetResponse', 261 | 'parameters' => [ 262 | 'username' => [ 263 | 'type' => 'string', 264 | 'location' => 'uri', 265 | 'required' => true 266 | ], 267 | 'status' => [ 268 | 'type' => 'string', 269 | 'location' => 'query', 270 | 'required' => false, 271 | ], 272 | 'sort' => [ 273 | 'type' => 'string', 274 | 'location' => 'query', 275 | 'required' => false, 276 | ], 277 | 'sort_order' => [ 278 | 'type' => 'string', 279 | 'location' => 'query', 280 | 'required' => false, 281 | ], 282 | 'per_page' => [ 283 | 'type' => 'integer', 284 | 'location' => 'query', 285 | 'required' => false 286 | ], 287 | 'page' => [ 288 | 'type' => 'integer', 289 | 'location' => 'query', 290 | 'required' => false 291 | ] 292 | ] 293 | ], 294 | 'getOrder' => [ 295 | 'httpMethod' => 'GET', 296 | 'uri' => 'marketplace/orders/{order_id}', 297 | 'responseModel' => 'GetResponse', 298 | 'parameters' => [ 299 | 'order_id' => [ 300 | 'type' => 'string', 301 | 'location' => 'uri', 302 | 'required' => true 303 | ] 304 | ] 305 | ], 306 | 'getOrders' => [ 307 | 'httpMethod' => 'GET', 308 | 'uri' => 'marketplace/orders', 309 | 'responseModel' => 'GetResponse', 310 | 'parameters' => [ 311 | 'status' => [ 312 | 'type' => 'string', 313 | 'location' => 'query', 314 | 'required' => false 315 | ], 316 | 'created_after' => [ 317 | 'type' => 'string', 318 | 'location' => 'query', 319 | 'required' => false 320 | ], 321 | 'created_before' => [ 322 | 'type' => 'string', 323 | 'location' => 'query', 324 | 'required' => false 325 | ], 326 | 'archived' => [ 327 | 'type' => 'boolean', 328 | 'location' => 'query', 329 | 'required' => false 330 | ], 331 | 'sort' => [ 332 | 'type' => 'string', 333 | 'location' => 'query', 334 | 'required' => false, 335 | ], 336 | 'sort_order' => [ 337 | 'type' => 'string', 338 | 'location' => 'query', 339 | 'required' => false, 340 | ] 341 | ] 342 | ], 343 | 'changeOrder' => [ 344 | 'httpMethod' => 'POST', 345 | 'uri' => 'marketplace/orders/{order_id}', 346 | 'summary' => 'Edit the data associated with an order.', 347 | 'responseModel' => 'GetResponse', 348 | 'parameters' => [ 349 | 'order_id' => [ 350 | 'type' => 'string', 351 | 'location' => 'uri', 352 | 'required' => true 353 | ], 354 | 'status' => [ 355 | 'type' => 'string', 356 | 'location' => 'json', 357 | 'required' => false, 358 | ], 359 | 'shipping' => [ 360 | 'type' => 'number', 361 | 'location' => 'json', 362 | 'required' => false, 363 | ] 364 | ] 365 | ], 366 | 'addOrderMessage' => [ 367 | 'httpMethod' => 'POST', 368 | 'uri' => 'marketplace/orders/{order_id}/messages', 369 | 'summary' => 'Adds a new message to the order’s message log.', 370 | 'responseModel' => 'GetResponse', 371 | 'parameters' => [ 372 | 'order_id' => [ 373 | 'type' => 'string', 374 | 'location' => 'uri', 375 | 'required' => true 376 | ], 377 | 'message' => [ 378 | 'type' => 'string', 379 | 'location' => 'json', 380 | 'required' => false, 381 | ], 382 | 'status' => [ 383 | 'type' => 'string', 384 | 'location' => 'json', 385 | 'required' => false, 386 | ] 387 | ] 388 | ], 389 | 'getListing' => [ 390 | 'httpMethod' => 'GET', 391 | 'uri' => 'marketplace/listings/{listing_id}', 392 | 'summary' => 'The Listing resource allows you to view Marketplace listings.', 393 | 'responseModel' => 'GetResponse', 394 | 'parameters' => [ 395 | 'listing_id' => [ 396 | 'type' => 'string', 397 | 'location' => 'uri', 398 | 'required' => true 399 | ], 400 | 'curr_abbr' => [ 401 | 'type' => 'string', 402 | 'location' => 'query', 403 | 'required' => false 404 | ] 405 | ] 406 | ], 407 | 'createListing' => [ 408 | 'httpMethod' => 'POST', 409 | 'uri' => '/marketplace/listings', 410 | 'summary' => 'Create a Marketplace listing.', 411 | 'responseModel' => 'GetResponse', 412 | 'parameters' => [ 413 | 'release_id' => [ 414 | 'type' => 'string', 415 | 'location' => 'json', 416 | 'required' => true 417 | ], 418 | 'condition' => [ 419 | 'type' => 'string', 420 | 'location' => 'json', 421 | 'required' => true, 422 | ], 423 | 'sleeve_condition' => [ 424 | 'type' => 'string', 425 | 'location' => 'json', 426 | 'required' => false, 427 | ], 428 | 'price' => [ 429 | 'type' => 'number', 430 | 'location' => 'json', 431 | 'required' => true, 432 | ], 433 | 'comments' => [ 434 | 'type' => 'string', 435 | 'location' => 'json', 436 | 'required' => false, 437 | ], 438 | 'allow_offers' => [ 439 | 'type' => 'boolean', 440 | 'location' => 'json', 441 | 'required' => false, 442 | ], 443 | 'status' => [ 444 | 'type' => 'string', 445 | 'location' => 'json', 446 | 'required' => true, 447 | ], 448 | 'external_id' => [ 449 | 'type' => 'string', 450 | 'location' => 'json', 451 | 'required' => false, 452 | ], 453 | 'location' => [ 454 | 'type' => 'string', 455 | 'location' => 'json', 456 | 'required' => false, 457 | ], 458 | 'weight' => [ 459 | 'type' => 'number', 460 | 'location' => 'json', 461 | 'required' => false, 462 | ], 463 | 'format_quantity' => [ 464 | 'type' => 'number', 465 | 'location' => 'json', 466 | 'required' => false, 467 | ] 468 | ] 469 | ], 470 | 'changeListing' => [ 471 | 'httpMethod' => 'POST', 472 | 'uri' => 'marketplace/listings/{listing_id}', 473 | 'summary' => 'Edit the data associated with a listing.', 474 | 'responseModel' => 'GetResponse', 475 | 'parameters' => [ 476 | 'listing_id' => [ 477 | 'type' => 'string', 478 | 'location' => 'uri', 479 | 'required' => true, 480 | ], 481 | 'release_id' => [ 482 | 'type' => 'string', 483 | 'location' => 'json', 484 | 'required' => false, 485 | ], 486 | 'condition' => [ 487 | 'type' => 'string', 488 | 'location' => 'json', 489 | 'required' => false, 490 | ], 491 | 'sleeve_condition' => [ 492 | 'type' => 'string', 493 | 'location' => 'json', 494 | 'required' => false, 495 | ], 496 | 'price' => [ 497 | 'type' => 'number', 498 | 'location' => 'json', 499 | 'required' => false, 500 | ], 501 | 'comments' => [ 502 | 'type' => 'string', 503 | 'location' => 'json', 504 | 'required' => false, 505 | ], 506 | 'allow_offers' => [ 507 | 'type' => 'boolean', 508 | 'location' => 'json', 509 | 'required' => false, 510 | ], 511 | 'status' => [ 512 | 'type' => 'string', 513 | 'location' => 'json', 514 | 'required' => false, 515 | ], 516 | 'external_id' => [ 517 | 'type' => 'string', 518 | 'location' => 'json', 519 | 'required' => false, 520 | ], 521 | 'location' => [ 522 | 'type' => 'string', 523 | 'location' => 'json', 524 | 'required' => false, 525 | ], 526 | 'weight' => [ 527 | 'type' => 'number', 528 | 'location' => 'json', 529 | 'required' => false, 530 | ], 531 | 'format_quantity' => [ 532 | 'type' => 'number', 533 | 'location' => 'json', 534 | 'required' => false, 535 | ] 536 | ] 537 | ], 538 | 'deleteListing' => [ 539 | 'httpMethod' => 'DELETE', 540 | 'uri' => 'marketplace/listings/{listing_id}', 541 | 'responseModel' => 'GetResponse', 542 | 'parameters' => [ 543 | 'listing_id' => [ 544 | 'type' => 'string', 545 | 'location' => 'uri', 546 | 'required' => true 547 | ] 548 | ] 549 | ], 550 | 'getCollectionFolders' => [ 551 | 'httpMethod' => 'GET', 552 | 'uri' => 'users/{username}/collection/folders', 553 | 'responseModel' => 'GetResponse', 554 | 'parameters' => [ 555 | 'username' => [ 556 | 'type' => 'string', 557 | 'location' => 'uri', 558 | 'required' => true 559 | ] 560 | ] 561 | ], 562 | 'getCollectionFolder' => [ 563 | 'httpMethod' => 'GET', 564 | 'uri' => 'users/{username}/collection/folders/{folder_id}', 565 | 'responseModel' => 'GetResponse', 566 | 'parameters' => [ 567 | 'username' => [ 568 | 'type' => 'string', 569 | 'location' => 'uri', 570 | 'required' => true 571 | ], 572 | 'folder_id' => [ 573 | 'type' => 'string', 574 | 'location' => 'uri', 575 | 'required' => true 576 | ], 577 | ] 578 | ], 579 | 'getCollectionItemsByFolder' => [ 580 | 'httpMethod' => 'GET', 581 | 'uri' => 'users/{username}/collection/folders/{folder_id}/releases', 582 | 'responseModel' => 'GetResponse', 583 | 'parameters' => [ 584 | 'username' => [ 585 | 'type' => 'string', 586 | 'location' => 'uri', 587 | 'required' => true 588 | ], 589 | 'folder_id' => [ 590 | 'type' => 'string', 591 | 'location' => 'uri', 592 | 'required' => true 593 | ], 594 | 'per_page' => [ 595 | 'type' => 'integer', 596 | 'location' => 'query', 597 | 'required' => false 598 | ], 599 | 'page' => [ 600 | 'type' => 'string', 601 | 'location' => 'query', 602 | 'required' => false 603 | ] 604 | ] 605 | ] 606 | ], 607 | 'models' => [ 608 | 'GetResponse' => [ 609 | 'type' => 'object', 610 | 'additionalProperties' => [ 611 | 'location' => 'json' 612 | ], 613 | ], 614 | ] 615 | ]; 616 | -------------------------------------------------------------------------------- /tests/Discogs/Test/ClientFactoryTest.php: -------------------------------------------------------------------------------- 1 | 'php-discogs-api/1.0.0 +https://github.com/ricbra/php-discogs-api']; 19 | $this->assertSame($default, $client->getHttpClient()->getDefaultOption('headers')); 20 | } 21 | 22 | public function testFactoryWithCustomUserAgent() 23 | { 24 | $client = ClientFactory::factory([ 25 | 'defaults' => [ 26 | 'headers' => ['User-Agent' => 'test'] 27 | ] 28 | ]); 29 | $default = ['User-Agent' => 'test']; 30 | $this->assertSame($default, $client->getHttpClient()->getDefaultOption('headers')); 31 | } 32 | 33 | 34 | public function testFactoryWithCustomDefaultNotInClassDefaults() 35 | { 36 | $client = ClientFactory::factory([ 37 | 'defaults' => [ 38 | 'headers' => ['User-Agent' => 'test'], 39 | 'query' => [ 40 | 'key' => 'my-key', 41 | 'secret' => 'my-secret', 42 | ], 43 | ] 44 | ]); 45 | $default_headers = ['User-Agent' => 'test']; 46 | $default_query = [ 47 | 'key' => 'my-key', 48 | 'secret' => 'my-secret' 49 | ]; 50 | $this->assertSame($default_headers, $client->getHttpClient()->getDefaultOption('headers')); 51 | $this->assertSame($default_query, $client->getHttpClient()->getDefaultOption('query')); 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /tests/Discogs/Test/ClientTest.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * For the full copyright and license information, please view the LICENSE 8 | * file that was distributed with this source code. 9 | */ 10 | 11 | namespace Discogs\Test; 12 | 13 | use Discogs\ClientFactory; 14 | use GuzzleHttp\Subscriber\History; 15 | use GuzzleHttp\Subscriber\Mock; 16 | 17 | class ClientTest extends \PHPUnit_Framework_TestCase 18 | { 19 | public function testGetArtist() 20 | { 21 | $history = new History(); 22 | $client = $this->createClient('get_artist', $history); 23 | $response = $client->getArtist([ 24 | 'id' => 45 25 | ]); 26 | $this->assertSame($response['id'], 45); 27 | $this->assertSame($response['name'], 'Aphex Twin'); 28 | $this->assertSame($response['realname'], 'Richard David James'); 29 | $this->assertInternalType('array', $response['images']); 30 | $this->assertCount(9, $response['images']); 31 | 32 | $this->assertSame('https://api.discogs.com/artists/45', $history->getLastRequest()->getUrl()); 33 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 34 | } 35 | 36 | public function testGetArtistReleases() 37 | { 38 | $history = new History(); 39 | $client = $this->createClient('get_artist_releases', $history); 40 | 41 | $response = $client->getArtistReleases([ 42 | 'id' => 45, 43 | 'per_page' => 50, 44 | 'page' => 1 45 | ]); 46 | $this->assertCount(50, $response['releases']); 47 | $this->assertArrayHasKey('pagination', $response); 48 | $this->assertArrayHasKey('per_page', $response['pagination']); 49 | 50 | $this->assertSame('https://api.discogs.com/artists/45/releases?per_page=50&page=1', $history->getLastRequest()->getUrl()); 51 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 52 | } 53 | 54 | public function testSearch() 55 | { 56 | $history = new History(); 57 | $client = $this->createClient('search', $history); 58 | 59 | $response = $client->search([ 60 | 'q' => 'prodigy', 61 | 'type' => 'release', 62 | 'title' => 'the fat of the land', 63 | 'per_page' => 100, 64 | 'page' => 3 65 | ]); 66 | $this->assertCount(50, $response['results']); 67 | $this->assertArrayHasKey('pagination', $response); 68 | $this->assertArrayHasKey('per_page', $response['pagination']); 69 | $this->assertSame('https://api.discogs.com/database/search?q=prodigy&type=release&title=the%20fat%20of%20the%20land&per_page=100&page=3', $history->getLastRequest()->getUrl()); 70 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 71 | } 72 | 73 | public function testGetRelease() 74 | { 75 | $history = new History(); 76 | $client = $this->createClient('get_release', $history); 77 | $response = $client->getRelease([ 78 | 'id' => 1, 79 | 'curr_abbr' => 'USD' 80 | ]); 81 | 82 | $this->assertLessThanOrEqual(8.077169493076712, $response['lowest_price']); 83 | $this->assertSame('Accepted', $response['status']); 84 | $this->assertArrayHasKey('videos', $response); 85 | $this->assertCount(6, $response['videos']); 86 | $this->assertSame('https://api.discogs.com/releases/1?curr_abbr=USD', $history->getLastRequest()->getUrl()); 87 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 88 | } 89 | 90 | public function testGetMaster() 91 | { 92 | $history = new History(); 93 | $client = $this->createClient('get_master', $history); 94 | 95 | $response = $client->getMaster([ 96 | 'id' => 33687 97 | ]); 98 | $this->assertSame('O Fortuna', $response['title']); 99 | $this->assertArrayHasKey('tracklist', $response); 100 | $this->assertCount(2, $response['tracklist']); 101 | $this->assertSame('https://api.discogs.com/masters/33687', $history->getLastRequest()->getUrl()); 102 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 103 | } 104 | 105 | public function testGetMasterVersions() 106 | { 107 | $history = new History(); 108 | $client = $this->createClient('get_master_versions', $history); 109 | 110 | $response = $client->getMasterVersions([ 111 | 'id' => 33687, 112 | 'per_page' => 4, 113 | 'page' => 2 114 | ]); 115 | $this->assertArrayHasKey('pagination', $response); 116 | $this->assertArrayHasKey('versions', $response); 117 | $this->assertCount(4, $response['versions']); 118 | $this->assertSame('https://api.discogs.com/masters/33687/versions?per_page=4&page=2', $history->getLastRequest()->getUrl()); 119 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 120 | } 121 | 122 | public function testGetLabel() 123 | { 124 | $history = new History(); 125 | $client = $this->createClient('get_label', $history); 126 | $response = $client->getLabel([ 127 | 'id' => 1 128 | ]); 129 | $this->assertArrayHasKey('releases_url', $response); 130 | $this->assertSame('https://api.discogs.com/labels/1/releases', $response['releases_url']); 131 | $this->assertArrayHasKey('sublabels', $response); 132 | $this->assertCount(6, $response['sublabels']); 133 | $this->assertSame('https://api.discogs.com/labels/1', $history->getLastRequest()->getUrl()); 134 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 135 | } 136 | 137 | public function testGetLabelReleases() 138 | { 139 | $history = new History(); 140 | $client = $this->createClient('get_label_releases', $history); 141 | $response = $client->getLabelReleases([ 142 | 'id' => 1, 143 | 'per_page' => 2, 144 | 'page' => 1 145 | ]); 146 | 147 | $this->assertArrayHasKey('pagination', $response); 148 | $this->assertArrayHasKey('releases', $response); 149 | $this->assertCount(2, $response['releases']); 150 | $this->assertSame('https://api.discogs.com/labels/1/releases?per_page=2&page=1', $history->getLastRequest()->getUrl()); 151 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 152 | } 153 | 154 | public function testGetOAuthIdentity() 155 | { 156 | $history = new History(); 157 | $client = $this->createClient('get_oauth_identity', $history); 158 | $response = $client->getOAuthIdentity(); 159 | 160 | $this->assertSame($response['username'], 'R-Search'); 161 | $this->assertSame($response['resource_url'], 'https://api.discogs.com/users/R-Search'); 162 | $this->assertSame($response['consumer_name'], 'RicbraDiscogsBundle'); 163 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 164 | } 165 | 166 | public function testGetProfile() 167 | { 168 | $history = new History(); 169 | $client = $this->createClient('get_profile', $history); 170 | $response = $client->getProfile([ 171 | 'username' => 'maxperei' 172 | ]); 173 | 174 | $this->assertEquals(200, $history->getLastResponse()->getStatusCode()); 175 | $this->assertArrayHasKey('name', $response); 176 | $this->assertArrayHasKey('avatar_url', $response); 177 | $this->assertArrayHasKey('home_page', $response); 178 | $this->assertArrayNotHasKey('email', $response); 179 | $this->assertSame($response['name'], '∴'); 180 | $this->assertSame($response['avatar_url'], 'https://img.discogs.com/mDaw_OUjHspYLj77C_tcobr2eXc=/500x500/filters:strip_icc():format(jpeg):quality(40)/discogs-avatars/U-1861520-1498224434.jpeg.jpg'); 181 | $this->assertSame($response['home_page'], 'http://maxperei.info'); 182 | $this->assertSame('https://api.discogs.com/users/maxperei', $history->getLastRequest()->getUrl()); 183 | } 184 | 185 | public function testGetInventory() 186 | { 187 | $client = $this->createClient('get_inventory', $history = new History()); 188 | $response = $client->getInventory([ 189 | 'username' => '360vinyl', 190 | 'sort' => 'price', 191 | 'sort_order' => 'asc' 192 | ]); 193 | 194 | $this->assertArrayHasKey('pagination', $response); 195 | $this->assertArrayHasKey('listings', $response); 196 | $this->assertCount(50, $response['listings']); 197 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 198 | $this->assertSame('https://api.discogs.com/users/360vinyl/inventory?sort=price&sort_order=asc', $history->getLastRequest()->getUrl()); 199 | } 200 | 201 | public function testGetOrders() 202 | { 203 | $client = $this->createClient('get_orders', $history = new History()); 204 | $response = $client->getOrders([ 205 | 'status' => 'New Order', 206 | 'sort' => 'price', 207 | 'sort_order' => 'asc' 208 | ]); 209 | 210 | $this->assertArrayHasKey('pagination', $response); 211 | $this->assertArrayHasKey('orders', $response); 212 | $this->assertCount(1, $response['orders']); 213 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 214 | $this->assertSame('https://api.discogs.com/marketplace/orders?status=New%20Order&sort=price&sort_order=asc', $history->getLastRequest()->getUrl()); 215 | } 216 | 217 | public function testGetOrder() 218 | { 219 | $client = $this->createClient('get_order', $history = new History()); 220 | $response = $client->getOrder([ 221 | 'order_id' => '1-1' 222 | ]); 223 | 224 | $this->assertArrayHasKey('id', $response); 225 | $this->assertArrayHasKey('resource_url', $response); 226 | $this->assertArrayHasKey('messages_url', $response); 227 | $this->assertArrayHasKey('uri', $response); 228 | $this->assertArrayHasKey('status', $response); 229 | $this->assertArrayHasKey('next_status', $response); 230 | $this->assertArrayHasKey('fee', $response); 231 | $this->assertArrayHasKey('created', $response); 232 | $this->assertArrayHasKey('shipping', $response); 233 | $this->assertArrayHasKey('shipping_address', $response); 234 | $this->assertArrayHasKey('additional_instructions', $response); 235 | $this->assertArrayHasKey('seller', $response); 236 | $this->assertArrayHasKey('last_activity', $response); 237 | $this->assertArrayHasKey('buyer', $response); 238 | $this->assertArrayHasKey('total', $response); 239 | $this->assertCount(1, $response['items']); 240 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 241 | $this->assertSame('https://api.discogs.com/marketplace/orders/1-1', $history->getLastRequest()->getUrl()); 242 | } 243 | 244 | public function testChangeOrder() 245 | { 246 | $client = $this->createClient('change_order', $history = new History()); 247 | $response = $client->changeOrder([ 248 | 'order_id' => '1-1', 249 | 'shipping' => 5.0 250 | ]); 251 | 252 | $this->assertSame('POST', $history->getLastRequest()->getMethod()); 253 | $this->assertSame('https://api.discogs.com/marketplace/orders/1-1', $history->getLastRequest()->getUrl()); 254 | } 255 | 256 | public function testAddOrderMessage() 257 | { 258 | $client = $this->createClient('add_order_message', $history = new History()); 259 | $client->addOrderMessage([ 260 | 'order_id' => '1-1', 261 | 'message' => 'hello world', 262 | 'status' => 'New Order' 263 | ]); 264 | 265 | $this->assertSame('POST', $history->getLastRequest()->getMethod()); 266 | $this->assertSame('https://api.discogs.com/marketplace/orders/1-1/messages', $history->getLastRequest()->getUrl()); 267 | } 268 | 269 | public function testGetListing() 270 | { 271 | $history = new History(); 272 | $client = $this->createClient('get_listing', $history); 273 | $response = $client->getListing([ 274 | 'listing_id' => 1, 275 | 'curr_abbr' => 'USD' 276 | ]); 277 | 278 | $this->assertFalse($response['allow_offers']); 279 | $this->assertSame('For Sale', $response['status']); 280 | $this->assertArrayHasKey('original_price', $response); 281 | $this->assertSame('https://api.discogs.com/marketplace/listings/1?curr_abbr=USD', $history->getLastRequest()->getUrl()); 282 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 283 | } 284 | 285 | public function testCreateListingValidation(){ 286 | $this->setExpectedException('GuzzleHttp\Command\Exception\CommandException', 'Validation errors: [status] is a required string'); 287 | $client = $this->createClient('create_listing', $history = new History()); 288 | $client->createListing([ 289 | 'release_id' => '1', 290 | 'condition' => 'Mint (M)', 291 | 'price' => 5.90 292 | ]); 293 | } 294 | 295 | public function testCreateListing() 296 | { 297 | $client = $this->createClient('create_listing', $history = new History()); 298 | $response = $client->createListing([ 299 | 'release_id' => '1', 300 | 'condition' => 'Mint (M)', 301 | 'status' => 'For Sale', 302 | 'price' => 5.90 303 | ]); 304 | 305 | $this->assertSame('POST', $history->getLastRequest()->getMethod()); 306 | $this->assertSame('https://api.discogs.com/marketplace/listings', $history->getLastRequest()->getUrl()); 307 | } 308 | 309 | public function testChangeListing() 310 | { 311 | $client = $this->createClient('change_listing', $history = new History()); 312 | $response = $client->changeListing([ 313 | 'listing_id' => '1', 314 | 'release_id' => '1', 315 | 'condition' => 'Mint (M)', 316 | 'status' => 'For Sale', 317 | 'price' => 5.90 318 | ]); 319 | 320 | $this->assertSame('POST', $history->getLastRequest()->getMethod()); 321 | $this->assertSame('https://api.discogs.com/marketplace/listings/1', $history->getLastRequest()->getUrl()); 322 | } 323 | 324 | public function testDeleteListing() 325 | { 326 | $client = $this->createClient('delete_listing', $history = new History()); 327 | $response = $client->deleteListing([ 328 | 'listing_id' => '129242581' 329 | ]); 330 | 331 | $this->assertSame('DELETE', $history->getLastRequest()->getMethod()); 332 | $this->assertSame('https://api.discogs.com/marketplace/listings/129242581', $history->getLastRequest()->getUrl()); 333 | } 334 | 335 | public function testGetCollectionFolders() 336 | { 337 | $history = new History(); 338 | $client = $this->createClient('get_collection_folders', $history); 339 | $response = $client->getCollectionFolders([ 340 | 'username' => 'example' 341 | ]); 342 | 343 | $this->assertInternalType('array', $response['folders']); 344 | $this->assertCount(2, $response['folders']); 345 | 346 | $this->assertSame('https://api.discogs.com/users/example/collection/folders', $history->getLastRequest()->getUrl()); 347 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 348 | } 349 | 350 | public function testGetCollectionFolder() 351 | { 352 | $history = new History(); 353 | $client = $this->createClient('get_collection_folder', $history); 354 | $response = $client->getCollectionFolder([ 355 | 'username' => 'example', 356 | 'folder_id' => 1 357 | ]); 358 | 359 | $this->assertSame($response['id'], 1); 360 | $this->assertSame($response['count'], 20); 361 | $this->assertSame($response['name'], 'Uncategorized'); 362 | $this->assertSame($response['resource_url'], "https://api.discogs.com/users/example/collection/folders/1"); 363 | 364 | $this->assertSame('https://api.discogs.com/users/example/collection/folders/1', $history->getLastRequest()->getUrl()); 365 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 366 | } 367 | 368 | public function testGetCollectionItemsByFolder() 369 | { 370 | $history = new History(); 371 | $client = $this->createClient('get_collection_items_by_folder', $history); 372 | $response = $client->getCollectionItemsByFolder([ 373 | 'username' => 'rodneyfool', 374 | 'folder_id' => 3, 375 | 'sort' => 'artist', 376 | 'sort_order' => 'desc', 377 | 'per_page' => 50, 378 | 'page' => 1 379 | ]); 380 | 381 | $this->assertCount(1, $response['releases']); 382 | $this->assertArrayHasKey('pagination', $response); 383 | $this->assertArrayHasKey('per_page', $response['pagination']); 384 | 385 | $this->assertSame('https://api.discogs.com/users/rodneyfool/collection/folders/3/releases?per_page=50&page=1', $history->getLastRequest()->getUrl()); 386 | $this->assertSame('GET', $history->getLastRequest()->getMethod()); 387 | } 388 | 389 | protected function createClient($mock, History $history) 390 | { 391 | $path = sprintf('%s/../../fixtures/%s', __DIR__, $mock); 392 | $client = ClientFactory::factory(); 393 | $httpClient = $client->getHttpClient(); 394 | $mock = new Mock([ 395 | $path 396 | ]); 397 | $httpClient->getEmitter()->attach($mock); 398 | $httpClient->getEmitter()->attach($history); 399 | 400 | return $client; 401 | } 402 | } 403 | -------------------------------------------------------------------------------- /tests/Discogs/Test/Subscriber/ThrottleSubscriberTest.php: -------------------------------------------------------------------------------- 1 | getMock('GuzzleHttp\Event\CompleteEvent', [], [], '', false); 22 | 23 | $before = microtime(true); 24 | $subscriber->onComplete($mock); 25 | $subscriber->onComplete($mock); 26 | $after = microtime(true); 27 | 28 | $difference = $after - $before; 29 | // Should be at least 2 seconds 30 | $this->assertTrue($difference > 2); 31 | } 32 | 33 | public function testWithoutThrottle() 34 | { 35 | $throttle = 0; 36 | $subscriber = new ThrottleSubscriber($throttle); 37 | 38 | $mock = $this->getMock('GuzzleHttp\Event\CompleteEvent', [], [], '', false); 39 | 40 | $before = microtime(true); 41 | $subscriber->onComplete($mock); 42 | $subscriber->onComplete($mock); 43 | $after = microtime(true); 44 | 45 | 46 | $difference = $after - $before; 47 | // Should be at max 0.5 seconds on a very slow system, tricky to test 48 | $this->assertTrue($difference < 0.5); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /tests/bootstrap.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * For the full copyright and license information, please view the LICENSE 8 | * file that was distributed with this source code. 9 | */ 10 | 11 | require_once __DIR__.'/../vendor/autoload.php'; 12 | -------------------------------------------------------------------------------- /tests/fixtures/add_order_message: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 4875 8 | Date: Tue, 29 Jul 2014 19:35:39 GMT 9 | X-Varnish: 1931104915 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: close 13 | 14 | { 15 | "from": { 16 | "username": "example_seller", 17 | "resource_url": "https://api.discogs.com/users/example_seller" 18 | }, 19 | "message": "Seller changed status from Payment Received to Shipped\n\nYour order is on its way, tracking number #foobarbaz!", 20 | "order": { 21 | "resource_url": "https://api.discogs.com/marketplace/orders/1-1", 22 | "id": "1-1" 23 | }, 24 | "timestamp": "2011-11-18T15:32:42-07:00", 25 | "subject": "Discogs Order #1-1, Stockholm" 26 | } -------------------------------------------------------------------------------- /tests/fixtures/change_listing: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 780 8 | Date: Tue, 15 Jul 2014 19:59:59 GMT 9 | X-Varnish: 1702965334 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: keep-alive 13 | 14 | {} 15 | -------------------------------------------------------------------------------- /tests/fixtures/change_order: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 780 8 | Date: Tue, 15 Jul 2014 19:59:59 GMT 9 | X-Varnish: 1702965334 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: keep-alive 13 | 14 | { 15 | "id": "1-1", 16 | "resource_url": "https://api.discogs.com/marketplace/orders/1-1", 17 | "messages_url": "https://api.discogs.com/marketplace/orders/1-1/messages", 18 | "uri": "http://www.discogs.com/sell/order/1-1", 19 | "status": "Invoice Sent", 20 | "next_status": [ 21 | "New Order", 22 | "Buyer Contacted", 23 | "Invoice Sent", 24 | "Payment Pending", 25 | "Payment Received", 26 | "Shipped", 27 | "Refund Sent", 28 | "Cancelled (Non-Paying Buyer)", 29 | "Cancelled (Item Unavailable)", 30 | "Cancelled (Per Buyer's Request)" 31 | ], 32 | "fee": { 33 | "currency": "USD", 34 | "value": 2.52 35 | }, 36 | "created": "2011-10-21T09:25:17", 37 | "items": [ 38 | { 39 | "release": { 40 | "id": 1, 41 | "description": "Persuader, The - Stockholm (2x12\")" 42 | }, 43 | "price": { 44 | "currency": "USD", 45 | "value": 42.0 46 | }, 47 | "id": 41578242 48 | } 49 | ], 50 | "shipping": { 51 | "currency": "USD", 52 | "value": 5.0 53 | }, 54 | "shipping_address": "Asdf Exampleton\n234 NE Asdf St.\nAsdf Town, Oregon, 14423\nUnited States\n\nPhone: 555-555-2733\nPaypal address: asdf@example.com", 55 | "additional_instructions": "please use sturdy packaging.", 56 | "seller": { 57 | "resource_url": "https://api.discogs.com/users/example_seller", 58 | "username": "example_seller", 59 | "id": 1 60 | }, 61 | "last_activity": "2011-10-22T19:18:53", 62 | "buyer": { 63 | "resource_url": "https://api.discogs.com/users/example_buyer", 64 | "username": "example_buyer", 65 | "id": 2 66 | }, 67 | "total": { 68 | "currency": "USD", 69 | "value": 47.0 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /tests/fixtures/create_listing: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 780 8 | Date: Tue, 15 Jul 2014 19:59:59 GMT 9 | X-Varnish: 1702965334 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: keep-alive 13 | 14 | { 15 | "listing_id": 41578241, 16 | "resource_url": "https://api.discogs.com/marketplace/listings/41578241" 17 | } -------------------------------------------------------------------------------- /tests/fixtures/delete_listing: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 780 8 | Date: Tue, 15 Jul 2014 19:59:59 GMT 9 | X-Varnish: 1702965334 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: keep-alive 13 | 14 | {} 15 | -------------------------------------------------------------------------------- /tests/fixtures/get_artist: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 5103 8 | Date: Mon, 28 Jul 2014 18:40:39 GMT 9 | X-Varnish: 1913846781 1913780733 10 | Age: 259 11 | Via: 1.1 varnish 12 | Connection: close 13 | 14 | {"profile": "British electronic musician and composer (born August 18, 1971 in Limerick, Ireland).\r\nAfter having released a number of albums and EPs on Warp Records, Rephlex and other labels under many aliases, he gained more and more success from the mid-90s with releases such as \"Come to Daddy\" in 1997 (#36 on UK charts) and \"Windowlicker\" in 1999 (#16 on UK charts).\r\nIn 1991, he co-founded the label [l=Rephlex] with Grant Wilson-Claridge.\r\n", "realname": "Richard David James", "releases_url": "https://api.discogs.com/artists/45/releases", "name": "Aphex Twin", "uri": "http://www.discogs.com/artist/45-Aphex-Twin", "urls": ["http://www.drukqs.net/", "http://warp.net/records/aphex-twin", "http://www.littlebig-agency.net/artists/aphex-twin/", "http://www.facebook.com/aphextwinafx", "http://twitter.com/AphexTwin", "http://aphextwin.sandbag.uk.com/", "http://en.wikipedia.org/wiki/Aphex_twin", "http://www.whosampled.com/Aphex-Twin/", "http://soundcloud.com/aphex-twin-official", "http://www.youtube.com/user/soundofworldcontrol"], "images": [{"uri": "https://api.discogs.com/image/A-45-1176664580.jpeg", "height": 704, "width": 486, "resource_url": "https://api.discogs.com/image/A-45-1176664580.jpeg", "type": "primary", "uri150": "https://api.discogs.com/image/A-150-45-1176664580.jpeg"}, {"uri": "https://api.discogs.com/image/A-45-1347812770-2937.jpeg", "height": 665, "width": 500, "resource_url": "https://api.discogs.com/image/A-45-1347812770-2937.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/A-150-45-1347812770-2937.jpeg"}, {"uri": "https://api.discogs.com/image/A-45-1209415630.jpeg", "height": 500, "width": 454, "resource_url": "https://api.discogs.com/image/A-45-1209415630.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/A-150-45-1209415630.jpeg"}, {"uri": "https://api.discogs.com/image/A-45-1126949091.jpeg", "height": 600, "width": 416, "resource_url": "https://api.discogs.com/image/A-45-1126949091.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/A-150-45-1126949091.jpeg"}, {"uri": "https://api.discogs.com/image/A-45-1126949071.jpeg", "height": 280, "width": 250, "resource_url": "https://api.discogs.com/image/A-45-1126949071.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/A-150-45-1126949071.jpeg"}, {"uri": "https://api.discogs.com/image/A-45-1388347702-9375.png", "height": 324, "width": 500, "resource_url": "https://api.discogs.com/image/A-45-1388347702-9375.png", "type": "secondary", "uri150": "https://api.discogs.com/image/A-150-45-1388347702-9375.png"}, {"uri": "https://api.discogs.com/image/A-45-1389288802-7408.png", "height": 366, "width": 274, "resource_url": "https://api.discogs.com/image/A-45-1389288802-7408.png", "type": "secondary", "uri150": "https://api.discogs.com/image/A-150-45-1389288802-7408.png"}, {"uri": "https://api.discogs.com/image/A-45-1403892052-9961.jpeg", "height": 389, "width": 541, "resource_url": "https://api.discogs.com/image/A-45-1403892052-9961.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/A-150-45-1403892052-9961.jpeg"}, {"uri": "https://api.discogs.com/image/A-45-1403892037-5712.jpeg", "height": 458, "width": 306, "resource_url": "https://api.discogs.com/image/A-45-1403892037-5712.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/A-150-45-1403892037-5712.jpeg"}], "resource_url": "https://api.discogs.com/artists/45", "aliases": [{"resource_url": "https://api.discogs.com/artists/42476", "id": 42476, "name": "Blue Calx (2)"}, {"resource_url": "https://api.discogs.com/artists/32985", "id": 32985, "name": "Bradley Strider"}, {"resource_url": "https://api.discogs.com/artists/803581", "id": 803581, "name": "Brian Tregaskin"}, {"resource_url": "https://api.discogs.com/artists/48", "id": 48, "name": "Caustic Window"}, {"resource_url": "https://api.discogs.com/artists/820", "id": 820, "name": "Dice Man, The"}, {"resource_url": "https://api.discogs.com/artists/46", "id": 46, "name": "GAK"}, {"resource_url": "https://api.discogs.com/artists/829972", "id": 829972, "name": "Karen Tregaskin"}, {"resource_url": "https://api.discogs.com/artists/3054120", "id": 3054120, "name": "Patrick Tregaskin"}, {"resource_url": "https://api.discogs.com/artists/1645212", "id": 1645212, "name": "PBoD"}, {"resource_url": "https://api.discogs.com/artists/2931", "id": 2931, "name": "Polygon Window"}, {"resource_url": "https://api.discogs.com/artists/599", "id": 599, "name": "Power-Pill"}, {"resource_url": "https://api.discogs.com/artists/37272", "id": 37272, "name": "Q-Chastic"}, {"resource_url": "https://api.discogs.com/artists/435132", "id": 435132, "name": "Richard D. James"}, {"resource_url": "https://api.discogs.com/artists/286337", "id": 286337, "name": "Smojphace"}, {"resource_url": "https://api.discogs.com/artists/3671244", "id": 3671244, "name": "Soit - P.P."}, {"resource_url": "https://api.discogs.com/artists/798219", "id": 798219, "name": "Tuss, The"}], "id": 45, "data_quality": "Correct", "namevariations": ["A-F-X Twin", "A.F.X.", "A.Twin", "AFX", "Apex Twin", "Aphex Twin, The", "Aphex Twins", "TheAphexTwin"]} 15 | -------------------------------------------------------------------------------- /tests/fixtures/get_artist_releases: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Link: ; rel="last", ; rel="next" 7 | Server: lighttpd 8 | Content-Length: 14241 9 | Date: Mon, 28 Jul 2014 19:37:05 GMT 10 | X-Varnish: 1914710838 11 | Age: 0 12 | Via: 1.1 varnish 13 | Connection: close 14 | 15 | {"pagination": {"per_page": 50, "items": 724, "page": 1, "urls": {"last": "https://api.discogs.com/artists/45/releases?per_page=50&page=15", "next": "https://api.discogs.com/artists/45/releases?per_page=50&page=2"}, "pages": 15}, "releases": [{"thumb": "https://api.discogs.com/image/R-150-63114-1148806222.jpeg", "artist": "Aphex Twin", "main_release": 63114, "title": "Analog Bubblebath Vol 2", "role": "Main", "year": 1991, "resource_url": "https://api.discogs.com/masters/258478", "type": "master", "id": 258478}, {"thumb": "https://api.discogs.com/image/R-150-13860-1145127015.jpeg", "artist": "Aphex Twin, The*", "main_release": 13860, "title": "Analogue Bubblebath", "role": "Main", "year": 1991, "resource_url": "https://api.discogs.com/masters/870", "type": "master", "id": 870}, {"thumb": "https://api.discogs.com/image/R-150-4690-1128776401.jpeg", "artist": "Aphex Twin, The*", "main_release": 4690, "title": "Digeridoo", "role": "Main", "year": 1992, "resource_url": "https://api.discogs.com/masters/604", "type": "master", "id": 604}, {"thumb": "https://api.discogs.com/image/R-150-32662-1221896955.jpeg", "artist": "Aphex Twin", "main_release": 32662, "title": "Selected Ambient Works 85-92", "role": "Main", "year": 1992, "resource_url": "https://api.discogs.com/masters/565", "type": "master", "id": 565}, {"thumb": "https://api.discogs.com/image/R-150-1788489-1243368400.jpeg", "artist": "Aphex Twin", "main_release": 1788489, "title": "Xylem Tube E.P.", "role": "Main", "year": 1992, "resource_url": "https://api.discogs.com/masters/984", "type": "master", "id": 984}, {"thumb": "https://api.discogs.com/image/R-150-28763-1203866990.jpeg", "artist": "AFX*", "main_release": 28763, "title": "Analogue Bubblebath Vol. 3", "role": "Main", "year": 1993, "resource_url": "https://api.discogs.com/masters/919", "type": "master", "id": 919}, {"thumb": "https://api.discogs.com/image/R-150-2133502-1353542406-9633.jpeg", "artist": "Aphex Twin", "main_release": 2133502, "title": "On", "role": "Main", "year": 1993, "resource_url": "https://api.discogs.com/masters/715", "type": "master", "id": 715}, {"thumb": "https://api.discogs.com/image/R-150-13102-1378424659-1271.jpeg", "artist": "AFX*", "main_release": 13102, "title": "Analogue Bubblebath 4", "role": "Main", "year": 1994, "resource_url": "https://api.discogs.com/masters/2429", "type": "master", "id": 2429}, {"thumb": "https://api.discogs.com/image/R-150-3636-1271625781.jpeg", "artist": "Aphex Twin", "main_release": 3636, "title": "Selected Ambient Works Volume II", "role": "Main", "year": 1994, "resource_url": "https://api.discogs.com/masters/481", "type": "master", "id": 481}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-15608-1232354476.jpeg", "title": "Words & Music", "format": "CD, Promo", "label": "Sire, Warner Bros. Records", "role": "Main", "year": 1994, "resource_url": "https://api.discogs.com/releases/15608", "artist": "Aphex Twin", "type": "release", "id": 15608}, {"thumb": "https://api.discogs.com/image/R-150-27129-1158407369.jpeg", "artist": "Aphex Twin", "main_release": 27129, "title": "...I Care Because You Do", "role": "Main", "year": 1995, "resource_url": "https://api.discogs.com/masters/461", "type": "master", "id": 461}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-160224-001.jpg", "title": "Analogue Bubblebath 5", "format": "12\", W/Lbl, Promo", "label": "Rephlex", "role": "Main", "year": 1995, "resource_url": "https://api.discogs.com/releases/160224", "artist": "AFX*", "type": "release", "id": 160224}, {"thumb": "https://api.discogs.com/image/R-150-62679-1148804897.jpeg", "artist": "Aphex Twin, The*", "main_release": 62679, "title": "Classics", "role": "Main", "year": 1995, "resource_url": "https://api.discogs.com/masters/2482", "type": "master", "id": 2482}, {"status": "Accepted", "thumb": "https://api.discogs.com/images/spacer.gif", "title": "Donkey Rhubarb", "format": "12\", EP, Promo", "label": "Warp Records", "role": "Main", "year": 1995, "resource_url": "https://api.discogs.com/releases/5889948", "artist": "Aphex Twin", "type": "release", "id": 5889948}, {"thumb": "https://api.discogs.com/image/R-150-3663-1235218369.jpeg", "artist": "Aphex Twin", "main_release": 3663, "title": "Donkey Rhubarb", "role": "Main", "year": 1995, "resource_url": "https://api.discogs.com/masters/791", "type": "master", "id": 791}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-136-1158510598.jpeg", "title": "Hangable Auto Bulb EP", "format": "12\", EP, Ltd", "label": "Warp Records", "role": "Main", "year": 1995, "resource_url": "https://api.discogs.com/releases/136", "artist": "AFX*", "type": "release", "id": 136}, {"thumb": "https://api.discogs.com/image/R-150-137-1163948503.jpeg", "artist": "AFX*", "main_release": 137, "title": "Hangable Auto Bulb EP.2", "role": "Main", "year": 1995, "resource_url": "https://api.discogs.com/masters/4984", "type": "master", "id": 4984}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-182628-1365780969-9823.jpeg", "title": "In-Store Ambients", "format": "CD, Promo, Smplr, Comp", "label": "Warp Records, EastWest, Sire", "role": "Main", "year": 1995, "resource_url": "https://api.discogs.com/releases/182628", "artist": "Aphex Twin / Black Dog, The", "type": "release", "id": 182628}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-202433-1144694890.jpeg", "title": "Raising The Titanic", "format": "12\", Promo", "label": "Point Music", "role": "Main", "year": 1995, "resource_url": "https://api.discogs.com/releases/202433", "artist": "Aphex Twin / Gavin Bryars", "type": "release", "id": 202433}, {"thumb": "https://api.discogs.com/image/R-150-27983-1228338398.jpeg", "artist": "Aphex Twin", "main_release": 27983, "title": "Ventolin E.P", "role": "Main", "year": 1995, "resource_url": "https://api.discogs.com/masters/20524", "type": "master", "id": 20524}, {"thumb": "https://api.discogs.com/image/R-150-757-1169134962.jpeg", "artist": "Aphex Twin", "main_release": 757, "title": "\"Girl/Boy\" E.P.", "role": "Main", "year": 1996, "resource_url": "https://api.discogs.com/masters/2503", "type": "master", "id": 2503}, {"thumb": "https://api.discogs.com/image/R-150-62499-1233439583.jpeg", "artist": "Aphex Twin", "main_release": 62499, "title": "51/13 Aphex Singles Collection", "role": "Main", "year": 1996, "resource_url": "https://api.discogs.com/masters/2459", "type": "master", "id": 2459}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-3157006-1318364201.jpeg", "title": "Come To Daddy (8MM Huit Millim\u00e8tres Press Kit)", "format": "CD, Promo", "label": "Virgin France S.A.", "role": "Main", "year": 1996, "resource_url": "https://api.discogs.com/releases/3157006", "artist": "Aphex Twin", "type": "release", "id": 3157006}, {"thumb": "https://api.discogs.com/image/R-150-30849-1336914949-4168.jpeg", "artist": "Aphex Twin", "main_release": 30849, "title": "Richard D. James Album", "role": "Main", "year": 1996, "resource_url": "https://api.discogs.com/masters/510", "type": "master", "id": 510}, {"thumb": "https://api.discogs.com/image/R-150-29131-1100781969.jpg", "artist": "Mike Flowers Pops, The* Meets Aphex Twin, The*", "main_release": 29131, "title": "The Freebase Connection", "role": "Main", "year": 1996, "resource_url": "https://api.discogs.com/masters/118531", "type": "master", "id": 118531}, {"thumb": "https://api.discogs.com/image/R-150-97039-1162418223.jpeg", "artist": "AFX*", "main_release": 97039, "title": "Analogue Bubblebath Vol. 3.1", "role": "Main", "year": 1997, "resource_url": "https://api.discogs.com/masters/617160", "type": "master", "id": 617160}, {"thumb": "https://api.discogs.com/image/R-150-52184-1301342800.jpeg", "artist": "Aphex Twin", "main_release": 52184, "title": "Come To Daddy", "role": "Main", "year": 1997, "resource_url": "https://api.discogs.com/masters/27457", "type": "master", "id": 27457}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-2756969-1299652845.jpeg", "title": "Come To Daddy (Director's Cut)", "format": "VHS, NTSC, Promo", "label": "Sire Records Company", "role": "Main", "year": 1997, "resource_url": "https://api.discogs.com/releases/2756969", "artist": "Aphex Twin", "type": "release", "id": 2756969}, {"thumb": "https://api.discogs.com/image/R-150-76381-1224235531.jpeg", "artist": "Aphex Twin", "main_release": 76381, "title": "Come To Viddy", "role": "Main", "year": 1997, "resource_url": "https://api.discogs.com/masters/12991", "type": "master", "id": 12991}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-798311-1179765223.jpeg", "title": "Inkey$", "format": "CD, Single, Promo", "label": "Warp Records, Source", "role": "Main", "year": 1998, "resource_url": "https://api.discogs.com/releases/798311", "artist": "Aphex Twin", "type": "release", "id": 798311}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-839805-1164133158.jpeg", "title": "Sugar Daddy / Come To Daddy", "format": "VHS, SECAM, Promo", "label": "Source, Warp Records", "role": "Main", "year": 1998, "resource_url": "https://api.discogs.com/releases/839805", "artist": "Jimi Tenor / Aphex Twin", "type": "release", "id": 839805}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-611166-1161158760.jpeg", "title": "Special Sampler", "format": "CD, Maxi, Promo, Smplr", "label": "WEA", "role": "Main", "year": 1999, "resource_url": "https://api.discogs.com/releases/611166", "artist": "Aphex Twin", "type": "release", "id": 611166}, {"thumb": "https://api.discogs.com/image/R-150-19290-1272803726.jpeg", "artist": "Aphex Twin", "main_release": 19290, "title": "Windowlicker", "role": "Main", "year": 1999, "resource_url": "https://api.discogs.com/masters/532", "type": "master", "id": 532}, {"thumb": "https://api.discogs.com/image/R-150-8433-1197641847.jpeg", "artist": "AFX*", "main_release": 8433, "title": "2 Remixes By AFX", "role": "Main", "year": 2001, "resource_url": "https://api.discogs.com/masters/2408", "type": "master", "id": 2408}, {"thumb": "https://api.discogs.com/image/R-150-123948-1107088837.jpg", "artist": "Aphex Twin", "main_release": 123948, "title": "Drukqs", "role": "Main", "year": 2001, "resource_url": "https://api.discogs.com/masters/281813", "type": "master", "id": 281813}, {"thumb": "https://api.discogs.com/image/R-150-13965-1249315114.jpeg", "artist": "Aphex Twin", "main_release": 13965, "title": "Drukqs", "role": "Main", "year": 2001, "resource_url": "https://api.discogs.com/masters/497", "type": "master", "id": 497}, {"thumb": "https://api.discogs.com/image/R-150-16980-1228269629.jpeg", "artist": "Aphex Twin", "main_release": 16980, "title": "Drukqs 2 Track Promo", "role": "Main", "year": 2001, "resource_url": "https://api.discogs.com/masters/27144", "type": "master", "id": 27144}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-1692451-1354536855-8321.jpeg", "title": "Sound Aphex", "format": "CD, Promo, Comp, Car", "label": "Chrysalis", "role": "Main", "year": 2001, "resource_url": "https://api.discogs.com/releases/1692451", "artist": "Aphex Twin", "type": "release", "id": 1692451}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-194780-001.jpg", "title": "2 Mixes On A 12\" For Cash", "format": "12\"", "label": "Beat Records", "role": "Main", "year": 2003, "resource_url": "https://api.discogs.com/releases/194780", "artist": "Aphex Twin", "type": "release", "id": 194780}, {"thumb": "https://api.discogs.com/image/R-150-127710-1245269123.jpeg", "artist": "Aphex Twin", "main_release": 127710, "title": "26 Mixes For Cash", "role": "Main", "year": 2003, "resource_url": "https://api.discogs.com/masters/836", "type": "master", "id": 836}, {"thumb": "https://api.discogs.com/image/R-150-154004-003.jpg", "artist": "AFX*", "main_release": 154004, "title": "Smojphace EP", "role": "Main", "year": 2003, "resource_url": "https://api.discogs.com/masters/9735", "type": "master", "id": 9735}, {"thumb": "https://api.discogs.com/image/R-150-385638-1165171889.jpeg", "artist": "AFX*", "main_release": 385638, "title": "Analord 01", "role": "Main", "year": 2005, "resource_url": "https://api.discogs.com/masters/210429", "type": "master", "id": 210429}, {"thumb": "https://api.discogs.com/image/R-150-385640-1165172024.jpeg", "artist": "AFX*", "main_release": 385640, "title": "Analord 02", "role": "Main", "year": 2005, "resource_url": "https://api.discogs.com/masters/210499", "type": "master", "id": 210499}, {"thumb": "https://api.discogs.com/image/R-150-400077-1165172084.jpeg", "artist": "AFX*", "main_release": 400077, "title": "Analord 03", "role": "Main", "year": 2005, "resource_url": "https://api.discogs.com/masters/210501", "type": "master", "id": 210501}, {"thumb": "https://api.discogs.com/image/R-150-398345-1165172133.jpeg", "artist": "AFX*", "main_release": 398345, "title": "Analord 04", "role": "Main", "year": 2005, "resource_url": "https://api.discogs.com/masters/210510", "type": "master", "id": 210510}, {"thumb": "https://api.discogs.com/image/R-150-415851-1165172195.jpeg", "artist": "AFX*", "main_release": 415851, "title": "Analord 05", "role": "Main", "year": 2005, "resource_url": "https://api.discogs.com/masters/210511", "type": "master", "id": 210511}, {"thumb": "https://api.discogs.com/image/R-150-428328-1165172256.jpeg", "artist": "AFX*", "main_release": 428328, "title": "Analord 06", "role": "Main", "year": 2005, "resource_url": "https://api.discogs.com/masters/210512", "type": "master", "id": 210512}, {"thumb": "https://api.discogs.com/image/R-150-444484-1165172313.jpeg", "artist": "AFX*", "main_release": 444484, "title": "Analord 07", "role": "Main", "year": 2005, "resource_url": "https://api.discogs.com/masters/210514", "type": "master", "id": 210514}, {"thumb": "https://api.discogs.com/image/R-150-451034-1165172382.jpeg", "artist": "AFX*", "main_release": 451034, "title": "Analord 08", "role": "Main", "year": 2005, "resource_url": "https://api.discogs.com/masters/210515", "type": "master", "id": 210515}, {"thumb": "https://api.discogs.com/image/R-150-466787-1165172488.jpeg", "artist": "AFX*", "main_release": 466787, "title": "Analord 09", "role": "Main", "year": 2005, "resource_url": "https://api.discogs.com/masters/210517", "type": "master", "id": 210517}]} 16 | -------------------------------------------------------------------------------- /tests/fixtures/get_collection_folder: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 132 8 | Date: Wed, 16 Jul 2014 23:20:21 GMT 9 | X-Varnish: 1722533701 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: keep-alive 13 | 14 | {"id":1,"count":20,"name":"Uncategorized","resource_url":"https://api.discogs.com/users/example/collection/folders/1"} 15 | -------------------------------------------------------------------------------- /tests/fixtures/get_collection_folders: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 132 8 | Date: Wed, 16 Jul 2014 23:20:21 GMT 9 | X-Varnish: 1722533701 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: keep-alive 13 | 14 | {"folders":[{"id":0,"count":23,"name":"All","resource_url":"https://api.discogs.com/users/example/collection/folders/0"},{"id":1,"count":20,"name":"Uncategorized","resource_url":"https://api.discogs.com/users/example/collection/folders/1"}]} 15 | -------------------------------------------------------------------------------- /tests/fixtures/get_collection_items_by_folder: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 132 8 | Date: Wed, 16 Jul 2014 23:20:21 GMT 9 | X-Varnish: 1722533701 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: keep-alive 13 | 14 | {"pagination":{"per_page":1,"pages":14,"page":1,"items":14,"urls":{"next":"https://api.discogs.com/users/example/collection/folders/1/releases?page=2&per_page=1","last":"https://api.discogs.com/users/example/collection/folders/1/releases?page=2&per_page=14"}},"releases":[{"id":2464521,"instance_id":1,"folder_id":1,"rating":0,"basic_information":{"id":2464521,"title":"Information Chase","year":2006,"resource_url":"https://api.discogs.com/releases/2464521","thumb":"https://api-img.discogs.com/vzpYq4_kc52GZFs14c0SCJ0ZE84=/fit-in/150x150/filters:strip_icc():format(jpeg):mode_rgb()/discogs-images/R-2464521-1285519861.jpeg.jpg","cover_image":"https://api-img.discogs.com/vzpYq4_kc52GZFs14c0SCJ0ZE84/fit-in/500x500/filters:strip_icc():format(jpeg):mode_rgb():quality(90)/discogs-images/R-2464521-1285519861.jpeg.jpg","formats":[{"qty":"1","descriptions":["Mini","EP"],"name":"CDr"}],"labels":[{"resource_url":"https://api.discogs.com/labels/11647","entity_type":"","catno":"8BP059","id":11647,"name":"8bitpeoples"}],"artists":[{"id":103906,"name":"Bit Shifter","join":"","resource_url":"https://api.discogs.com/artists/103906","anv":"","tracks":"","role":""}]},"notes":[{"field_id":3,"value":"bleep bloop blorp."}]}]} 15 | -------------------------------------------------------------------------------- /tests/fixtures/get_inventory: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Link: ; rel="last", ; rel="next" 7 | Server: lighttpd 8 | Content-Length: 37813 9 | Date: Mon, 04 Aug 2014 19:03:15 GMT 10 | X-Varnish: 2033294582 11 | Age: 0 12 | Via: 1.1 varnish 13 | Connection: keep-alive 14 | 15 | {"pagination": {"per_page": 50, "items": 479, "page": 1, "urls": {"last": "https://api.discogs.com/users/360vinyl/inventory?sort=price&per_page=50&sort_order=asc&page=10", "next": "https://api.discogs.com/users/360vinyl/inventory?sort=price&per_page=50&sort_order=asc&page=2"}, "pages": 10}, "listings": [{"status": "For Sale", "price": {"currency": "USD", "value": 2.99}, "allow_offers": false, "sleeve_condition": "Generic", "id": 129242581, "condition": "Very Good Plus (VG+)", "posted": "2013-11-20T14:26:16", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/129242581", "comments": "Plain white sleeve. Nice, clean vinyl.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "SBEST34", "resource_url": "https://api.discogs.com/releases/732194", "year": 2006, "id": 732194, "description": "Max Sedgley - Slowly (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/129242581", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 147577874, "condition": "Very Good Plus (VG+)", "posted": "2014-03-08T17:09:34", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/147577874", "comments": "", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "FB 2533", "resource_url": "https://api.discogs.com/releases/1249107", "year": 2008, "id": 1249107, "description": "Akrobatik - Put Ya Stamp On It (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/147577874", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Not Graded", "id": 16855160, "condition": "Mint (M)", "posted": "2011-09-28T11:26:46", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/16855160", "comments": "BRAND NEW, STILL FACTORY SEALED.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "QP 069", "resource_url": "https://api.discogs.com/releases/652625", "year": 2005, "id": 652625, "description": "Apsci - See That / Bike Messenger Diaries (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/16855160", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 152754569, "condition": "Very Good Plus (VG+)", "posted": "2014-04-05T18:37:26", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/152754569", "comments": "Very nice, clean vinyl. Minor shelf wear to sleeve.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "TFBA-001", "resource_url": "https://api.discogs.com/releases/1117685", "year": 2004, "id": 1117685, "description": "Beat Assailant - Hard Twelve - The Ante (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/152754569", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 59217929, "condition": "Very Good Plus (VG+)", "posted": "2012-04-11T18:14:57", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/59217929", "comments": "Sticker residue at top right corner of sleeve.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "ACC006", "resource_url": "https://api.discogs.com/releases/726988", "year": 2004, "id": 726988, "description": "Bicasso - Respect Yourself / For Rent / Let's Begin (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/59217929", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Not Graded", "id": 60302175, "condition": "Mint (M)", "posted": "2012-04-25T13:16:30", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/60302175", "comments": "STILL FACTORY SEALED.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "INF 001 TLG-CD-001", "resource_url": "https://api.discogs.com/releases/1308055", "year": 2007, "id": 1308055, "description": "Bouncer Crew - Xtasy For Ladies (CD, Album)"}, "resource_url": "https://api.discogs.com/marketplace/listings/60302175", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 129243050, "condition": "Very Good Plus (VG+)", "posted": "2013-11-20T14:42:32", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/129243050", "comments": "Plain black sleeve. Very nice, clean vinyl. BPMs written in small numerals on center labels.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "CPV 0400", "resource_url": "https://api.discogs.com/releases/997074", "year": 2006, "id": 997074, "description": "Chimp Beams - R2 (Libyus Mix) (12\", EP)"}, "resource_url": "https://api.discogs.com/marketplace/listings/129243050", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 38196213, "condition": "Very Good Plus (VG+)", "posted": "2011-06-11T14:22:57", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/38196213", "comments": "Nice, clean vinyl.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "INT 8 85622 6, 7243 8 85622 6 3", "resource_url": "https://api.discogs.com/releases/1239638", "year": 1998, "id": 1239638, "description": "Cornershop - Sleep On The Left Side (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/38196213", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Mint (M)", "id": 22048701, "condition": "Mint (M)", "posted": "2010-04-14T13:45:36", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/22048701", "comments": "STILL FACTORY SEALED.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "UR12 031", "resource_url": "https://api.discogs.com/releases/98220", "year": 0, "id": 98220, "description": "DJs Wally & Swingsett / Bobby Matos - Righteous Like A Brother (DJ's Wally & Swingsett Remix) / Guiro Electro (Rainer Tr\u00fcby Trio Remix) (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/22048701", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 127085013, "condition": "Very Good Plus (VG+)", "posted": "2013-11-07T12:29:49", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/127085013", "comments": "Placeholder sticker on one center label.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "STH 2051", "resource_url": "https://api.discogs.com/releases/102572", "year": 2002, "id": 102572, "description": "Dooley O - Watch My Moves 1990 (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/127085013", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 129025901, "condition": "Very Good Plus (VG+)", "posted": "2013-11-19T11:43:54", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/129025901", "comments": "In generic Citrona sleeve. BPMs written in small numerals on center labels.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "CIT-006", "resource_url": "https://api.discogs.com/releases/417926", "year": 2005, "id": 417926, "description": "First Floor Brothers, The - Chi-Town Strut (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/129025901", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Not Graded", "id": 20810838, "condition": "Mint (M)", "posted": "2011-09-28T11:35:01", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/20810838", "comments": "STILL SEALED.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "LKR004", "resource_url": "https://api.discogs.com/releases/394740", "year": 2003, "id": 394740, "description": "Foreign Legion (2) - Roommate Joint (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/20810838", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 127234518, "condition": "Very Good Plus (VG+)", "posted": "2013-11-08T16:41:15", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/127234518", "comments": "One light surface mark across side B. This mark does not effect playback.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "JJR 1006", "resource_url": "https://api.discogs.com/releases/985430", "year": 2006, "id": 985430, "description": "Frank-N-Dank - What Up / The Hustle (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/127234518", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Not Graded", "id": 34739072, "condition": "Very Good Plus (VG+)", "posted": "2014-02-14T12:53:14", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/34739072", "comments": "Very nice, clean copy. Just a touch away from NM. Plain white paper sleeve.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "RAMP020", "resource_url": "https://api.discogs.com/releases/2007688", "year": 2009, "id": 2007688, "description": "Hot City - Hot City Bass (10\", W/Lbl)"}, "resource_url": "https://api.discogs.com/marketplace/listings/34739072", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Near Mint (NM or M-)", "id": 57194290, "condition": "Near Mint (NM or M-)", "posted": "2012-03-21T15:50:31", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/57194290", "comments": "", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "SCH 004", "resource_url": "https://api.discogs.com/releases/1624293", "year": 1997, "id": 1624293, "description": "Jeswa - Skone (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/57194290", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Generic", "id": 131311242, "condition": "Very Good (VG)", "posted": "2013-12-03T14:02:50", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/131311242", "comments": "Plain black sleeve. Surface wear, mainly cosmetic. VG in appearance, play quality is VG+", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "GAMM004", "resource_url": "https://api.discogs.com/releases/296052", "year": 2004, "id": 296052, "description": "Johnny Darkos - Supreme Love (12\", Promo)"}, "resource_url": "https://api.discogs.com/marketplace/listings/131311242", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Generic", "id": 37431871, "condition": "Very Good Plus (VG+)", "posted": "2011-05-25T14:27:01", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/37431871", "comments": "BPM written on side A center label.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "WMR001", "resource_url": "https://api.discogs.com/releases/1027286", "year": 2007, "id": 1027286, "description": "Keno 1* & Hermit, The - Poppa Heavy (12\", Promo)"}, "resource_url": "https://api.discogs.com/marketplace/listings/37431871", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Not Graded", "id": 133996557, "condition": "Mint (M)", "posted": "2013-12-19T19:19:18", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/133996557", "comments": "BRAND NEW, STILL FACTORY SEALED.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "DBM001", "resource_url": "https://api.discogs.com/releases/2303699", "year": 2010, "id": 2303699, "description": "Kev Brown - Random Joints (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/133996557", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Generic", "id": 38365680, "condition": "Very Good Plus (VG+)", "posted": "2011-06-15T19:00:55", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/38365680", "comments": "", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "CAS 8924-S1, XSS 8924", "resource_url": "https://api.discogs.com/releases/1398608", "year": 1997, "id": 1398608, "description": "Kulcha Don Featuring Fugees - Bellevue \"Da Bomb\" (12\", Promo)"}, "resource_url": "https://api.discogs.com/marketplace/listings/38365680", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 113607427, "condition": "Very Good Plus (VG+)", "posted": "2013-08-15T17:47:16", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/113607427", "comments": "In original shrink wrap.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "OH 227 SV", "resource_url": "https://api.discogs.com/releases/1003585", "year": 2006, "id": 1003585, "description": "Ladybug Mecca - Dogg Starr (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/113607427", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 65294948, "condition": "Very Good Plus (VG+)", "posted": "2012-06-20T12:51:25", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/65294948", "comments": "Placeholder sticker on each center label.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "QP 0079-0", "resource_url": "https://api.discogs.com/releases/1138004", "year": 2007, "id": 1138004, "description": "Lifesavas - Gutterfly / A Serpent's Love (12\", Maxi)"}, "resource_url": "https://api.discogs.com/marketplace/listings/65294948", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 149030188, "condition": "Very Good Plus (VG+)", "posted": "2014-03-17T19:42:05", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/149030188", "comments": "Light wear, plays fine. 3\u201d x 1.5\u201d sticker from distribution company on front of sleeve. Small bend to top right sleeve corner.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "FC12015", "resource_url": "https://api.discogs.com/releases/256835", "year": 2004, "id": 256835, "description": "Little Brother (3), J. Sands, Ambersunshower - Hip Hop Love Soul Sampler 2 (12\", Promo)"}, "resource_url": "https://api.discogs.com/marketplace/listings/149030188", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Generic", "id": 69281186, "condition": "Very Good Plus (VG+)", "posted": "2012-07-25T17:09:35", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/69281186", "comments": "Plain black sleeve. Nice, clean copy! Removable price tag on center label.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "VPRD-5221, none", "resource_url": "https://api.discogs.com/releases/3410917", "year": 1993, "id": 3410917, "description": "Louchie Lou & Michie One - Rich Girl (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/69281186", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good (VG)", "id": 16979011, "condition": "Near Mint (NM or M-)", "posted": "2014-02-14T14:11:03", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/16979011", "comments": "Bottom left and top right corners of sleeve has bends.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "PJMS0062", "resource_url": "https://api.discogs.com/releases/99605", "year": 2002, "id": 99605, "description": "Mousse T. Feat. Emma Lanford - Fire (2x12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/16979011", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 14794971, "condition": "Very Good Plus (VG+)", "posted": "2009-10-10T14:32:11", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/14794971", "comments": "", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "bd012", "resource_url": "https://api.discogs.com/releases/205641", "year": 1999, "id": 205641, "description": "New Flesh For Old - Eye Of The Hurricane (12\", Single)"}, "resource_url": "https://api.discogs.com/marketplace/listings/14794971", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 127556691, "condition": "Very Good Plus (VG+)", "posted": "2013-11-11T16:57:25", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/127556691", "comments": "BPM's written in small numerals on center labels.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "S0R0010", "resource_url": "https://api.discogs.com/releases/858981", "year": 2006, "id": 858981, "description": "Nick Andre + E Da Boss / DJ Enki - The Singles (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/127556691", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 43776266, "condition": "Very Good Plus (VG+)", "posted": "2011-09-20T13:15:14", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/43776266", "comments": "Side A has one very light surface mark that does not effect playback. Side B = NM. 3 spots of dry sticker residue near top right corner of sleeve.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "CWR12002", "resource_url": "https://api.discogs.com/releases/1706531", "year": 2004, "id": 1706531, "description": "Nine:Fifteen - Deluxe Laminated (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/43776266", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 24978380, "condition": "Very Good Plus (VG+)", "posted": "2010-06-29T11:24:43", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/24978380", "comments": "", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "GFS-100-1", "resource_url": "https://api.discogs.com/releases/242274", "year": 2003, "id": 242274, "description": "Paris (2) - FNB / Evil (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/24978380", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Not Graded", "id": 73855107, "condition": "Very Good Plus (VG+)", "posted": "2012-09-11T12:53:11", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/73855107", "comments": "Very nice, clean copy! BPM sticker on sleeve.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "36295-0", "resource_url": "https://api.discogs.com/releases/1623302", "year": 2007, "id": 1623302, "description": "Politik, The - Moonlight (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/73855107", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 122751128, "condition": "Very Good Plus (VG+)", "posted": "2013-10-09T15:14:26", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/122751128", "comments": "A few light hairline marks that do not effect playback. In original stickered sleeve.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "G4120011", "resource_url": "https://api.discogs.com/releases/477800", "year": 2001, "id": 477800, "description": "Qwel - Face Value (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/122751128", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 151533587, "condition": "Very Good Plus (VG+)", "posted": "2014-03-30T17:49:08", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/151533587", "comments": "Nice, clean vinyl and sleeve. Price tag on sleeve.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "OM 048EP", "resource_url": "https://api.discogs.com/releases/1140912", "year": 2000, "id": 1140912, "description": "Radar (2) - Antimatter (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/151533587", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 118549111, "condition": "Very Good Plus (VG+)", "posted": "2013-09-16T17:23:49", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/118549111", "comments": "", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "TR396-045", "resource_url": "https://api.discogs.com/releases/1432961", "year": 2008, "id": 1432961, "description": "Shawn Jackson (2) - Feelin' Jack (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/118549111", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Generic", "id": 118548785, "condition": "Very Good Plus (VG+)", "posted": "2013-09-16T17:05:13", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/118548785", "comments": "Comes in plain clear plastic sleeve. Bottom center of sleeve has split.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "TR396-053", "resource_url": "https://api.discogs.com/releases/1634440", "year": 2009, "id": 1634440, "description": "Shawn Jackson (2) - Maan Up! (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/118548785", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Generic", "id": 148368100, "condition": "Very Good Plus (VG+)", "posted": "2014-03-12T19:39:09", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/148368100", "comments": "Plain black sleeve. Very nice, clean vinyl, close to NM. Price tag on one center label.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "ORO9992", "resource_url": "https://api.discogs.com/releases/766962", "year": 2000, "id": 766962, "description": "Sunspot Jonz - Unleashed (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/148368100", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Generic", "id": 124841742, "condition": "Very Good Plus (VG+)", "posted": "2013-10-23T15:15:52", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/124841742", "comments": "One series of surface marks that look to be the result of the manufacturing process. These marks do not effect playback. Removable price tag on one center label. Plain black sleeve.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "VPRD 6365", "resource_url": "https://api.discogs.com/releases/1664807", "year": 2000, "id": 1664807, "description": "Devonte & Tanto Metro* / Beenie Man - Say Wodee / Bookshelf (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/124841742", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 33275280, "condition": "Mint (M)", "posted": "2011-02-16T14:20:59", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/33275280", "comments": "Unplayed.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "ag104", "resource_url": "https://api.discogs.com/releases/313857", "year": 2000, "id": 313857, "description": "Textile Ranch - The Dream Of The Murderer's Ship Pulling Out (7\", Whi)"}, "resource_url": "https://api.discogs.com/marketplace/listings/33275280", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Generic", "id": 127234714, "condition": "Very Good Plus (VG+)", "posted": "2013-11-08T16:55:30", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/127234714", "comments": "Plain white sleeve.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "AV 432, SSR 1017", "resource_url": "https://api.discogs.com/releases/673167", "year": 2004, "id": 673167, "description": "Theodore Unit - Who We Are (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/127234714", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 63095779, "condition": "Very Good Plus (VG+)", "posted": "2012-05-25T14:05:14", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/63095779", "comments": "Price tag on sleeve.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "SUN 444", "resource_url": "https://api.discogs.com/releases/518122", "year": 1986, "id": 518122, "description": "Vicious Rumor Club, The* - Rumor Rap (Yeah, Yeah That's It) (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/63095779", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 3.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 131301578, "condition": "Very Good Plus (VG+)", "posted": "2013-12-03T13:32:19", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/131301578", "comments": "", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "NSD-16", "resource_url": "https://api.discogs.com/releases/589260", "year": 2005, "id": 589260, "description": "Vordul Mega - Believe / Stay Up / Hard Times Pt. 2 (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/131301578", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 4.98}, "allow_offers": false, "sleeve_condition": "Not Graded", "id": 111502317, "condition": "Mint (M)", "posted": "2013-07-30T14:35:58", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/111502317", "comments": "BRAND NEW, UNPLAYED.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "STH7030", "resource_url": "https://api.discogs.com/releases/1841411", "year": 2009, "id": 1841411, "description": "Koushik - Nothing's The Same (7\", Single)"}, "resource_url": "https://api.discogs.com/marketplace/listings/111502317", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 4.99}, "allow_offers": false, "sleeve_condition": "Mint (M)", "id": 20988399, "condition": "Mint (M)", "posted": "2010-08-05T13:50:50", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/20988399", "comments": "STILL FACTORY SEALED.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "GCR 7056-1", "resource_url": "https://api.discogs.com/releases/509363", "year": 2001, "id": 509363, "description": "Aceyalone - Microphones / Keep Rappin' & Spinnin' (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/20988399", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 4.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 44564812, "condition": "Very Good Plus (VG+)", "posted": "2014-02-14T14:59:56", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/44564812", "comments": "Original printed inner sleeve included.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "MSB-6593", "resource_url": "https://api.discogs.com/releases/2766992", "year": 1978, "id": 2766992, "description": "B.J. Thomas - Happy Man (LP)"}, "resource_url": "https://api.discogs.com/marketplace/listings/44564812", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 4.99}, "allow_offers": false, "sleeve_condition": "Generic", "id": 27124744, "condition": "Very Good Plus (VG+)", "posted": "2014-02-13T22:04:44", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/27124744", "comments": "Writing on one center label.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "RT 9401", "resource_url": "https://api.discogs.com/releases/1610543", "year": 1990, "id": 1610543, "description": "Bad Boy Posse - Break North / Gimme The Mic (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/27124744", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 4.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 120908773, "condition": "Very Good Plus (VG+)", "posted": "2013-09-28T12:53:20", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/120908773", "comments": "", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "ASW1003", "resource_url": "https://api.discogs.com/releases/1140129", "year": 2007, "id": 1140129, "description": "Buff1 - Pretty Baby / SUPREME (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/120908773", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 4.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 75818257, "condition": "Very Good Plus (VG+)", "posted": "2014-02-14T12:04:59", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/75818257", "comments": "Nice, clean vinyl.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "RAW015", "resource_url": "https://api.discogs.com/releases/1755293", "year": 2009, "id": 1755293, "description": "Ciara (2) Feat Justin Timberlake - Love Sex Magic (House Remixes) (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/75818257", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 4.99}, "allow_offers": false, "sleeve_condition": "Generic", "id": 127559780, "condition": "Very Good Plus (VG+)", "posted": "2013-11-11T19:49:24", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/127559780", "comments": "Plain white sleeve. Very nice, clean vinyl. BPM's written in small numerals on center labels.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "AFA-FW10", "resource_url": "https://api.discogs.com/releases/924627", "year": 2006, "id": 924627, "description": "Dr. Delay* - Rule Of Thumb (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/127559780", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 4.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 11557024, "condition": "Very Good Plus (VG+)", "posted": "2014-02-14T12:33:19", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/11557024", "comments": "Nice, clean vinyl. Tiny notch cut on sleeve. Original shrink wrap with sticker still intact.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "0-66305", "resource_url": "https://api.discogs.com/releases/64382", "year": 1993, "id": 64382, "description": "Ethyl Meatplow - Queenie (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/11557024", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 4.99}, "allow_offers": false, "sleeve_condition": "Not Graded", "id": 20810805, "condition": "Mint (M)", "posted": "2010-03-13T14:36:31", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/20810805", "comments": "BRAND NEW, STILL FACTORY SEALED.", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "CDE 0010-1", "resource_url": "https://api.discogs.com/releases/150907", "year": 2003, "id": 150907, "description": "Fakts One - The Show Starter / Life Music / We Gonna... (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/20810805", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 4.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 151438387, "condition": "Near Mint (NM or M-)", "posted": "2014-03-29T16:52:55", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/151438387", "comments": "", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "LKR002", "resource_url": "https://api.discogs.com/releases/693318", "year": 2002, "id": 693318, "description": "Foreign Legion (2) - Voodoo Star (12\")"}, "resource_url": "https://api.discogs.com/marketplace/listings/151438387", "audio": false}, {"status": "For Sale", "price": {"currency": "USD", "value": 4.99}, "allow_offers": false, "sleeve_condition": "Very Good Plus (VG+)", "id": 118549560, "condition": "Very Good Plus (VG+)", "posted": "2013-09-16T17:54:23", "ships_from": "United States", "uri": "http://www.discogs.com/sell/item/118549560", "comments": "", "seller": {"username": "360Vinyl", "resource_url": "https://api.discogs.com/users/360Vinyl", "id": 493556}, "release": {"catalog_number": "EMERG01", "resource_url": "https://api.discogs.com/releases/1335498", "year": 2008, "id": 1335498, "description": "Invincible (2) - ShapeShifters / Keep Goin' / No Easy Answers (12\", Single)"}, "resource_url": "https://api.discogs.com/marketplace/listings/118549560", "audio": false}]} 16 | -------------------------------------------------------------------------------- /tests/fixtures/get_label: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 3140 8 | Date: Tue, 29 Jul 2014 19:51:16 GMT 9 | X-Varnish: 1931344079 1931343140 10 | Age: 4 11 | Via: 1.1 varnish 12 | Connection: close 13 | 14 | {"profile": "Classic Techno label from Detroit, USA.\r\n[b]Label owner:[/b] [a=Carl Craig].\r\n", "releases_url": "https://api.discogs.com/labels/1/releases", "name": "Planet E", "contact_info": "Planet E Communications\r\nP.O. Box 27218\r\nDetroit, 48227, USA\r\n\r\np: 313.874.8729 \r\nf: 313.874.8732\r\n\r\nemail: info AT Planet-e DOT net\r\n", "uri": "http://www.discogs.com/label/1-Planet-E", "sublabels": [{"resource_url": "https://api.discogs.com/labels/86537", "id": 86537, "name": "Antidote (4)"}, {"resource_url": "https://api.discogs.com/labels/41841", "id": 41841, "name": "Community Projects"}, {"resource_url": "https://api.discogs.com/labels/153760", "id": 153760, "name": "Guilty Pleasures"}, {"resource_url": "https://api.discogs.com/labels/31405", "id": 31405, "name": "I Ner Zon Sounds"}, {"resource_url": "https://api.discogs.com/labels/294738", "id": 294738, "name": "Planet E Communications, Inc."}, {"resource_url": "https://api.discogs.com/labels/488315", "id": 488315, "name": "TWPENTY"}], "urls": ["http://planet-e.net/", "http://www.facebook.com/planetedetroit", "http://twitter.com/planetedetroit", "http://www.flickr.com/photos/planetedetroit/", "http://myspace.com/planetedetroit", "http://myspace.com/planetecom", "http://plus.google.com/100841702106447505236", "http://www.discogs.com/user/planetedetroit", "http://en.wikipedia.org/wiki/Planet_E_Communications", "http://soundcloud.com/planetedetroit", "http://planetecommunications.bandcamp.com/", "http://www.youtube.com/user/planetedetroit", "http://vimeo.com/user1265384"], "images": [{"uri": "https://api.discogs.com/image/L-1-1111053865.png", "height": 24, "width": 132, "resource_url": "https://api.discogs.com/image/L-1-1111053865.png", "type": "primary", "uri150": "https://api.discogs.com/image/L-150-1-1111053865.png"}, {"uri": "https://api.discogs.com/image/L-1-1139403654.gif", "height": 126, "width": 587, "resource_url": "https://api.discogs.com/image/L-1-1139403654.gif", "type": "secondary", "uri150": "https://api.discogs.com/image/L-150-1-1139403654.gif"}, {"uri": "https://api.discogs.com/image/L-1-1200165078.gif", "height": 196, "width": 600, "resource_url": "https://api.discogs.com/image/L-1-1200165078.gif", "type": "secondary", "uri150": "https://api.discogs.com/image/L-150-1-1200165078.gif"}, {"uri": "https://api.discogs.com/image/L-1-1258998163.png", "height": 121, "width": 275, "resource_url": "https://api.discogs.com/image/L-1-1258998163.png", "type": "secondary", "uri150": "https://api.discogs.com/image/L-150-1-1258998163.png"}, {"uri": "https://api.discogs.com/image/L-1-1348359908-8971.jpeg", "height": 720, "width": 382, "resource_url": "https://api.discogs.com/image/L-1-1348359908-8971.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/L-150-1-1348359908-8971.jpeg"}, {"uri": "https://api.discogs.com/image/L-1-1360101583-3643.jpeg", "height": 189, "width": 600, "resource_url": "https://api.discogs.com/image/L-1-1360101583-3643.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/L-150-1-1360101583-3643.jpeg"}], "resource_url": "https://api.discogs.com/labels/1", "id": 1, "data_quality": "Needs Vote"} 15 | -------------------------------------------------------------------------------- /tests/fixtures/get_label_releases: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Link: ; rel="last", ; rel="next" 7 | Server: lighttpd 8 | Content-Length: 758 9 | Date: Tue, 29 Jul 2014 19:58:12 GMT 10 | X-Varnish: 1931448274 11 | Age: 0 12 | Via: 1.1 varnish 13 | Connection: close 14 | 15 | {"pagination": {"per_page": 2, "items": 338, "page": 1, "urls": {"last": "https://api.discogs.com/labels/1/releases?per_page=2&page=169", "next": "https://api.discogs.com/labels/1/releases?per_page=2&page=2"}, "pages": 169}, "releases": [{"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-2801-1335473692.jpeg", "format": "CD, Mixed", "title": "DJ-Kicks", "catno": "!K7071CD", "resource_url": "https://api.discogs.com/releases/2801", "artist": "Andrea Parker", "id": 2801}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-9922-1220186706.jpeg", "format": "CD, Album, P/Mixed", "title": "Programmed", "catno": "546 137-2", "resource_url": "https://api.discogs.com/releases/9922", "artist": "Innerzone Orchestra", "id": 9922}]} 16 | -------------------------------------------------------------------------------- /tests/fixtures/get_listing: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 780 8 | Date: Tue, 15 Jul 2014 19:59:59 GMT 9 | X-Varnish: 1702965334 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: keep-alive 13 | 14 | { 15 | "status": "For Sale", 16 | "price": { 17 | "currency": "USD", 18 | "value": 120 19 | }, 20 | "original_price": { 21 | "curr_abbr": "USD", 22 | "curr_id": 1, 23 | "formatted": "$120.00", 24 | "value": 120.0 25 | }, 26 | "allow_offers": false, 27 | "sleeve_condition": "Mint (M)", 28 | "id": 172723812, 29 | "condition": "Mint (M)", 30 | "posted": "2014-07-15T12:55:01-07:00", 31 | "ships_from": "United States", 32 | "uri": "http://www.discogs.com/sell/item/172723812", 33 | "comments": "Brand new... Still sealed!", 34 | "seller": { 35 | "username": "Booms528", 36 | "avatar_url": "https://secure.gravatar.com/avatar/8aa676fcfa2be14266d0ccad88da2cc4?s=500&r=pg&d=mm", 37 | "resource_url": "https://api.discogs.com/users/Booms528", 38 | "url": "https://api.discogs.com/users/Booms528", 39 | "id": 1369620, 40 | "shipping": "Buyer responsible for shipping. Price depends on distance but is usually $5-10.", 41 | "payment": "PayPal", 42 | "stats": { 43 | "rating": "100", 44 | "stars": 5.0, 45 | "total": 15 46 | } 47 | }, 48 | "shipping_price": { 49 | "currency": "USD", 50 | "value": 2.50 51 | }, 52 | "original_shipping_price": { 53 | "curr_abbr": "USD", 54 | "curr_id": 1, 55 | "formatted": "$2.50", 56 | "value": 2.5 57 | }, 58 | "release": { 59 | "catalog_number": "541125-1, 1-541125 (K1)", 60 | "resource_url": "https://api.discogs.com/releases/5610049", 61 | "year": 2014, 62 | "id": 5610049, 63 | "description": "LCD Soundsystem - The Long Goodbye: LCD Soundsystem Live At Madison Square Garden (5xLP + Box)", 64 | "thumbnail": "https://api-img.discogs.com/UsvcarhmrXb0km4QH_dRP8gEf3E=/fit-in/600x600/filters:strip_icc():format(jpeg):mode_rgb():quality(40)/discogs-images/R-5610049-1399500556-9283.jpeg.jpg" 65 | }, 66 | "resource_url": "https://api.discogs.com/marketplace/listings/172723812", 67 | "audio": false 68 | } -------------------------------------------------------------------------------- /tests/fixtures/get_master: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 4875 8 | Date: Tue, 29 Jul 2014 19:35:39 GMT 9 | X-Varnish: 1931104915 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: close 13 | 14 | {"styles": ["Techno", "Euro House"], "genres": ["Electronic"], "videos": [{"duration": 291, "description": "Apotheosis - O Fortuna", "embed": true, "uri": "http://www.youtube.com/watch?v=ijm8LL42WTE", "title": "Apotheosis - O Fortuna"}, {"duration": 291, "description": "Apotheosis - O Fortuna", "embed": true, "uri": "http://www.youtube.com/watch?v=8m4RAjgfm3U", "title": "Apotheosis - O Fortuna"}, {"duration": 292, "description": "Apotheosis - O Fortuna (Apocalypse Chorus Mix) [HQ]", "embed": true, "uri": "http://www.youtube.com/watch?v=61R_TcsLAnM", "title": "Apotheosis - O Fortuna (Apocalypse Chorus Mix) [HQ]"}, {"duration": 293, "description": "Apotheosis - O Fortuna (Apocalypse Chorus Mix) (A)", "embed": true, "uri": "http://www.youtube.com/watch?v=i02UPBrAC-Y", "title": "Apotheosis - O Fortuna (Apocalypse Chorus Mix) (A)"}, {"duration": 430, "description": "APOTHEOSIS An Other Thing (Metropoll Sky Undermix)", "embed": true, "uri": "http://www.youtube.com/watch?v=LHpbcrspol8", "title": "APOTHEOSIS An Other Thing (Metropoll Sky Undermix)"}, {"duration": 436, "description": "Apotheosis - An Other Thing (Metropoll Sky Undermix) (B)", "embed": true, "uri": "http://www.youtube.com/watch?v=ZrFIFvZ9YhA", "title": "Apotheosis - An Other Thing (Metropoll Sky Undermix) (B)"}, {"duration": 435, "description": "APOTHEOSIS B1 An Other Thing (Metropoll Sky UnderMix)", "embed": true, "uri": "http://www.youtube.com/watch?v=4OWrQvYSdyA", "title": "APOTHEOSIS B1 An Other Thing (Metropoll Sky UnderMix)"}, {"duration": 291, "description": "Apotheosis - o fortuna (apocalypse chorus mix) (1991)", "embed": true, "uri": "http://www.youtube.com/watch?v=iAmpVaFIzDQ", "title": "Apotheosis - o fortuna (apocalypse chorus mix) (1991)"}], "title": "O Fortuna", "main_release": 42575, "main_release_url": "https://api.discogs.com/releases/42575", "uri": "http://www.discogs.com/Apotheosis-O-Fortuna/master/33687", "artists": [{"join": "", "name": "Apotheosis", "anv": "", "tracks": "", "role": "", "resource_url": "https://api.discogs.com/artists/7678", "id": 7678}], "versions_url": "https://api.discogs.com/masters/33687/versions", "year": 1991, "images": [{"uri": "https://api.discogs.com/image/R-42575-1225200540.jpeg", "height": 592, "width": 600, "resource_url": "https://api.discogs.com/image/R-42575-1225200540.jpeg", "type": "primary", "uri150": "https://api.discogs.com/image/R-150-42575-1225200540.jpeg"}, {"uri": "https://api.discogs.com/image/R-42575-1225200548.jpeg", "height": 602, "width": 600, "resource_url": "https://api.discogs.com/image/R-42575-1225200548.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/R-150-42575-1225200548.jpeg"}, {"uri": "https://api.discogs.com/image/R-42575-1225014901.jpeg", "height": 603, "width": 600, "resource_url": "https://api.discogs.com/image/R-42575-1225014901.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/R-150-42575-1225014901.jpeg"}, {"uri": "https://api.discogs.com/image/R-42575-1225014906.jpeg", "height": 606, "width": 600, "resource_url": "https://api.discogs.com/image/R-42575-1225014906.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/R-150-42575-1225014906.jpeg"}], "resource_url": "https://api.discogs.com/masters/33687", "tracklist": [{"duration": "5:10", "position": "A", "type_": "track", "extraartists": [{"join": "", "name": "Luc Rigaux", "anv": "", "tracks": "", "role": "Producer [Re-produced], Arranged By [Re-arranged]", "resource_url": "https://api.discogs.com/artists/111631", "id": 111631}, {"join": "", "name": "Patrick Samoy", "anv": "", "tracks": "", "role": "Producer [Re-produced], Arranged By [Re-arranged]", "resource_url": "https://api.discogs.com/artists/111632", "id": 111632}, {"join": "", "name": "Carl Orff", "anv": "", "tracks": "", "role": "Written-By", "resource_url": "https://api.discogs.com/artists/102506", "id": 102506}], "title": "O Fortuna (Apocalypse Chorus Mix)"}, {"duration": "7:15", "position": "B", "type_": "track", "extraartists": [{"join": "", "name": "Ronald Stock", "anv": "", "tracks": "", "role": "Engineer", "resource_url": "https://api.discogs.com/artists/721079", "id": 721079}, {"join": "", "name": "Steve Humby", "anv": "", "tracks": "", "role": "Engineer", "resource_url": "https://api.discogs.com/artists/671092", "id": 671092}, {"join": "", "name": "Empire Control", "anv": "", "tracks": "", "role": "Producer", "resource_url": "https://api.discogs.com/artists/171429", "id": 171429}, {"join": "", "name": "Luc Rigaux", "anv": "L. Rigaux", "tracks": "", "role": "Written-By", "resource_url": "https://api.discogs.com/artists/111631", "id": 111631}, {"join": "", "name": "Patrick Samoy", "anv": "P. Samoy", "tracks": "", "role": "Written-By", "resource_url": "https://api.discogs.com/artists/111632", "id": 111632}], "title": "An Other Thing (Metropoll Sky UnderMix)"}], "id": 33687, "data_quality": "Correct"} 15 | -------------------------------------------------------------------------------- /tests/fixtures/get_master_versions: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Link: ; rel="next", ; rel="prev", ; rel="last", ; rel="first" 7 | Server: lighttpd 8 | Content-Length: 1584 9 | Date: Tue, 29 Jul 2014 19:47:44 GMT 10 | X-Varnish: 1931290184 11 | Age: 0 12 | Via: 1.1 varnish 13 | Connection: close 14 | 15 | {"pagination": {"per_page": 4, "items": 9, "page": 2, "urls": {"next": "https://api.discogs.com/masters/33687/versions?per_page=4&page=3", "prev": "https://api.discogs.com/masters/33687/versions?per_page=4&page=1", "last": "https://api.discogs.com/masters/33687/versions?per_page=4&page=3", "first": "https://api.discogs.com/masters/33687/versions?per_page=4&page=1"}, "pages": 3}, "versions": [{"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-1418157-1218011131.jpeg", "title": "O Fortuna", "country": "Belgium", "format": "Cass, Single", "label": "Indisc", "released": "1991", "catno": "300170-4", "resource_url": "https://api.discogs.com/releases/1418157", "id": 1418157}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-179412-1291392874.jpeg", "title": "O Fortuna", "country": "Germany", "format": "12\"", "label": "ZYX Records", "released": "1992", "catno": "ZYX 6743-12", "resource_url": "https://api.discogs.com/releases/179412", "id": 179412}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-84503-1205531119.jpeg", "title": "O Fortuna", "country": "Belgium", "format": "7\", Single", "label": "Indisc", "released": "1991", "catno": "DIS 8319", "resource_url": "https://api.discogs.com/releases/84503", "id": 84503}, {"status": "Accepted", "thumb": "https://api.discogs.com/image/R-150-307198-1195545301.jpeg", "title": "O Fortuna", "country": "US", "format": "CD, Single, Car", "label": "Radikal Records", "released": "1992", "catno": "CDS 12299-2", "resource_url": "https://api.discogs.com/releases/307198", "id": 307198}]} 16 | -------------------------------------------------------------------------------- /tests/fixtures/get_oauth_identity: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 135 8 | Date: Thu, 31 Jul 2014 20:14:35 GMT 9 | X-Varnish: 1965254583 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: keep-alive 13 | 14 | {"username": "R-Search", "resource_url": "https://api.discogs.com/users/R-Search", "consumer_name": "RicbraDiscogsBundle", "id": 557870} 15 | -------------------------------------------------------------------------------- /tests/fixtures/get_order: -------------------------------------------------------------------------------- 1 | HTTP/1.1: 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 780 8 | Date: Tue, 15 Jul 2014 19:59:59 GMT 9 | X-Varnish: 1702965334 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: keep-alive 13 | 14 | { 15 | "id": "1-1", 16 | "resource_url": "https://api.discogs.com/marketplace/orders/1-1", 17 | "messages_url": "https://api.discogs.com/marketplace/orders/1-1/messages", 18 | "uri": "http://www.discogs.com/sell/order/1-1", 19 | "status": "New Order", 20 | "next_status": [ 21 | "New Order", 22 | "Buyer Contacted", 23 | "Invoice Sent", 24 | "Payment Pending", 25 | "Payment Received", 26 | "Shipped", 27 | "Refund Sent", 28 | "Cancelled (Non-Paying Buyer)", 29 | "Cancelled (Item Unavailable)", 30 | "Cancelled (Per Buyer's Request)" 31 | ], 32 | "fee": { 33 | "currency": "USD", 34 | "value": 2.52 35 | }, 36 | "created": "2011-10-21T09:25:17", 37 | "items": [ 38 | { 39 | "release": { 40 | "id": 1, 41 | "description": "Persuader, The - Stockholm (2x12\")" 42 | }, 43 | "price": { 44 | "currency": "USD", 45 | "value": 42.0 46 | }, 47 | "id": 41578242 48 | } 49 | ], 50 | "shipping": { 51 | "currency": "USD", 52 | "value": 0.0 53 | }, 54 | "shipping_address": "Asdf Exampleton\n234 NE Asdf St.\nAsdf Town, Oregon, 14423\nUnited States\n\nPhone: 555-555-2733\nPaypal address: asdf@example.com", 55 | "additional_instructions": "please use sturdy packaging.", 56 | "seller": { 57 | "resource_url": "https://api.discogs.com/users/example_seller", 58 | "username": "example_seller", 59 | "id": 1 60 | }, 61 | "last_activity": "2011-10-21T09:25:17", 62 | "buyer": { 63 | "resource_url": "https://api.discogs.com/users/example_buyer", 64 | "username": "example_buyer", 65 | "id": 2 66 | }, 67 | "total": { 68 | "currency": "USD", 69 | "value": 42.0 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /tests/fixtures/get_orders: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 780 8 | Date: Tue, 15 Jul 2014 19:59:59 GMT 9 | X-Varnish: 1702965334 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: keep-alive 13 | 14 | { 15 | "pagination": { 16 | "per_page": 50, 17 | "pages": 1, 18 | "page": 1, 19 | "items": 1, 20 | "urls": {} 21 | }, 22 | "orders": [ 23 | { 24 | "status": "New Order", 25 | "fee": { 26 | "currency": "USD", 27 | "value": 2.52 28 | }, 29 | "created": "2011-10-21T09:25:17", 30 | "items": [ 31 | { 32 | "release": { 33 | "id": 1, 34 | "description": "Persuader, The - Stockholm (2x12\")" 35 | }, 36 | "price": { 37 | "currency": "USD", 38 | "value": 42.0 39 | }, 40 | "id": 41578242 41 | } 42 | ], 43 | "shipping": { 44 | "currency": "USD", 45 | "value": 0.0 46 | }, 47 | "shipping_address": "Asdf Exampleton\n234 NE Asdf St.\nAsdf Town, Oregon, 14423\nUnited States\n\nPhone: 555-555-2733\nPaypal address: asdf@example.com", 48 | "additional_instructions": "please use sturdy packaging.", 49 | "seller": { 50 | "resource_url": "https://api.discogs.com/users/example_seller", 51 | "username": "example_seller", 52 | "id": 1 53 | }, 54 | "last_activity": "2011-10-21T09:25:17", 55 | "buyer": { 56 | "resource_url": "https://api.discogs.com/users/example_buyer", 57 | "username": "example_buyer", 58 | "id": 2 59 | }, 60 | "total": { 61 | "currency": "USD", 62 | "value": 42.0 63 | }, 64 | "id": "1-1", 65 | "resource_url": "https://api.discogs.com/marketplace/orders/1-1", 66 | "messages_url": "https://api.discogs.com/marketplace/orders/1-1/messages", 67 | "uri": "http://www.discogs.com/sell/order/1-1", 68 | "next_status": [ 69 | "New Order", 70 | "Buyer Contacted", 71 | "Invoice Sent", 72 | "Payment Pending", 73 | "Payment Received", 74 | "Shipped", 75 | "Refund Sent", 76 | "Cancelled (Non-Paying Buyer)", 77 | "Cancelled (Item Unavailable)", 78 | "Cancelled (Per Buyer's Request)" 79 | ] 80 | } 81 | ] 82 | } -------------------------------------------------------------------------------- /tests/fixtures/get_profile: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 858 8 | Date: Thu, 31 Jul 2014 20:14:35 GMT 9 | X-Varnish: 1718492795 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: keep-alive 13 | 14 | {"profile": "", "banner_url": "", "wantlist_url": "https://api.discogs.com/users/maxperei/wants", "seller_num_ratings": 13, "rank": 57.0, "num_pending": 6, "id": 1861520, "buyer_rating": 100.0, "num_for_sale": 63, "home_page": "http://maxperei.info", "location": "France", "collection_folders_url": "https://api.discogs.com/users/maxperei/collection/folders", "username": "maxperei", "collection_fields_url": "https://api.discogs.com/users/maxperei/collection/fields", "releases_contributed": 7, "registered": "2013-05-26T05:59:09-07:00", "rating_avg": 4.48, "num_collection": 414, "releases_rated": 46, "curr_abbr": "", "seller_rating_stars": 5.0, "num_lists": 0, "name": "\u2234", "buyer_rating_stars": 5.0, "inventory_url": "https://api.discogs.com/users/maxperei/inventory", "uri": "https://www.discogs.com/user/maxperei", "buyer_num_ratings": 32, "avatar_url": "https://img.discogs.com/mDaw_OUjHspYLj77C_tcobr2eXc=/500x500/filters:strip_icc():format(jpeg):quality(40)/discogs-avatars/U-1861520-1498224434.jpeg.jpg", "resource_url": "https://api.discogs.com/users/maxperei", "seller_rating": 100.0} -------------------------------------------------------------------------------- /tests/fixtures/get_release: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Server: lighttpd 7 | Content-Length: 6299 8 | Date: Tue, 29 Jul 2014 19:20:12 GMT 9 | X-Varnish: 1930870444 10 | Age: 0 11 | Via: 1.1 varnish 12 | Connection: close 13 | 14 | {"status": "Accepted", "styles": ["Deep House"], "videos": [{"duration": 380, "description": "The Persuader - Vasastaden", "embed": true, "uri": "http://www.youtube.com/watch?v=5rA8CTKKEP4", "title": "The Persuader - Vasastaden"}, {"duration": 335, "description": "The Persuader-Stockholm-Sodermalm", "embed": true, "uri": "http://www.youtube.com/watch?v=QVdDhOnoR8k", "title": "The Persuader-Stockholm-Sodermalm"}, {"duration": 290, "description": "The Persuader (Jesper Dahlb\u00e4ck) - \u00d6stermalm", "embed": true, "uri": "http://www.youtube.com/watch?v=AHuQWcylaU4", "title": "The Persuader (Jesper Dahlb\u00e4ck) - \u00d6stermalm"}, {"duration": 175, "description": "The Persuader - Kungsholmen - Svek Records", "embed": true, "uri": "http://www.youtube.com/watch?v=sLZvvJVir5g", "title": "The Persuader - Kungsholmen - Svek Records"}, {"duration": 324, "description": "The Persuader - Gamla Stan - Svek Records", "embed": true, "uri": "http://www.youtube.com/watch?v=js_g1qtPmL0", "title": "The Persuader - Gamla Stan - Svek Records"}, {"duration": 289, "description": "The Persuader - Norrmalm", "embed": true, "uri": "http://www.youtube.com/watch?v=hy47qgyJeG0", "title": "The Persuader - Norrmalm"}], "series": [], "released_formatted": "Mar 1999", "labels": [{"id": 5, "resource_url": "https://api.discogs.com/labels/5", "catno": "SK032", "name": "Svek", "entity_type": "1"}], "estimated_weight": 460, "community": {"status": "Accepted", "rating": {"count": 95, "average": 4.48}, "have": 319, "contributors": [{"username": "teo", "resource_url": "https://api.discogs.com/users/teo"}, {"username": "Ultravod", "resource_url": "https://api.discogs.com/users/Ultravod"}, {"username": "MONK", "resource_url": "https://api.discogs.com/users/MONK"}, {"username": "herr_roessi", "resource_url": "https://api.discogs.com/users/herr_roessi"}, {"username": "Swedens_Finest", "resource_url": "https://api.discogs.com/users/Swedens_Finest"}, {"username": "daniel-phonk", "resource_url": "https://api.discogs.com/users/daniel-phonk"}, {"username": "sharevari", "resource_url": "https://api.discogs.com/users/sharevari"}, {"username": "cosmicdream", "resource_url": "https://api.discogs.com/users/cosmicdream"}, {"username": "moob", "resource_url": "https://api.discogs.com/users/moob"}, {"username": "irionman", "resource_url": "https://api.discogs.com/users/irionman"}, {"username": "PabloPlato", "resource_url": "https://api.discogs.com/users/PabloPlato"}, {"username": "tomazy", "resource_url": "https://api.discogs.com/users/tomazy"}, {"username": "NeedleCain", "resource_url": "https://api.discogs.com/users/NeedleCain"}, {"username": "more_music", "resource_url": "https://api.discogs.com/users/more_music"}, {"username": "teori", "resource_url": "https://api.discogs.com/users/teori"}, {"username": "disneyfacts", "resource_url": "https://api.discogs.com/users/disneyfacts"}, {"username": "baczbad", "resource_url": "https://api.discogs.com/users/baczbad"}], "want": 347, "submitter": {"username": "teo", "resource_url": "https://api.discogs.com/users/teo"}, "data_quality": "Complete and Correct"}, "released": "1999-03-00", "master_url": "https://api.discogs.com/masters/5427", "year": 1999, "images": [{"uri": "https://api.discogs.com/image/R-1-1193812031.jpeg", "height": 600, "width": 600, "resource_url": "https://api.discogs.com/image/R-1-1193812031.jpeg", "type": "primary", "uri150": "https://api.discogs.com/image/R-150-1-1193812031.jpeg"}, {"uri": "https://api.discogs.com/image/R-1-1193812053.jpeg", "height": 600, "width": 600, "resource_url": "https://api.discogs.com/image/R-1-1193812053.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/R-150-1-1193812053.jpeg"}, {"uri": "https://api.discogs.com/image/R-1-1193812072.jpeg", "height": 600, "width": 600, "resource_url": "https://api.discogs.com/image/R-1-1193812072.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/R-150-1-1193812072.jpeg"}, {"uri": "https://api.discogs.com/image/R-1-1193812091.jpeg", "height": 600, "width": 600, "resource_url": "https://api.discogs.com/image/R-1-1193812091.jpeg", "type": "secondary", "uri150": "https://api.discogs.com/image/R-150-1-1193812091.jpeg"}], "date_added": "2000-09-01T00:00:00", "format_quantity": 2, "id": 1, "genres": ["Electronic"], "thumb": "https://api.discogs.com/image/R-150-1-1193812031.jpeg", "extraartists": [{"join": "", "name": "Jesper Dahlb\u00e4ck", "anv": "", "tracks": "", "role": "Music By [All Tracks By]", "resource_url": "https://api.discogs.com/artists/239", "id": 239}], "title": "Stockholm", "country": "Sweden", "notes": "The song titles are the names of Stockholm's districts.\r\n", "identifiers": [{"type": "Matrix / Runout", "description": "A-Side", "value": "MPO SK 032 A1 G PHRUPMASTERGENERAL T27 LONDON"}, {"type": "Matrix / Runout", "description": "B-Side", "value": "MPO SK 032 B1"}, {"type": "Matrix / Runout", "description": "C-Side", "value": "MPO SK 032 C1"}, {"type": "Matrix / Runout", "description": "D-Side", "value": "MPO SK 032 D1"}], "companies": [{"name": "The Globe Studios", "entity_type": "23", "catno": "", "resource_url": "https://api.discogs.com/labels/271046", "id": 271046, "entity_type_name": "Recorded At"}, {"name": "MPO", "entity_type": "17", "catno": "", "resource_url": "https://api.discogs.com/labels/56025", "id": 56025, "entity_type_name": "Pressed By"}], "uri": "http://www.discogs.com/Persuader-Stockholm/release/1", "artists": [{"join": "", "name": "Persuader, The", "anv": "", "tracks": "", "role": "", "resource_url": "https://api.discogs.com/artists/1", "id": 1}], "formats": [{"descriptions": ["12\"", "33 \u2153 RPM"], "name": "Vinyl", "qty": "2"}], "date_changed": "2013-01-23T10:53:34", "lowest_price": 8.077169493076712, "resource_url": "https://api.discogs.com/releases/1", "master_id": 5427, "tracklist": [{"duration": "4:45", "position": "A", "type_": "track", "title": "\u00d6stermalm"}, {"duration": "6:11", "position": "B1", "type_": "track", "title": "Vasastaden"}, {"duration": "2:49", "position": "B2", "type_": "track", "title": "Kungsholmen"}, {"duration": "5:38", "position": "C1", "type_": "track", "title": "S\u00f6dermalm"}, {"duration": "4:52", "position": "C2", "type_": "track", "title": "Norrmalm"}, {"duration": "5:16", "position": "D", "type_": "track", "title": "Gamla Stan"}], "data_quality": "Complete and Correct"} 15 | -------------------------------------------------------------------------------- /tests/fixtures/search: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Reproxy-Status: yes 3 | Access-Control-Allow-Origin: * 4 | Cache-Control: public, must-revalidate 5 | Content-Type: application/json 6 | Link: ; rel="last", ; rel="next" 7 | Server: lighttpd 8 | Content-Length: 28159 9 | Date: Mon, 28 Jul 2014 20:20:20 GMT 10 | X-Varnish: 1915383613 11 | Age: 0 12 | Via: 1.1 varnish 13 | Connection: close 14 | 15 | {"pagination": {"per_page": 50, "items": 5661, "page": 1, "urls": {"last": "https://api.discogs.com/database/search?q=prodigy&per_page=50&type=release&page=114", "next": "https://api.discogs.com/database/search?q=prodigy&per_page=50&type=release&page=2"}, "pages": 114}, "results": [{"style": ["Breakbeat", "Big Beat"], "thumb": "https://api.discogs.com/image/R-90-2734257-1298624566.jpeg", "format": ["CD", "Compilation", "Unofficial Release"], "country": "", "barcode": ["4189883331725"], "uri": "/Prodigy-The-RestUnreleased-The-Last/release/2734257", "community": {"have": 6, "want": 8}, "label": ["Not On Label (The Prodigy)"], "catno": "PRODIGY 2811685", "year": "1997", "genre": ["Electronic"], "title": "Prodigy, The - The Rest, The Unreleased! The Last", "resource_url": "https://api.discogs.com/releases/2734257", "type": "release", "id": 2734257}, {"style": ["Breakbeat", "Broken Beat", "Happy Hardcore", "Big Beat", "Hardcore"], "thumb": "https://api.discogs.com/image/R-90-4251474-1359751198-2821.jpeg", "format": ["CD", "CD-ROM", "Compilation", "Unofficial Release"], "country": "Russia", "barcode": ["Fly Multimedia 0012"], "uri": "/Prodigy-Prodigy/release/4251474", "community": {"have": 1, "want": 3}, "label": ["Fly Multimedia", "Not On Label (The Prodigy)"], "catno": "none", "year": "1998", "genre": ["Electronic"], "title": "Prodigy* - Prodigy", "resource_url": "https://api.discogs.com/releases/4251474", "type": "release", "id": 4251474}, {"style": ["Breakbeat", "Broken Beat", "Happy Hardcore", "Big Beat", "Hardcore"], "thumb": "https://api.discogs.com/image/R-90-2858963-1333827232.jpeg", "format": ["CD", "CD-ROM", "Compilation", "Unofficial Release"], "country": "Russia", "barcode": ["FFF 019905"], "uri": "/Prodigy-Prodigy/release/2858963", "community": {"have": 3, "want": 11}, "label": ["Not On Label (The Prodigy)"], "catno": "none", "year": "1999", "genre": ["Electronic"], "title": "Prodigy* - Prodigy", "resource_url": "https://api.discogs.com/releases/2858963", "type": "release", "id": 2858963}, {"style": ["Breakbeat", "Broken Beat", "Happy Hardcore", "Big Beat", "Hardcore"], "thumb": "https://api.discogs.com/image/R-90-4847483-1377443897-3420.jpeg", "format": ["CD", "CD-ROM", "Compilation", "Unofficial Release"], "country": "Russia", "barcode": ["6 456489 431561", "6456489431561", "MP3 12/2007/64"], "uri": "/Prodigy-Prodigy/release/4847483", "community": {"have": 1, "want": 2}, "label": ["\u041c\u043e\u043d\u043e \u0426\u0435\u043d\u0442\u0440", "\u041e\u041e\u041e \"\u041c\u043e\u043d\u043e \u0426\u0435\u043d\u0442\u0440\""], "catno": "R CD GR0054", "year": "2008", "genre": ["Electronic"], "title": "Prodigy* - Prodigy", "resource_url": "https://api.discogs.com/releases/4847483", "type": "release", "id": 4847483}, {"style": ["Progressive House", "Electro"], "thumb": "https://api.discogs.com/image/R-90-1463583-1221644150.jpeg", "format": ["Vinyl", "12\"", "Single Sided", "White Label", "Unofficial Release"], "country": "UK", "title": "Prodigy, The - Everybody In The Place (Deadhau5 Mix)", "uri": "/Prodigy-Everybody-In-The-Place-Deadhau5-Mix/release/1463583", "community": {"have": 34, "want": 17}, "label": ["Not On Label (The Prodigy)"], "catno": "PRODIGY001", "year": "2008", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/1463583", "type": "release", "id": 1463583}, {"style": ["Breakbeat", "Big Beat"], "thumb": "https://api.discogs.com/image/R-90-3308604-1325101682.jpeg", "format": ["CD", "Compilation", "Enhanced", "Unofficial Release"], "country": "Russia", "barcode": ["634407225547", "LXZ PRODIGY 2002"], "uri": "/Prodigy-Babys-Got-A-Temper-Best-2002/release/3308604", "community": {"have": 2, "want": 0}, "label": ["Not On Label (The Prodigy)", "Unknown (LXZ)"], "catno": "none", "year": "2002", "genre": ["Electronic"], "title": "Prodigy, The - Babys Got A Temper [Best 2002]", "resource_url": "https://api.discogs.com/releases/3308604", "type": "release", "id": 3308604}, {"style": ["House"], "thumb": "https://api.discogs.com/image/R-90-698434-1185372479.jpeg", "format": ["Vinyl", "12\""], "country": "US", "title": "Angel Alanis & Jon Pegnato - Digital Prodigy", "uri": "/Angel-Alanis--Jon-Pegnato-Digital-Prodigy/release/698434", "community": {"have": 9, "want": 6}, "label": ["A-Trax"], "catno": "ATX 155", "year": "2006", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/698434", "type": "release", "id": 698434}, {"style": ["Hard House"], "thumb": "https://api.discogs.com/image/R-90-1121096-1193692208.jpeg", "format": ["Vinyl", "12\""], "country": "UK", "title": "DJ Nemesis (4) vs Klubrockers - Prodigy Beat", "uri": "/DJ-Nemesis-4-Vs-Klubrockers-Prodigy-Beat/release/1121096", "community": {"have": 11, "want": 7}, "label": ["Full Force Records"], "catno": "FFR001", "year": "2007", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/1121096", "type": "release", "id": 1121096}, {"style": ["Progressive House", "House", "Electro"], "thumb": "https://api.discogs.com/images/default-release.png", "format": ["File", "MP3", "Single"], "country": "UK, Europe & US", "title": "Jon Kennedy (2) - House Prodigy", "uri": "/Jon-Kennedy-House-Prodigy/release/1577778", "community": {"have": 0, "want": 0}, "label": ["Immense Recordings"], "catno": "IR021", "year": "2006", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/1577778", "type": "release", "id": 1577778}, {"style": ["House"], "thumb": "https://api.discogs.com/images/default-release.png", "format": ["Vinyl", "White Label"], "country": "US", "title": "Angel Alanis & Jon Pegnato - Digital Prodigy", "uri": "/Angel-Alanis-Jon-Pegnato-Digital-Prodigy/release/2299855", "community": {"have": 2, "want": 0}, "label": ["A-Trax"], "catno": "ATX 155", "year": "2006", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/2299855", "type": "release", "id": 2299855}, {"style": ["Electro", "House"], "thumb": "https://api.discogs.com/image/R-90-3949274-1350226049-7843.jpeg", "format": ["File", "MP3"], "country": "US", "title": "ZXX & Jon Kennedy (2) - House Prodigy ", "uri": "/ZXX-Jon-Kennedy-House-Prodigy-/release/3949274", "community": {"have": 0, "want": 0}, "label": ["Munchie Recordings", "Direct Drive Digital", "Direct Drive Digital"], "catno": "MR-027", "year": "2009", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/3949274", "type": "release", "id": 3949274}, {"style": ["Bluegrass", "Folk Rock"], "thumb": "https://api.discogs.com/image/R-90-4303290-1361249752-7017.jpeg", "format": ["Vinyl", "LP", "Album", "Stereo"], "country": "US", "barcode": ["None", "None", "NR 6450-1 JE", "NR 6450-2 JE", "ASCAP"], "uri": "/Mike-Cross-Child-Prodigy/release/4303290", "community": {"have": 7, "want": 1}, "label": ["TGS Records", "TGS Records", "TGS Studios"], "catno": "001-TGS", "year": "1975", "genre": ["Rock", "Folk, World, & Country"], "title": "Michael Cross* - Child Prodigy", "resource_url": "https://api.discogs.com/releases/4303290", "type": "release", "id": 4303290}, {"style": ["Bluegrass"], "thumb": "https://api.discogs.com/image/R-90-3221087-1321075852.jpeg", "format": ["Vinyl", "LP", "Album", "Reissue"], "country": "US", "title": "Mike Cross (4) - Child Prodigy", "uri": "/Mike-Cross-Child-Prodigy/release/3221087", "community": {"have": 9, "want": 1}, "label": ["GHE Records"], "catno": "GR1001", "year": "1979", "genre": ["Folk, World, & Country"], "resource_url": "https://api.discogs.com/releases/3221087", "type": "release", "id": 3221087}, {"style": ["Breakbeat", "Techno", "Big Beat"], "thumb": "https://api.discogs.com/image/R-90-2789331-1335442389.jpeg", "format": ["CD", "CD-ROM", "Compilation", "Unofficial Release"], "country": "Russia", "barcode": ["MP-0648"], "uri": "/Prodigy-The-Prodigy/release/2789331", "community": {"have": 5, "want": 4}, "label": ["\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f"], "catno": "MP-0648", "year": "2002", "genre": ["Electronic"], "title": "Prodigy, The - The Prodigy", "resource_url": "https://api.discogs.com/releases/2789331", "type": "release", "id": 2789331}, {"style": ["Breakbeat", "Big Beat"], "thumb": "https://api.discogs.com/image/R-90-2890911-1305917402.jpeg", "format": ["Cassette", "Compilation", "Unofficial Release"], "country": "Russia", "barcode": ["4 601055 040797", "4601055040797"], "uri": "/Prodigy-The-Prodigy/release/2890911", "community": {"have": 1, "want": 8}, "label": ["Godzi Records"], "catno": "GR056/09~12", "year": "2001", "genre": ["Electronic"], "title": "Prodigy, The - The Prodigy", "resource_url": "https://api.discogs.com/releases/2890911", "type": "release", "id": 2890911}, {"style": ["Breakbeat", "Techno", "Big Beat"], "thumb": "https://api.discogs.com/image/R-90-4477318-1365974026-6590.jpeg", "format": ["CD", "CD-ROM", "Compilation", "Unofficial Release"], "country": "Russia", "barcode": ["41291-PRDG", "4 619497 412911", "4619497412911"], "uri": "/Prodigy-The-Prodigy/release/4477318", "community": {"have": 0, "want": 1}, "label": ["\u0414\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f", "\u041d\u0430\u0432\u0438\u0433\u0430\u0442\u043e\u0440", "\u041e\u041e\u041e \"\u042d\u043b\u043a\u043e\u043c\""], "catno": "none", "year": "2004", "genre": ["Electronic"], "title": "Prodigy, The - The Prodigy", "resource_url": "https://api.discogs.com/releases/4477318", "type": "release", "id": 4477318}, {"style": ["Alternative Rock"], "thumb": "https://api.discogs.com/image/R-90-1950031-1254989968.jpeg", "format": ["Vinyl", "LP", "Album"], "country": "US", "barcode": ["7 44861 08871 4", "OLE-887-1-A 18498.1(3)... PCMTR", "OLE-887-1-B 18498.2(3)... PCMTR"], "uri": "/Kurt-Vile-Childish-Prodigy/release/1950031", "community": {"have": 511, "want": 135}, "label": ["Matador"], "catno": "OLE-887-1", "year": "2009", "genre": ["Electronic", "Rock", "Blues", "Pop"], "title": "Kurt Vile - Childish Prodigy", "resource_url": "https://api.discogs.com/releases/1950031", "type": "release", "id": 1950031}, {"style": ["Alternative Rock", "Indie Rock"], "thumb": "https://api.discogs.com/image/R-90-2118623-1265046576.jpeg", "format": ["CD", "Album"], "country": "Europe", "barcode": ["7 44861 08872 1", "LC 11552", "IFPI L847", "IFPI 0781", "53775823/OLE887-2 21"], "uri": "/Kurt-Vile-Childish-Prodigy/release/2118623", "community": {"have": 55, "want": 14}, "label": ["Matador"], "catno": "OLE-887-2", "year": "2009", "genre": ["Rock"], "title": "Kurt Vile - Childish Prodigy", "resource_url": "https://api.discogs.com/releases/2118623", "type": "release", "id": 2118623}, {"style": ["Alternative Rock", "Indie Rock"], "thumb": "https://api.discogs.com/images/default-release.png", "format": ["CDr", "Album", "Promo"], "country": "Europe", "title": "Kurt Vile - Childish Prodigy", "uri": "/Kurt-Vile-Childish-Prodigy/release/2361537", "community": {"have": 4, "want": 8}, "label": ["Matador"], "catno": "OLE-887-2", "year": "2009", "genre": ["Rock"], "resource_url": "https://api.discogs.com/releases/2361537", "type": "release", "id": 2361537}, {"style": ["Alternative Rock", "Indie Rock"], "thumb": "https://api.discogs.com/image/R-90-5765099-1402021805-1873.jpeg", "format": ["CD", "Album"], "country": "Australia & New Zealand", "barcode": ["7 44861 08872 1"], "uri": "/Kurt-Vile-Childish-Prodigy/release/5765099", "community": {"have": 1, "want": 2}, "label": ["Matador", "Inertia", "Rhythmethod", "Remote Control"], "catno": "OLE-887-2", "year": "2009", "genre": ["Rock"], "title": "Kurt Vile - Childish Prodigy", "resource_url": "https://api.discogs.com/releases/5765099", "type": "release", "id": 5765099}, {"style": ["Alternative Rock", "Indie Rock", "Lo-Fi"], "thumb": "https://api.discogs.com/image/R-90-5797336-1402938563-7074.jpeg", "format": ["CD", "Album"], "country": "US", "barcode": ["7 44861 08872 1", "ifpi L909", "IFPI 2U9J", "Z79038 LN OLE 887-2 01"], "uri": "/Kurt-Vile-Childish-Prodigy/release/5797336", "community": {"have": 2, "want": 2}, "label": ["Matador", "Matador", "Matador", "West West Side Music", "Uniform Recording", "Uniform Recording"], "catno": "OLE-887-2", "year": "2009", "genre": ["Rock"], "title": "Kurt Vile - Childish Prodigy", "resource_url": "https://api.discogs.com/releases/5797336", "type": "release", "id": 5797336}, {"style": ["Lounge", "Psychedelic Rock"], "thumb": "https://api.discogs.com/image/R-90-5467312-1394111845-5599.jpeg", "format": ["Vinyl", "LP"], "country": "US", "title": "Prodigy, The (2) - The Prodigy", "uri": "/Prodigy-The-Prodigy/release/5467312", "community": {"have": 0, "want": 0}, "label": ["Lariam Associates Inc."], "catno": "LAS-121", "year": "1971", "genre": ["Rock"], "resource_url": "https://api.discogs.com/releases/5467312", "type": "release", "id": 5467312}, {"style": ["Breakbeat", "Big Beat"], "thumb": "https://api.discogs.com/image/R-90-2844280-1303644632.jpeg", "format": ["CD", "Compilation", "Unofficial Release"], "country": "Russia", "barcode": ["TOR7060"], "uri": "/Prodigy-100-Hits-Prodigy-Hits/release/2844280", "community": {"have": 3, "want": 6}, "label": ["ORZ Records", "100% Hits"], "catno": "1010-S97-PRO", "year": "1997", "genre": ["Electronic"], "title": "Prodigy* - 100% Hits: Prodigy Hits", "resource_url": "https://api.discogs.com/releases/2844280", "type": "release", "id": 2844280}, {"thumb": "https://api.discogs.com/image/R-90-4064024-1354031040-8025.jpeg", "format": ["Vinyl", "7\"", "45 RPM"], "country": "Jamaica", "title": "Errol Lee & Karen Marr - My Special Smile", "uri": "/Errol-Lee-Karen-Marr-My-Special-Smile/release/4064024", "community": {"have": 2, "want": 2}, "label": ["Prodigy"], "catno": "none", "year": "1983", "genre": ["Funk / Soul"], "resource_url": "https://api.discogs.com/releases/4064024", "type": "release", "id": 4064024}, {"style": ["Roots Reggae"], "thumb": "https://api.discogs.com/image/R-90-4316335-1361555779-9274.jpeg", "format": ["Vinyl", "7\""], "country": "Jamaica", "title": "Tony Tuff - All Day Rockers", "uri": "/Tony-Tuff-All-Day-Rockers/release/4316335", "community": {"have": 1, "want": 5}, "label": ["Prodigy"], "catno": "none", "genre": ["Reggae"], "resource_url": "https://api.discogs.com/releases/4316335", "type": "release", "id": 4316335}, {"style": ["Breakbeat", "Hardcore", "Techno", "Jungle", "Acid"], "thumb": "https://api.discogs.com/image/R-90-1504243-1323282869.jpeg", "format": ["CD", "Maxi-Single", "Box Set", "Limited Edition", "Compilation"], "country": "Poland", "title": "Prodigy* - 3x Prodigy 2", "uri": "/Prodigy-3x-Prodigy-2/release/1504243", "community": {"have": 12, "want": 35}, "label": ["Koch International Poland", "Koch International Poland", "Koch International Poland"], "catno": "33972-6", "year": "1997", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/1504243", "type": "release", "id": 1504243}, {"style": ["Breakbeat", "Hardcore", "Techno", "Jungle", "Acid"], "thumb": "https://api.discogs.com/image/R-90-1424405-1383240638-9249.jpeg", "format": ["Cassette", "Compilation", "Box Set", "Limited Edition"], "country": "Poland", "title": "Prodigy* - 3x Prodigy 2", "uri": "/Prodigy-3x-Prodigy-2/release/1424405", "community": {"have": 5, "want": 29}, "label": ["Koch International Poland", "Koch International Poland", "Koch International Poland"], "catno": "33972-7", "year": "1997", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/1424405", "type": "release", "id": 1424405}, {"style": ["Breakbeat", "Acid", "Big Beat"], "thumb": "https://api.discogs.com/image/R-90-1424455-1383244782-4115.jpeg", "format": ["Cassette", "Compilation", "Box Set", "Limited Edition"], "country": "Poland", "title": "Prodigy* - 3x Prodigy 3", "uri": "/Prodigy-3x-Prodigy-3/release/1424455", "community": {"have": 4, "want": 30}, "label": ["Koch International Poland", "Koch International Poland", "Koch International Poland"], "catno": "33965-7", "year": "1997", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/1424455", "type": "release", "id": 1424455}, {"style": ["Breakbeat", "Electro", "Big Beat", "Jungle", "Happy Hardcore"], "thumb": "https://api.discogs.com/image/R-90-1504242-1383243041-5579.jpeg", "format": ["CD", "Maxi-Single", "Box Set", "Limited Edition", "Compilation"], "country": "Poland", "title": "Prodigy* - 3x Prodigy 1", "uri": "/Prodigy-3x-Prodigy-1/release/1504242", "community": {"have": 9, "want": 36}, "label": ["Koch International Poland", "Koch International Poland", "Koch International Poland"], "catno": "33973-6", "year": "1997", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/1504242", "type": "release", "id": 1504242}, {"style": ["Breakbeat", "Electro", "Big Beat", "Jungle", "Happy Hardcore"], "thumb": "https://api.discogs.com/image/R-90-1424359-1383237211-4608.jpeg", "format": ["Cassette", "Compilation", "Box Set", "Limited Edition"], "country": "Poland", "title": "Prodigy* - 3x Prodigy 1", "uri": "/Prodigy-3x-Prodigy-1/release/1424359", "community": {"have": 5, "want": 28}, "label": ["Koch International Poland", "Koch International Poland", "Koch International Poland"], "catno": "33973-7", "year": "1997", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/1424359", "type": "release", "id": 1424359}, {"style": ["Breakbeat", "Acid", "Big Beat"], "thumb": "https://api.discogs.com/image/R-90-1504244-1323283992.jpeg", "format": ["CD", "Maxi-Single", "Box Set", "Limited Edition", "Compilation"], "country": "Poland", "title": "Prodigy* - 3x Prodigy 3", "uri": "/Prodigy-3x-Prodigy-3/release/1504244", "community": {"have": 13, "want": 33}, "label": ["Koch International Poland", "Koch International Poland", "Koch International Poland"], "catno": "33965-6", "year": "1997", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/1504244", "type": "release", "id": 1504244}, {"style": ["Brass Band", "Jazz-Funk"], "thumb": "https://api.discogs.com/image/R-90-3654909-1339070773-5688.jpeg", "format": ["Vinyl", "7\""], "country": "UK", "title": "Hackney Colliery Band - Prodigy Medley / Owl Sanctuary", "uri": "/Hackney-Colliery-Band-Prodigy-Medley-Owl-Sanctuary/release/3654909", "community": {"have": 37, "want": 34}, "label": ["Wah Wah 45s"], "catno": "WAH7039", "year": "2012", "genre": ["Brass & Military", "Funk / Soul", "Jazz"], "resource_url": "https://api.discogs.com/releases/3654909", "type": "release", "id": 3654909}, {"thumb": "https://api.discogs.com/image/R-90-3706713-1341145809-7181.jpeg", "format": ["CD", "Album"], "country": "US", "title": "Gajah (Acid Reign)* - Poverty's Prodigy", "uri": "/Gajah-Acid-Reign-Povertys-Prodigy/release/3706713", "community": {"have": 1, "want": 2}, "label": ["Acid Lab Records"], "catno": "ALR-001", "year": "2012", "genre": ["Hip Hop"], "resource_url": "https://api.discogs.com/releases/3706713", "type": "release", "id": 3706713}, {"style": ["Breakbeat", "Techno", "Electro", "Big Beat"], "thumb": "https://api.discogs.com/image/R-90-3254091-1345224099-2736.jpeg", "format": ["DVD", "DVD-Video", "PAL", "Unofficial Release"], "country": "Russia", "barcode": ["4602536584243", "F-2120 90585634"], "uri": "/Prodigy-\u0417\u0432\u0451\u0437\u0434\u044b-\u0410\u0432\u0442\u043e\u0440\u0430\u0434\u0438\u043e-Prodigy/release/3254091", "community": {"have": 1, "want": 1}, "label": ["\u0410\u043b\u044c\u044f\u043d\u0441 Imaging"], "catno": "none", "year": "2007", "genre": ["Electronic"], "title": "Prodigy* - \u0417\u0432\u0451\u0437\u0434\u044b \u0410\u0432\u0442\u043e\u0440\u0430\u0434\u0438\u043e - Prodigy", "resource_url": "https://api.discogs.com/releases/3254091", "type": "release", "id": 3254091}, {"style": ["Breakbeat", "Techno", "Big Beat"], "thumb": "https://api.discogs.com/images/default-release.png", "format": ["CD", "Compilation", "Unofficial Release"], "country": "Canada", "title": "Prodigy, The - The Best Prodigy", "uri": "/Prodigy-The-Best-Prodigy/release/4614899", "community": {"have": 1, "want": 0}, "label": ["XL Recordings"], "catno": "none", "year": "1996", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/4614899", "type": "release", "id": 4614899}, {"style": ["Ambient", "Experimental", "Modern Classical"], "thumb": "https://api.discogs.com/image/R-90-5108513-1384823867-5756.jpeg", "format": ["File", "MP3", "Compilation", "Mixed"], "country": "Mexico", "title": "Leandro Fresco - Prodigy Msn M\u00e9xico Podcast", "uri": "/Leandro-Fresco-Prodigy-Msn-M\u00e9xico-Podcast/release/5108513", "community": {"have": 0, "want": 2}, "label": ["Prodigy Msn"], "catno": "099", "year": "2013", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/5108513", "type": "release", "id": 5108513}, {"style": ["Hip Hop"], "thumb": "https://api.discogs.com/image/R-90-4087807-1354820150-9027.jpeg", "format": ["CDr", "Single", "Promo"], "country": "UK", "title": "Jay-Z - 99 Problems - Prodigy Remix", "uri": "/Jay-Z-99-Problems-The-Prodigy-Remix/release/4087807", "community": {"have": 4, "want": 10}, "label": ["Mercury"], "catno": "none", "year": "2010", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/4087807", "type": "release", "id": 4087807}, {"style": ["Chiptune", "Breakcore"], "thumb": "https://api.discogs.com/image/R-90-2585069-1291741548.jpeg", "format": ["File", "MP3", "Compilation"], "country": "Russia", "title": "Various - The Prodigy - Emulator | Punks!!", "uri": "/Various-The-Prodigy-Emulator-Punks/release/2585069", "community": {"have": 1, "want": 0}, "label": ["The Prodigy Guide"], "catno": "none", "year": "2009", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/2585069", "type": "release", "id": 2585069}, {"style": ["Alternative Rock", "House", "Techno", "Big Beat", "Experimental"], "thumb": "https://api.discogs.com/images/default-release.png", "format": ["CD", "Compilation", "Partially Mixed", "Unofficial Release"], "country": "Russia", "barcode": ["7 56254 67765", "75625467765", "ITL 021234"], "uri": "/Various-Tribute-To-Prodigy/release/3403189", "community": {"have": 1, "want": 1}, "label": ["Halahup"], "catno": "ITL 021234", "genre": ["Electronic", "Rock"], "title": "Various - Tribute To Prodigy", "resource_url": "https://api.discogs.com/releases/3403189", "type": "release", "id": 3403189}, {"style": ["Death Metal"], "thumb": "https://api.discogs.com/image/R-90-4183124-1388628699-8610.jpeg", "format": ["CDr", "Promo", "Mini-Album"], "country": "Sweden", "title": "Death Maze - Prodigy Of Death", "uri": "/Death-Maze-Prodigy-Of-Death/release/4183124", "community": {"have": 1, "want": 0}, "label": ["Dimrass Studios, Ume\u00e5", "Not On Label"], "catno": "", "year": "2008", "genre": ["Rock"], "resource_url": "https://api.discogs.com/releases/4183124", "type": "release", "id": 4183124}, {"style": ["Spoken Word"], "thumb": "https://api.discogs.com/image/R-90-483712-1177177737.jpeg", "format": ["CD", "Unofficial Release"], "country": "UK", "barcode": ["823564019420", "S10513 ABCD 194", "ISBN 1842402951"], "uri": "/Prodigy-Maximum-Prodigy-The-Unauthorised-Biography-Of-The-Prodigy/release/483712", "community": {"have": 13, "want": 2}, "label": ["Chrome Dreams", "Chrome Dreams", "Maximum", "Chrome Dreams", "Chrome Dreams"], "catno": "ABCD194", "year": "2004", "genre": ["Non-Music"], "title": "Prodigy, The - Maximum Prodigy (The Unauthorised Biography Of The Prodigy)", "resource_url": "https://api.discogs.com/releases/483712", "type": "release", "id": 483712}, {"style": ["House"], "thumb": "https://api.discogs.com/image/R-90-9907-1398962319-4581.jpeg", "format": ["Vinyl", "12\"", "33 \u2153 RPM", "EP"], "country": "US", "barcode": ["TM\u2022002 A [unreadable]", "TM\u2022002 B [unreadable]", "BMI"], "uri": "/Brett-Dancer-Rhythm-Prodigy-EP/release/9907", "community": {"have": 60, "want": 278}, "label": ["Track Mode", "Third Mode Music", "Third Mode Music"], "catno": "TM-002", "year": "1995", "genre": ["Electronic"], "title": "Brett Dancer - Rhythm Prodigy E.P.", "resource_url": "https://api.discogs.com/releases/9907", "type": "release", "id": 9907}, {"style": ["Goth Rock", "Ethereal"], "thumb": "https://api.discogs.com/image/R-90-725225-1309562875.jpeg", "format": ["CD", "Limited Edition"], "country": "Belgium", "title": "Swan Death - Darkness, Prodigy And Virtuosity", "uri": "/Swan-Death-Darkness-Prodigy-And-Virtuosity/release/725225", "community": {"have": 11, "want": 8}, "label": ["Mbs Records"], "catno": "MBS 94001", "year": "1993", "genre": ["Electronic", "Rock"], "resource_url": "https://api.discogs.com/releases/725225", "type": "release", "id": 725225}, {"style": ["Breakbeat", "Hardcore"], "thumb": "https://api.discogs.com/image/R-90-338303-1098383827.jpg", "format": ["Vinyl", "12\"", "Unofficial Release", "EP", "33 \u2153 RPM"], "country": "", "title": "Prodigy, The - The Prodigy E.P.", "uri": "/Prodigy-The-Prodigy-EP/release/338303", "community": {"have": 80, "want": 55}, "label": ["Not On Label (The Prodigy)"], "catno": "PEP 001", "year": "2004", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/338303", "type": "release", "id": 338303}, {"style": ["Gangsta"], "thumb": "https://api.discogs.com/image/R-90-793558-1160588365.jpeg", "format": ["Vinyl", "12\""], "country": "US", "title": "Duce Duce - Prodigy Of A Nigga / Twisting Dank", "uri": "/Duce-Duce-Prodigy-Of-A-Nigga-Twisting-Dank/release/793558", "community": {"have": 9, "want": 17}, "label": ["Torcha Chamba Productions"], "catno": "TCR 101", "year": "1995", "genre": ["Hip Hop"], "resource_url": "https://api.discogs.com/releases/793558", "type": "release", "id": 793558}, {"style": ["Breakbeat", "Big Beat"], "thumb": "https://api.discogs.com/image/R-90-3460439-1331283929.jpeg", "format": ["File", "MP3"], "country": "US", "title": "Plan B (4) - Ill Manors (The Prodigy Remix)", "uri": "/Plan-B-Ill-Manors-The-Prodigy-Remix/release/3460439", "community": {"have": 10, "want": 2}, "label": ["RCRD LBL"], "catno": "none", "year": "2012", "genre": ["Electronic", "Hip Hop"], "resource_url": "https://api.discogs.com/releases/3460439", "type": "release", "id": 3460439}, {"style": ["Breakbeat"], "thumb": "https://api.discogs.com/image/R-90-3759856-1343257188-1103.jpeg", "format": ["File", "WAV"], "country": "US", "title": "Foo Fighters - White Limo (The Prodigy Remix)", "uri": "/Prodigy-White-Limo-Remix/release/3759856", "community": {"have": 11, "want": 6}, "label": ["Red Ant"], "catno": "none", "year": "2011", "genre": ["Electronic", "Rock"], "resource_url": "https://api.discogs.com/releases/3759856", "type": "release", "id": 3759856}, {"style": ["Breakbeat", "Musical", "Big Beat"], "thumb": "https://api.discogs.com/images/default-release.png", "format": ["VHS", "Compilation", "PAL", "Unofficial Release"], "country": "Russia", "title": "Prodigy* - Prodigy Live At Brixton Academy", "uri": "/Prodigy-Prodigy-Live-At-Brixton-Academy/release/3343249", "community": {"have": 1, "want": 3}, "label": ["\u0412\u0438\u0434\u0435\u043e \u0421\u0430\u043b\u044e\u0442"], "catno": "none", "year": "1997", "genre": ["Electronic", "Stage & Screen"], "resource_url": "https://api.discogs.com/releases/3343249", "type": "release", "id": 3343249}, {"style": ["Breakbeat", "Dubstep"], "thumb": "https://api.discogs.com/image/R-90-2727688-1298315899.jpeg", "format": ["File", "MP3"], "country": "UK", "title": "South Central (3) - The Day I Die (Prodigy Rework)", "uri": "/South-Central-The-Day-I-Die-Prodigy-Rework/release/2727688", "community": {"have": 11, "want": 1}, "label": ["Not On Label (South Central (3) Self-released)"], "catno": "none", "year": "2011", "genre": ["Electronic"], "resource_url": "https://api.discogs.com/releases/2727688", "type": "release", "id": 2727688}, {"thumb": "https://api.discogs.com/image/R-90-1783903-1243088134.gif", "format": ["CDr", "Mixed"], "country": "US", "title": "Littles - What's Beef? Fuck Prodigy!!!", "uri": "/Littles-Whats-Beef-Fuck-Prodigy/release/1783903", "community": {"have": 12, "want": 4}, "label": ["Best Of The Block Entertainment"], "catno": "none", "year": "2004", "genre": ["Hip Hop"], "resource_url": "https://api.discogs.com/releases/1783903", "type": "release", "id": 1783903}]} 16 | --------------------------------------------------------------------------------