diff --git a/CHANGELOG.md b/CHANGELOG.md index f909119..93a80e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # AmpacheDiscogs +## 0.2.0 + +Missing functions and examples have been added. + +This is probably the most that the library will need to do but if there's more that you need open an issue. + +### Added + +* New Functions + * [get_artist_releases](https://www.discogs.com/developers/#page:database,header:database-artist-releases-get) + * [get_master_versions](https://www.discogs.com/developers/#page:database,header:database-master-release-versions-get) + * [get_label](https://www.discogs.com/developers/#page:database,header:database-label-get) + * [get_label_releases](https://www.discogs.com/developers/#page:database,header:database-all-label-releases-get) + * [get_profile](https://www.discogs.com/developers/#page:user-identity,header:user-identity-profile-get) + * [get_collection_folders](https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-get) + * [get_collection_folder](https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-folder-get) + * [get_collection_items_by_folder](https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-items-by-folder-get) + * [get_user_lists](https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-user-lists) + * [get_list](https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-list) + * [get_wantlist](https://www.discogs.com/developers/#page:user-wantlist,header:user-wantlist-wantlist) + ## 0.1.0 Export of data functions from the [Ampache Discogs plugin](https://github.com/ampache/ampache/blob/develop/src/Plugin/AmpacheDiscogs.php). diff --git a/examples/collections.php b/examples/collections.php new file mode 100644 index 0000000..b560594 --- /dev/null +++ b/examples/collections.php @@ -0,0 +1,28 @@ +get_collection_folders($username); + + print_r($results); + $folder_id = (int)$results['folders'][0]['id']; + + $results = $discogs->get_collection_folder($username, $folder_id); + + print_r($results); + + $results = $discogs->get_collection_items_by_folder($username, $folder_id); + + print_r($results); +} catch (Exception $exception) { + print_r($exception->getMessage()); +} diff --git a/examples/labels.php b/examples/labels.php new file mode 100644 index 0000000..5fb488a --- /dev/null +++ b/examples/labels.php @@ -0,0 +1,23 @@ +get_label($label_id); + + print_r($results); + + $results = $discogs->get_label_releases($label_id); + + print_r($results); +} catch (Exception $exception) { + print_r($exception->getMessage()); +} diff --git a/examples/releases.php b/examples/releases.php new file mode 100644 index 0000000..4960641 --- /dev/null +++ b/examples/releases.php @@ -0,0 +1,44 @@ +search_release($artist, $album); + + print_r($results); + + $results = $discogs->search_master($artist, $album); + + print_r($results); + + $results = $discogs->get_artist_releases($artistId); + + print_r($results); + + $results = $discogs->get_release($releaseId); + + print_r($results); + + $results = $discogs->get_master($masterId); + + print_r($results); + + $results = $discogs->get_master_versions($masterId); + + print_r($results); +} catch (Exception $exception) { + print_r($exception->getMessage()); +} diff --git a/examples/users.php b/examples/users.php new file mode 100644 index 0000000..61ea5a4 --- /dev/null +++ b/examples/users.php @@ -0,0 +1,32 @@ +get_profile($username); + + print_r($results); + + $results = $discogs->get_user_lists($username); + + print_r($results); + + $results = $discogs->get_wantlist($username); + + print_r($results); + + $results = $discogs->get_list($list_id); + + print_r($results); +} catch (Exception $exception) { + print_r($exception->getMessage()); +} diff --git a/src/AmpacheDiscogs/Discogs.php b/src/AmpacheDiscogs/Discogs.php index ed13a73..f9faefa 100644 --- a/src/AmpacheDiscogs/Discogs.php +++ b/src/AmpacheDiscogs/Discogs.php @@ -28,25 +28,9 @@ use Exception; use WpOrg\Requests\Requests; -/** - * todo self::get_artist_releases() https://www.discogs.com/developers/#page:database,header:database-artist-releases-get - * todo self::get_master_versions() https://www.discogs.com/developers/#page:database,header:database-master-release-versions-get - * todo self::get_label() https://www.discogs.com/developers/#page:database,header:database-label-get - * todo self::get_label_releases() https://www.discogs.com/developers/#page:database,header:database-all-label-releases-get - * todo self::get_identity() https://www.discogs.com/developers/#page:user-identity,header:user-identity-identity-get - * todo self::get_profile() https://www.discogs.com/developers/#page:user-identity,header:user-identity-profile-get - * todo self::add_inventory() https://www.discogs.com/developers/#page:inventory-upload,header:inventory-upload-add-inventory-post - * todo self::delete_inventory() https://www.discogs.com/developers/#page:inventory-upload,header:inventory-upload-delete-inventory-post - * todo self::get_collection_folders() https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-get - * todo self::get_collection_folder() https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-folder-get - * todo self::get_collection_items_by_folder() https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-items-by-folder-get - * todo self::get_user_lists() https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-user-lists - * todo self::get_lists() https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-list - * todo self::get_wantlist() https://www.discogs.com/developers/#page:user-wantlist,header:user-wantlist-wantlist - */ class Discogs { - public const VERSION = '0.1.0'; + public const VERSION = '0.2.0'; private const DISCOGS_URL = 'https://api.discogs.com/'; @@ -54,7 +38,7 @@ class Discogs private readonly string $secret; - private string $userAgent; + private readonly string $userAgent; /** * Constructor @@ -107,6 +91,7 @@ public function search(array $parameters): array if (!isset($parameters['per_page'])) { $parameters['per_page'] = 10; } + $query = http_build_query($parameters); return $this->_query_discogs('database/search', $query); @@ -197,6 +182,140 @@ public function get_master(int $object_id): array */ public function get_artist(int $object_id): array { - return $this->_query_discogs('artists/' . $object_id); + $query = sprintf("artists/%d", $object_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:database,header:database-artist-releases-get + * @return array + * @throws Exception + */ + public function get_artist_releases(int $artist_id): array + { + $query = sprintf("artists/%d/releases", $artist_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:database,header:database-master-release-versions-get + * @return array + * @throws Exception + */ + public function get_master_versions(int $master_id): array + { + $query = sprintf("masters/%d/versions", $master_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:database,header:database-label-get + * @return array + * @throws Exception + */ + public function get_label(int $label_id): array + { + $query = sprintf("labels/%d", $label_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:database,header:database-all-label-releases-get + * @return array + * @throws Exception + */ + public function get_label_releases(int $label_id): array + { + $query = sprintf("labels/%d/releases", $label_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:user-identity,header:user-identity-profile-get + * @return array + * @throws Exception + */ + public function get_profile(string $username): array + { + $query = sprintf("users/%s", $username); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-get + * @return array + * @throws Exception + */ + public function get_collection_folders(string $username): array + { + $query = sprintf("users/%s/collection/folders", $username); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-folder-get + * @return array + * @throws Exception + */ + public function get_collection_folder(string $username, int $folder_id): array + { + $query = sprintf("users/%s/collection/folders/%s", $username, $folder_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-items-by-folder-get + * @return array + * @throws Exception + */ + public function get_collection_items_by_folder(string $username, int $folder_id): array + { + $query = sprintf("users/%s/collection/folders/%s/releases", $username, $folder_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-user-lists + * @return array + * @throws Exception + */ + public function get_user_lists(string $username): array + { + $query = sprintf("users/%s/lists", $username); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-list + * @return array + * @throws Exception + */ + public function get_list(int $list_id): array + { + $query = sprintf("lists/%d", $list_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:user-wantlist,header:user-wantlist-wantlist + * @return array + * @throws Exception + */ + public function get_wantlist(string $username): array + { + $query = sprintf("users/%s/wants", $username); + + return $this->_query_discogs($query); } }