DISCOGS-2 Fix for the day
This commit is contained in:
		
							
								
								
									
										26
									
								
								discogs.go
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								discogs.go
									
									
									
									
									
								
							@@ -1,13 +1,16 @@
 | 
				
			|||||||
package discogs
 | 
					package discogs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"github.com/irlndts/go-apirequest"
 | 
					 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/irlndts/go-apirequest"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
	discogsAPI = "https://api.discogs.com/"
 | 
						libVeresion = "0.1"
 | 
				
			||||||
	useragent  = "Test UserAgent"
 | 
						discogsAPI  = "https://api.discogs.com/"
 | 
				
			||||||
 | 
						useragent   = "irlndts/go-discogs/0.1"
 | 
				
			||||||
 | 
						token       = "oQTQKAprakIQfWOkAxTdYyDpgUqahHtdbHTuYkIy"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Client is a Discogs client for making Discogs API requests.
 | 
					// Client is a Discogs client for making Discogs API requests.
 | 
				
			||||||
@@ -17,23 +20,32 @@ type Client struct {
 | 
				
			|||||||
	Master  *MasterService
 | 
						Master  *MasterService
 | 
				
			||||||
	Artist  *ArtistService
 | 
						Artist  *ArtistService
 | 
				
			||||||
	Label   *LabelService
 | 
						Label   *LabelService
 | 
				
			||||||
 | 
						Search  *SearchService
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewClient returns a new Client.
 | 
					// NewClient returns a new Client.
 | 
				
			||||||
func NewClient() *Client {
 | 
					func NewClient() *Client {
 | 
				
			||||||
	base := apirequest.New().Client(&http.Client{}).Base(discogsAPI).Add("User-Agent", useragent)
 | 
						base := apirequest.New().Client(&http.Client{}).Base(discogsAPI).Add("User-Agent", useragent) //.Add("Authorization", "Discogs token="+token)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return &Client{
 | 
						return &Client{
 | 
				
			||||||
		api:     base,
 | 
							api:     base,
 | 
				
			||||||
		Release: newReleaseService(base.New()),
 | 
					 | 
				
			||||||
		Master:  newMasterService(base.New()),
 | 
					 | 
				
			||||||
		Artist:  newArtistService(base.New()),
 | 
							Artist:  newArtistService(base.New()),
 | 
				
			||||||
		Label:   newLabelService(base.New()),
 | 
							Label:   newLabelService(base.New()),
 | 
				
			||||||
 | 
							Master:  newMasterService(base.New()),
 | 
				
			||||||
 | 
							Release: newReleaseService(base.New()),
 | 
				
			||||||
 | 
							Search:  newSearchService(base),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// discogs require specified user agent
 | 
					// UserAgent sets specified user agent
 | 
				
			||||||
 | 
					// Discogs required it
 | 
				
			||||||
func (c *Client) UserAgent(useragent string) *Client {
 | 
					func (c *Client) UserAgent(useragent string) *Client {
 | 
				
			||||||
	c.api.Set("User-Agent", useragent)
 | 
						c.api.Set("User-Agent", useragent)
 | 
				
			||||||
	return c
 | 
						return c
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Token sets tokens, it's required for some queries like search
 | 
				
			||||||
 | 
					func (c *Client) Token(token string) *Client {
 | 
				
			||||||
 | 
						c.api.Set("Authorization", "Discogs token="+token)
 | 
				
			||||||
 | 
						return c
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,24 +2,22 @@ package main
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/irlndts/go-discogs"
 | 
						"github.com/irlndts/go-discogs"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func main() {
 | 
					func main() {
 | 
				
			||||||
	d := discogs.NewClient().UserAgent("TestDiscogsClient/0.0.1 +http://irlndts.moscow")
 | 
						d := discogs.NewClient().UserAgent("TestDiscogsClient/0.0.1 +http://irlndts.moscow").Token("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						params := &discogs.SearchRequest{Release_title: "nevermind", Artist: "nirvana"}
 | 
				
			||||||
		params := &discogs.ReleaseParams{Release_id: "8138518"}
 | 
						search, _, err := d.Search.Search(params)
 | 
				
			||||||
		release, _, err := d.Release.Release(params)
 | 
					 | 
				
			||||||
	*/
 | 
					 | 
				
			||||||
	params := &discogs.LabelParams{Label_id: "890477", Page: 2, Per_page: 3}
 | 
					 | 
				
			||||||
	label, _, err := d.Label.Releases(params)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		fmt.Println(err)
 | 
							fmt.Println(err)
 | 
				
			||||||
	} else {
 | 
							return
 | 
				
			||||||
		for _, release := range label.Releases {
 | 
						}
 | 
				
			||||||
			fmt.Println(release.Title)
 | 
					
 | 
				
			||||||
		}
 | 
						for _, r := range search.Results {
 | 
				
			||||||
 | 
							fmt.Println(r)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								labels.go
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								labels.go
									
									
									
									
									
								
							@@ -1,8 +1,9 @@
 | 
				
			|||||||
package discogs
 | 
					package discogs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"github.com/irlndts/go-apirequest"
 | 
					 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/irlndts/go-apirequest"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type LabelService struct {
 | 
					type LabelService struct {
 | 
				
			||||||
@@ -10,23 +11,23 @@ type LabelService struct {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type LabelParams struct {
 | 
					type LabelParams struct {
 | 
				
			||||||
	Label_id string
 | 
						LabelID string
 | 
				
			||||||
	Page     int
 | 
						Page    int
 | 
				
			||||||
	Per_page int
 | 
						PerPage int
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Label struct {
 | 
					type Label struct {
 | 
				
			||||||
	Profile      string     `json:"profile"`
 | 
						Profile     string     `json:"profile"`
 | 
				
			||||||
	Releases_url string     `json:"releases_url"`
 | 
						ReleasesUrl string     `json:"releases_url"`
 | 
				
			||||||
	Name         string     `json:"name"`
 | 
						Name        string     `json:"name"`
 | 
				
			||||||
	Contact_info string     `json:"contact_info"`
 | 
						ContactInfo string     `json:"contact_info"`
 | 
				
			||||||
	Uri          string     `json:"uri"`
 | 
						Uri         string     `json:"uri"`
 | 
				
			||||||
	Sublabels    []Sublable `json:"sublabels"`
 | 
						Sublabels   []Sublable `json:"sublabels"`
 | 
				
			||||||
	Urls         []string   `json:"urls"`
 | 
						Urls        []string   `json:"urls"`
 | 
				
			||||||
	Images       []Image    `json:"images"`
 | 
						Images      []Image    `json:"images"`
 | 
				
			||||||
	Resource_url string     `json:"resource_url"`
 | 
						ResourceUrl string     `json:"resource_url"`
 | 
				
			||||||
	Id           int        `json:"id"`
 | 
						Id          int        `json:"id"`
 | 
				
			||||||
	Data_quality string     `json:"data_quality"`
 | 
						DataQuality string     `json:"data_quality"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type LabelReleases struct {
 | 
					type LabelReleases struct {
 | 
				
			||||||
@@ -44,7 +45,7 @@ func (self *LabelService) Label(params *LabelParams) (*Label, *http.Response, er
 | 
				
			|||||||
	label := new(Label)
 | 
						label := new(Label)
 | 
				
			||||||
	apiError := new(APIError)
 | 
						apiError := new(APIError)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	resp, err := self.api.New().Get(params.Label_id).Receive(label, apiError)
 | 
						resp, err := self.api.New().Get(params.LabelID).Receive(label, apiError)
 | 
				
			||||||
	return label, resp, relevantError(err, *apiError)
 | 
						return label, resp, relevantError(err, *apiError)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -52,6 +53,6 @@ func (self *LabelService) Releases(params *LabelParams) (*LabelReleases, *http.R
 | 
				
			|||||||
	releases := new(LabelReleases)
 | 
						releases := new(LabelReleases)
 | 
				
			||||||
	apiError := new(APIError)
 | 
						apiError := new(APIError)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	resp, err := self.api.New().Get(params.Label_id+"/releases").QueryStruct(params).Receive(releases, apiError)
 | 
						resp, err := self.api.New().Get(params.LabelID+"/releases").QueryStruct(params).Receive(releases, apiError)
 | 
				
			||||||
	return releases, resp, relevantError(err, *apiError)
 | 
						return releases, resp, relevantError(err, *apiError)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										38
									
								
								search.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								search.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					package discogs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/irlndts/go-apirequest"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type SearchRequest struct {
 | 
				
			||||||
 | 
						Release_title string
 | 
				
			||||||
 | 
						Artist        string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Page    int
 | 
				
			||||||
 | 
						PerPage int
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Search struct {
 | 
				
			||||||
 | 
						Pagination Page          `json:"pagination"`
 | 
				
			||||||
 | 
						Results    []interface{} `json:"results"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type SearchService struct {
 | 
				
			||||||
 | 
						api *apirequest.API
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func newSearchService(api *apirequest.API) *SearchService {
 | 
				
			||||||
 | 
						return &SearchService{
 | 
				
			||||||
 | 
							api: api.Path("database/search"),
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (self *SearchService) Search(params *SearchRequest) (*Search, *http.Response, error) {
 | 
				
			||||||
 | 
						search := new(Search)
 | 
				
			||||||
 | 
						apiError := new(APIError)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						resp, err := self.api.QueryStruct(params).Receive(search, apiError)
 | 
				
			||||||
 | 
						return search, resp, relevantError(err, *apiError)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user