DSCGS-11 Improve SearchService
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								.discogs.go.swp
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.discogs.go.swp
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.search.go.swp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.search.go.swp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -64,7 +64,7 @@ func NewClient(o *Options) (*Client, error) {
 | 
				
			|||||||
		Artist:  newArtistService(o.URL + "/artists/"),
 | 
							Artist:  newArtistService(o.URL + "/artists/"),
 | 
				
			||||||
		Label:   newLabelService(o.URL + "/labels/"),
 | 
							Label:   newLabelService(o.URL + "/labels/"),
 | 
				
			||||||
		Master:  newMasterService(o.URL + "/masters/"),
 | 
							Master:  newMasterService(o.URL + "/masters/"),
 | 
				
			||||||
		Search:  newSearchService(base.New()),
 | 
							Search:  newSearchService(o.URL + "/database/search"),
 | 
				
			||||||
	}, nil
 | 
						}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -100,6 +100,7 @@ func request(path string, params url.Values, resp interface{}) error {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						fmt.Println(string(body))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return json.Unmarshal(body, &resp)
 | 
						return json.Unmarshal(body, &resp)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
										
											Binary file not shown.
										
									
								
							@@ -2,6 +2,7 @@ package main
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
						"net/url"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/irlndts/go-discogs"
 | 
						"github.com/irlndts/go-discogs"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -17,7 +18,9 @@ func main() {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	release, err := d.Master.Versions(1147170, nil)
 | 
						params := url.Values{}
 | 
				
			||||||
 | 
						params.Set("q", "Ska-Jazz Review")
 | 
				
			||||||
 | 
						release, err := d.Search.Search(params)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		fmt.Println(err)
 | 
							fmt.Println(err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										38
									
								
								search.go
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								search.go
									
									
									
									
									
								
							@@ -1,17 +1,19 @@
 | 
				
			|||||||
package discogs
 | 
					package discogs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import "net/url"
 | 
				
			||||||
	"net/http"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"github.com/irlndts/go-apirequest"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// SearchService ...
 | 
					// SearchService ...
 | 
				
			||||||
type SearchService struct {
 | 
					type SearchService struct {
 | 
				
			||||||
	api *apirequest.API
 | 
						url string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// SerachRequest describes search request json
 | 
					func newSearchService(url string) *SearchService {
 | 
				
			||||||
 | 
						return &SearchService{
 | 
				
			||||||
 | 
							url: url,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SerachRequest describes search request
 | 
				
			||||||
type SearchRequest struct {
 | 
					type SearchRequest struct {
 | 
				
			||||||
	Q             string // search query (optional)
 | 
						Q             string // search query (optional)
 | 
				
			||||||
	Type          string // one of release, master, artist, label (optional)
 | 
						Type          string // one of release, master, artist, label (optional)
 | 
				
			||||||
@@ -32,8 +34,8 @@ type SearchRequest struct {
 | 
				
			|||||||
	Submitter     string // search submitter username (optional)
 | 
						Submitter     string // search submitter username (optional)
 | 
				
			||||||
	Contributer   string // search contributor usernames (optional)
 | 
						Contributer   string // search contributor usernames (optional)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Page     int // optional
 | 
						Page    int // optional
 | 
				
			||||||
	Per_page int // optional
 | 
						PerPage int // optional
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Search describes search response
 | 
					// Search describes search response
 | 
				
			||||||
@@ -60,20 +62,14 @@ type Result struct {
 | 
				
			|||||||
	ID          int       `json:"id,omitempty"`
 | 
						ID          int       `json:"id,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newSearchService(api *apirequest.API) *SearchService {
 | 
					 | 
				
			||||||
	return &SearchService{
 | 
					 | 
				
			||||||
		api: api.Path("database/search"),
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Search makes search request to discogs.
 | 
					// Search makes search request to discogs.
 | 
				
			||||||
// Issue a search query to our database. This endpoint accepts pagination parameters.
 | 
					// Issue a search query to our database. This endpoint accepts pagination parameters.
 | 
				
			||||||
// Authentication (as any user) is required.
 | 
					// Authentication (as any user) is required.
 | 
				
			||||||
// https://www.discogs.com/developers/#page:database,header:database-search
 | 
					// https://www.discogs.com/developers/#page:database,header:database-search
 | 
				
			||||||
func (self *SearchService) Search(params *SearchRequest) (*Search, *http.Response, error) {
 | 
					func (s *SearchService) Search(params url.Values) (*Search, error) {
 | 
				
			||||||
	search := new(Search)
 | 
						var search *Search
 | 
				
			||||||
	apiError := new(APIError)
 | 
						if err := request(s.url, params, &search); err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
	resp, err := self.api.New().QueryStruct(params).Receive(search, apiError)
 | 
						}
 | 
				
			||||||
	return search, resp, relevantError(err, *apiError)
 | 
						return search, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user