DSCGS-10 Rewrite LabelService
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								.discogs.go.swp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.discogs.go.swp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.models.go.swp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.models.go.swp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -62,7 +62,7 @@ func NewClient(o *Options) (*Client, error) {
 | 
			
		||||
	return &Client{
 | 
			
		||||
		Release: newReleaseService(o.URL+"/releases/", cur),
 | 
			
		||||
		Artist:  newArtistService(o.URL + "/artists/"),
 | 
			
		||||
		Label:   newLabelService(base.New()),
 | 
			
		||||
		Label:   newLabelService(o.URL + "/labels/"),
 | 
			
		||||
		Master:  newMasterService(o.URL + "/masters/"),
 | 
			
		||||
		Search:  newSearchService(base.New()),
 | 
			
		||||
	}, nil
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										74
									
								
								labels.go
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								labels.go
									
									
									
									
									
								
							@@ -1,58 +1,56 @@
 | 
			
		||||
package discogs
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
 | 
			
		||||
	"github.com/irlndts/go-apirequest"
 | 
			
		||||
	"strconv"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// LabelService ...
 | 
			
		||||
type LabelService struct {
 | 
			
		||||
	api *apirequest.API
 | 
			
		||||
	url string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type LabelParams struct {
 | 
			
		||||
	Label_id string
 | 
			
		||||
	Page     int
 | 
			
		||||
	Per_Page int
 | 
			
		||||
func newLabelService(url string) *LabelService {
 | 
			
		||||
	return &LabelService{
 | 
			
		||||
		url: url,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Label resource represents a label, company, recording studio, location,
 | 
			
		||||
// or other entity involved with artists and releases.
 | 
			
		||||
type Label struct {
 | 
			
		||||
	Profile      string     `json:"profile"`
 | 
			
		||||
	Releases_url string     `json:"releases_url"`
 | 
			
		||||
	Name         string     `json:"name"`
 | 
			
		||||
	Contact_info string     `json:"contact_info"`
 | 
			
		||||
	Uri          string     `json:"uri"`
 | 
			
		||||
	Sublabels    []Sublable `json:"sublabels"`
 | 
			
		||||
	Urls         []string   `json:"urls"`
 | 
			
		||||
	Images       []Image    `json:"images"`
 | 
			
		||||
	Resource_url string     `json:"resource_url"`
 | 
			
		||||
	Id           int        `json:"id"`
 | 
			
		||||
	Data_quality string     `json:"data_quality"`
 | 
			
		||||
	Profile     string     `json:"profile"`
 | 
			
		||||
	ReleasesURL string     `json:"releases_url"`
 | 
			
		||||
	Name        string     `json:"name"`
 | 
			
		||||
	ContactInfo string     `json:"contact_info"`
 | 
			
		||||
	URI         string     `json:"uri"`
 | 
			
		||||
	Sublabels   []Sublable `json:"sublabels"`
 | 
			
		||||
	URLs        []string   `json:"urls"`
 | 
			
		||||
	Images      []Image    `json:"images"`
 | 
			
		||||
	ResourceURL string     `json:"resource_url"`
 | 
			
		||||
	ID          int        `json:"id"`
 | 
			
		||||
	DataQuality string     `json:"data_quality"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Label returns a label.
 | 
			
		||||
func (s *LabelService) Label(labelID int) (*Label, error) {
 | 
			
		||||
	var label *Label
 | 
			
		||||
	if err := request(s.url+strconv.Itoa(labelID), nil, &label); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return label, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// LabelReleases is a list of Releases associated with the label.
 | 
			
		||||
type LabelReleases struct {
 | 
			
		||||
	Pagination Page            `json:"pagination"`
 | 
			
		||||
	Releases   []ReleaseSource `json:"releases"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func newLabelService(api *apirequest.API) *LabelService {
 | 
			
		||||
	return &LabelService{
 | 
			
		||||
		api: api.Path("labels/"),
 | 
			
		||||
// Releases returns a list of Releases associated with the label.
 | 
			
		||||
func (s *LabelService) Releases(labelID int, pagination *Pagination) (*LabelReleases, error) {
 | 
			
		||||
	var releases *LabelReleases
 | 
			
		||||
	if err := request(s.url+strconv.Itoa(labelID)+"/releases", pagination.toParams(), &releases); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (self *LabelService) Label(params *LabelParams) (*Label, *http.Response, error) {
 | 
			
		||||
	label := new(Label)
 | 
			
		||||
	apiError := new(APIError)
 | 
			
		||||
 | 
			
		||||
	resp, err := self.api.New().Get(params.Label_id).Receive(label, apiError)
 | 
			
		||||
	return label, resp, relevantError(err, *apiError)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (self *LabelService) Releases(params *LabelParams) (*LabelReleases, *http.Response, error) {
 | 
			
		||||
	releases := new(LabelReleases)
 | 
			
		||||
	apiError := new(APIError)
 | 
			
		||||
 | 
			
		||||
	resp, err := self.api.New().Get(params.Label_id+"/releases").QueryStruct(params).Receive(releases, apiError)
 | 
			
		||||
	return releases, resp, relevantError(err, *apiError)
 | 
			
		||||
	return releases, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										148
									
								
								models.go
									
									
									
									
									
								
							
							
						
						
									
										148
									
								
								models.go
									
									
									
									
									
								
							@@ -5,33 +5,37 @@ import (
 | 
			
		||||
	"strconv"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Video ...
 | 
			
		||||
type Video struct {
 | 
			
		||||
	Description string `json:"description"`
 | 
			
		||||
	Duration    int    `json:"duration"`
 | 
			
		||||
	Embed       bool   `json:"embed"`
 | 
			
		||||
	Title       string `json:"title"`
 | 
			
		||||
	Uri         string `json:"uri"`
 | 
			
		||||
	URI         string `json:"uri"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ArtistSource ...
 | 
			
		||||
type ArtistSource 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"`
 | 
			
		||||
	Anv         string `json:"anv"`
 | 
			
		||||
	ID          int    `json:"id"`
 | 
			
		||||
	Join        string `json:"join"`
 | 
			
		||||
	Name        string `json:"name:`
 | 
			
		||||
	ResourceURL string `json:"resource_url"`
 | 
			
		||||
	Role        string `json:"role"`
 | 
			
		||||
	Tracks      string `json:"tracks"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Image ...
 | 
			
		||||
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"`
 | 
			
		||||
	Height      int    `json:"height"`
 | 
			
		||||
	Width       int    `json:"width"`
 | 
			
		||||
	ResourceURL string `json:"resource_url"`
 | 
			
		||||
	Type        string `json:"type"`
 | 
			
		||||
	URI         string `json:"uri"`
 | 
			
		||||
	URI150      string `json:"uri150"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Track ...
 | 
			
		||||
type Track struct {
 | 
			
		||||
	Duration     string         `json:"duration"`
 | 
			
		||||
	Position     string         `json:"position"`
 | 
			
		||||
@@ -40,37 +44,42 @@ type Track struct {
 | 
			
		||||
	Extraartists []ArtistSource `json:"extraartists"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// LabelSource ...
 | 
			
		||||
type LabelSource 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"`
 | 
			
		||||
	Catno       string `json:"catno"`
 | 
			
		||||
	EntityType  string `json:"entity_type"`
 | 
			
		||||
	ID          int    `json:"id"`
 | 
			
		||||
	Name        string `json:"name"`
 | 
			
		||||
	ResourceURL string `json:"resource_url"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Itentifier ...
 | 
			
		||||
type Identifier struct {
 | 
			
		||||
	Type  string `json:"type"`
 | 
			
		||||
	Value string `json:"value"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Format ...
 | 
			
		||||
type Format struct {
 | 
			
		||||
	Descriptions []string `json:"descriptions"`
 | 
			
		||||
	Name         string   `json:"name"`
 | 
			
		||||
	Qty          string   `json:"qty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Company ...
 | 
			
		||||
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"`
 | 
			
		||||
	Catno          string `json:"catno"`
 | 
			
		||||
	EntityType     string `json:"entity_type"`
 | 
			
		||||
	EntityTypeName string `json:"entity_type_name"`
 | 
			
		||||
	ID             int    `json:"id"`
 | 
			
		||||
	Name           string `json:"name"`
 | 
			
		||||
	ResourceURL    string `json:"resource_url"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Community ...
 | 
			
		||||
type Community struct {
 | 
			
		||||
	Contributors []Contributor `json:"contributors"`
 | 
			
		||||
	Data_quality string        `json:"string"`
 | 
			
		||||
	DataQuality  string        `json:"string"`
 | 
			
		||||
	Have         int           `json:"have"`
 | 
			
		||||
	Rating       Rating        `json:"rating"`
 | 
			
		||||
	Status       string        `json:"status"`
 | 
			
		||||
@@ -78,73 +87,82 @@ type Community struct {
 | 
			
		||||
	Want         int           `json:"want"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Submitter ...
 | 
			
		||||
type Submitter struct {
 | 
			
		||||
	Resource_url string `json:"resource_url"`
 | 
			
		||||
	Username     string `json:"username"`
 | 
			
		||||
	ResourceURL string `json:"resource_url"`
 | 
			
		||||
	Username    string `json:"username"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Rating ...
 | 
			
		||||
type Rating struct {
 | 
			
		||||
	Average float32 `json:"average"`
 | 
			
		||||
	Count   int     `json:"count"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Contributor ...
 | 
			
		||||
type Contributor struct {
 | 
			
		||||
	Resource_url string `json:"resource_url"`
 | 
			
		||||
	Username     string `json:"username"`
 | 
			
		||||
	ResourceURL string `json:"resource_url"`
 | 
			
		||||
	Username    string `json:"username"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Page ...
 | 
			
		||||
type Page struct {
 | 
			
		||||
	Per_page int  `json:"per_page"`
 | 
			
		||||
	Items    int  `json:"items"`
 | 
			
		||||
	Page     int  `json:"page"`
 | 
			
		||||
	Urls     URLS `json:"urls"`
 | 
			
		||||
	Pages    int  `json:"pages"`
 | 
			
		||||
	PerPage int      `json:"per_page"`
 | 
			
		||||
	Items   int      `json:"items"`
 | 
			
		||||
	Page    int      `json:"page"`
 | 
			
		||||
	URLs    URLsList `json:"urls"`
 | 
			
		||||
	Pages   int      `json:"pages"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type URLS struct {
 | 
			
		||||
// URLsList ...
 | 
			
		||||
type URLsList struct {
 | 
			
		||||
	Last string `json:"last"`
 | 
			
		||||
	Next string `json:"next"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Version ...
 | 
			
		||||
type Version struct {
 | 
			
		||||
	Catno        string `json:"catno"`
 | 
			
		||||
	Country      string `json:"country"`
 | 
			
		||||
	Format       string `json:"format"`
 | 
			
		||||
	Id           int    `json:"id"`
 | 
			
		||||
	Label        string `json:"label"`
 | 
			
		||||
	Released     string `json:"released"`
 | 
			
		||||
	Resource_url string `json:"resource_url"`
 | 
			
		||||
	Status       string `json:"status"`
 | 
			
		||||
	Thumb        string `json:"thumb"`
 | 
			
		||||
	Title        string `json:"title"`
 | 
			
		||||
	Catno       string `json:"catno"`
 | 
			
		||||
	Country     string `json:"country"`
 | 
			
		||||
	Format      string `json:"format"`
 | 
			
		||||
	ID          int    `json:"id"`
 | 
			
		||||
	Label       string `json:"label"`
 | 
			
		||||
	Released    string `json:"released"`
 | 
			
		||||
	ResourceURL string `json:"resource_url"`
 | 
			
		||||
	Status      string `json:"status"`
 | 
			
		||||
	Thumb       string `json:"thumb"`
 | 
			
		||||
	Title       string `json:"title"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Member ...
 | 
			
		||||
type Member struct {
 | 
			
		||||
	Active       bool   `json:"active"`
 | 
			
		||||
	Id           int    `json:"id"`
 | 
			
		||||
	Name         string `json:"name"`
 | 
			
		||||
	Resource_url string `json:"resource_url"`
 | 
			
		||||
	Active      bool   `json:"active"`
 | 
			
		||||
	ID          int    `json:"id"`
 | 
			
		||||
	Name        string `json:"name"`
 | 
			
		||||
	ResourceURL string `json:"resource_url"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Sublable ...
 | 
			
		||||
type Sublable struct {
 | 
			
		||||
	Resource_url string `json:"url"`
 | 
			
		||||
	Id           int    `json:"id"`
 | 
			
		||||
	Name         string `json:"name"`
 | 
			
		||||
	ResourceURL string `json:"url"`
 | 
			
		||||
	ID          int    `json:"id"`
 | 
			
		||||
	Name        string `json:"name"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ReleaseSource ...
 | 
			
		||||
type ReleaseSource struct {
 | 
			
		||||
	Artist       string `json:"artist"`
 | 
			
		||||
	Catno        string `json:"catno"`
 | 
			
		||||
	Format       string `json:"format"`
 | 
			
		||||
	Id           int    `json:"id"`
 | 
			
		||||
	Resource_url string `json:"resource_url"`
 | 
			
		||||
	Status       string `json:"status"`
 | 
			
		||||
	Thumb        string `json:"thumb"`
 | 
			
		||||
	Title        string `json:"title"`
 | 
			
		||||
	Year         int    `json:"year"`
 | 
			
		||||
	Main_release int    `json:"main_release"`
 | 
			
		||||
	Role         string `json:"role"`
 | 
			
		||||
	Type         string `json:"type"`
 | 
			
		||||
	Artist      string `json:"artist"`
 | 
			
		||||
	Catno       string `json:"catno"`
 | 
			
		||||
	Format      string `json:"format"`
 | 
			
		||||
	ID          int    `json:"id"`
 | 
			
		||||
	ResourceURL string `json:"resource_url"`
 | 
			
		||||
	Status      string `json:"status"`
 | 
			
		||||
	Thumb       string `json:"thumb"`
 | 
			
		||||
	Title       string `json:"title"`
 | 
			
		||||
	Year        int    `json:"year"`
 | 
			
		||||
	MainRelease int    `json:"main_release"`
 | 
			
		||||
	Role        string `json:"role"`
 | 
			
		||||
	Type        string `json:"type"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Pagination ...
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user