From 4c36248c00adcbb3598d6e09767f8de400002c99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B8=D1=81=D0=BA=D1=83=D0=BD=20=D0=90=D1=80=D1=82?= =?UTF-8?q?=D0=B5=D0=BC?= Date: Wed, 9 Mar 2016 17:54:25 +0300 Subject: [PATCH] specified release json --- discogs.go | 8 ++- examples/discogs_example.go | 9 ++- releases.go | 135 ++++++++++++++++++++++++++++++++++-- 3 files changed, 140 insertions(+), 12 deletions(-) diff --git a/discogs.go b/discogs.go index 9f92a82..7aabb69 100644 --- a/discogs.go +++ b/discogs.go @@ -7,7 +7,7 @@ import ( const ( discogsAPI = "https://api.discogs.com/" - useragent = "TestDiscogsClient/0.0.1 +http://irlndts.moscow" + useragent = "Test UserAgent" ) // Client is a Discogs client for making Discogs API requests. @@ -25,3 +25,9 @@ func NewClient(httpClient *http.Client) *Client { Release: newReleaseService(base.New()), } } + +// discogs require specified user agent +func (c *Client) UserAgent(useragent string) *Client { + c.api.Set("User-Agent", useragent) + return c +} diff --git a/examples/discogs_example.go b/examples/discogs_example.go index f010682..df15156 100644 --- a/examples/discogs_example.go +++ b/examples/discogs_example.go @@ -9,11 +9,10 @@ import ( func main() { client := &http.Client{} - d := discogs.NewClient(client) - params := &discogs.ReleaseParams{12345} - release, resp, err := d.Release.Release(params) - fmt.Println(release.Title) - fmt.Println(resp) + d := discogs.NewClient(client).UserAgent("TestDiscogsClient/0.0.1 +http://irlndts.moscow") + params := &discogs.ReleaseParams{Release_id: "1"} + release, _, err := d.Release.Release(params) + fmt.Println(release) fmt.Println(err) } diff --git a/releases.go b/releases.go index d8b58b6..a1e240e 100644 --- a/releases.go +++ b/releases.go @@ -2,7 +2,6 @@ package discogs import ( "github.com/irlndts/go-apirequest" - //"io/ioutil" "net/http" ) @@ -11,13 +10,137 @@ type ReleaseService struct { } type ReleaseParams struct { - Release_id int + Release_id string } type Release struct { - Title string `json:"title"` - Id int `json:"id"` - //data_quality string + Title string `json:"title"` + Id int `json:"id"` + Artists []artist `json:"artists"` + Data_quality string `json:"data_quality"` + Thumb string `json:"thumb"` + Community community `json:"community"` + Companies []company `json:"companies"` + Country string `json:"country"` + Date_added string `json:"date_added"` + Date_changed string `json:"date_changed"` + Estimated_weight int `json:"estimated_weight"` + Extraartists []extraartist `json:"extraartists"` + Format_quantity int `json:"format_quantity"` + Formats []format `json:"formats"` + Genres []string `json:"genres"` + Identifiers []identifier `json:"identifiers"` + Images []image `json:"images"` + Labels []label `json:"labels"` + Master_id int `json:"master_id"` + Master_url string `json:"master_url"` + Notes string `josn:"notes"` + Released string `json:"released"` + Released_formatted string `json:"released_formatted"` + Resource_url string `json:"resource_url"` + Status string `json:"status"` + Styles []string `json:"styles"` + Tracklist []tracklist `json:"tracklist"` + Uri string `json:"uri"` + Videos []video `json:"videos"` + Year int `json:"year"` +} + +type video struct { + Description string `json:"description"` + Duration int `json:"duration"` + Embed bool `json:"embed"` + Title string `json:"title"` + Uri string `json:"uri"` +} + +type tracklist struct { + Duration string `json:"duration"` + Position string `json:"position"` + Title string `json:"title"` + Type string `json:"type_"` +} + +type label struct { + Catno string `json:"catno"` + Entity_type string `json:"entity_type"` + Id int `json:"id"` + Name string `json:"name"` + Resource_url string `json:"resource_url"` +} + +type image struct { + Height int `json:"height"` + Width int `json:"width"` + Resource_url string `json:"resource_url"` + Type string `json:"type"` + Uri string `json:"uri"` + Uri150 string `json:"uri150"` +} + +type identifier struct { + Type string `json:"type"` + Value string `json:"value"` +} + +type format struct { + Descriptions []string `json:"descriptions"` + Name string `json:"name"` + Qty string `json:"qty"` +} + +type extraartist struct { + Anv string `json:"anv"` + Id int `json:"id"` + Join string `json:"join"` + Name string `json:"name"` + Resource_url string `json:"resource_url"` + Role string `json:"role"` + Tracks string `json:"tracks"` +} + +type company struct { + Catno string `json:"catno"` + Entity_type string `json:"entity_type"` + Entity_type_name string `json:"entity_type_name"` + Id int `json:"id"` + Name string `json:"name"` + Resource_url string `json:"resource_url"` +} + +type community struct { + Contributors []contributor `json:"contributors"` + Data_quality string `json:"string"` + Have int `json:"have"` + Rating rating `json:"rating"` + Status string `json:"status"` + Submitter submitter `json:"submitter"` + Want int `json:"want"` +} + +type submitter struct { + Resource_url string `json:"resource_url"` + Username string `json:"username"` +} + +type rating struct { + Average float32 `json:"average"` + Count int `json:"count"` +} + +type contributor struct { + Resource_url string `json:"resource_url"` + Username string `json:"username"` +} + +type artist struct { + Anv string `json:"anv"` + Id int `json:"id"` + Join string `json:"join"` + Name string `json:"name:` + Resource_url string `json:"resource_url"` + Role string `json:"role"` + Tracks string `json:"tracks"` } func newReleaseService(api *apirequest.API) *ReleaseService { @@ -28,6 +151,6 @@ func newReleaseService(api *apirequest.API) *ReleaseService { func (self *ReleaseService) Release(params *ReleaseParams) (*Release, *http.Response, error) { release := new(Release) - resp, err := self.api.New().Get("248504").QueryStruct(params).Receive(release, nil) + resp, err := self.api.New().Get(params.Release_id).QueryStruct(params).Receive(release, nil) return release, resp, err }