DSCGS-11 Improve SearchService
This commit is contained in:
parent
b8ec73e2a0
commit
1091d9be02
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