Merge pull request #3 from irlndts/DISCOGS-2
Discogs-2 Search Implementation
This commit is contained in:
		
							
								
								
									
										63
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								README.md
									
									
									
									
									
								
							@@ -1,20 +1,24 @@
 | 
				
			|||||||
# REST API 2.0 Discogs.com client
 | 
					# REST API 2.0 Discogs.com client
 | 
				
			||||||
 | 
					
 | 
				
			||||||
go-discogs is a Go client library for the [Discogs API](https://www.discogs.com/developers/). Check the usage section or try the examples to see how to access the Discogs API.
 | 
					go-discogs is a Go client library for the [Discogs API](https://www.discogs.com/developers/). Check the usage section to see how to access the Discogs API.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Changelog
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					14.02.2017 
 | 
				
			||||||
 | 
					- search is implemented
 | 
				
			||||||
 | 
					- minor improvements
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Feauteres
 | 
					### Feauteres
 | 
				
			||||||
 * Database
 | 
					 * Database
 | 
				
			||||||
  * Releases
 | 
					  * [Releases](#releases)
 | 
				
			||||||
  * Master Releases
 | 
					  * Master Releases
 | 
				
			||||||
  * Release Versions
 | 
					  * Release Versions
 | 
				
			||||||
  * Artists
 | 
					  * Artists
 | 
				
			||||||
  * Artist Releases
 | 
					  * Artist Releases
 | 
				
			||||||
  * Label
 | 
					  * Label
 | 
				
			||||||
  * All Label Releases
 | 
					  * All Label Releases
 | 
				
			||||||
 
 | 
					  * [Search](#search)
 | 
				
			||||||
#### ToDo
 | 
					 | 
				
			||||||
- Search
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
Install
 | 
					Install
 | 
				
			||||||
--------
 | 
					--------
 | 
				
			||||||
@@ -28,7 +32,11 @@ First of all import library and init client variable. According to discogs api d
 | 
				
			|||||||
import "github.com/irlndts/go-discogs"
 | 
					import "github.com/irlndts/go-discogs"
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
```go
 | 
					```go
 | 
				
			||||||
client := discogs.NewClient().UserAgent("TestDiscogsClient/0.0.1 +example.com")
 | 
					client := discogs.NewClient("TestDiscogsClient/0.0.1 +example.com", "")
 | 
				
			||||||
 | 
					``` 
 | 
				
			||||||
 | 
					Some requests require authentication (as any user). According to [Discogs](https://www.discogs.com/developers/#page:authentication,header:authentication-discogs-auth-flow), to send requests with Discogs Auth, you have two options: sending your credentials in the query string with key and secret parameters or a token parameter. Key-secret doesn't implemented yet, but token is yes.
 | 
				
			||||||
 | 
					```go
 | 
				
			||||||
 | 
					client := discogs.NewClient("TestDiscogsClient/0.0.1 +example.com", "sometoken")
 | 
				
			||||||
``` 
 | 
					``` 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Releases
 | 
					#### Releases
 | 
				
			||||||
@@ -55,5 +63,46 @@ client := discogs.NewClient().UserAgent("TestDiscogsClient/0.0.1 +example.com")
 | 
				
			|||||||
  */
 | 
					  */
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Search
 | 
				
			||||||
 | 
					Issue a search query to discogs database. This endpoint accepts pagination parameters
 | 
				
			||||||
 | 
					Authentication (as any user) is required.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Use `SearchRequest` struc to create a request
 | 
				
			||||||
 | 
					```go
 | 
				
			||||||
 | 
					type SearchRequest struct {
 | 
				
			||||||
 | 
					    Q             string // search query (optional)
 | 
				
			||||||
 | 
					    Type          string // one of release, master, artist, label (optional)
 | 
				
			||||||
 | 
					    Title         string // search by combined “Artist Name - Release Title” title field (optional)
 | 
				
			||||||
 | 
					    Release_title string // search release titles (optional)
 | 
				
			||||||
 | 
					    Credit        string // search release credits (optional)
 | 
				
			||||||
 | 
					    Artist        string // search artist names (optional)
 | 
				
			||||||
 | 
					    Anv           string // search artist ANV (optional)
 | 
				
			||||||
 | 
					    Label         string // search label names (optional)
 | 
				
			||||||
 | 
					    Genre         string // search genres (optional)
 | 
				
			||||||
 | 
					    Style         string // search styles (optional)
 | 
				
			||||||
 | 
					    Country       string // search release country (optional)
 | 
				
			||||||
 | 
					    Year          string // search release year (optional)
 | 
				
			||||||
 | 
					    Format        string // search formats (optional)
 | 
				
			||||||
 | 
					    Catno         string // search catalog number (optional)
 | 
				
			||||||
 | 
					    Barcode       string // search barcodes (optional)
 | 
				
			||||||
 | 
					    Track         string // search track titles (optional)
 | 
				
			||||||
 | 
					    Submitter     string // search submitter username (optional)
 | 
				
			||||||
 | 
					    Contributer   string // search contributor usernames (optional)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Page     int // optional
 | 
				
			||||||
 | 
					    Per_page int // optional
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example
 | 
				
			||||||
 | 
					```go
 | 
				
			||||||
 | 
					  request:= &discogs.SearchRequest{Artist: "reggaenauts", Release_title: "river rock", Page: 0, Per_page: 1}
 | 
				
			||||||
 | 
					  search, _, err := client.Search(request)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  for _, r := range search.Results {
 | 
				
			||||||
 | 
					    fmt.Println(r.Title)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
etc. 
 | 
					etc. 
 | 
				
			||||||
More examples - soon
 | 
					More examples - soon
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ import (
 | 
				
			|||||||
func TestArtistService_Artist(t *testing.T) {
 | 
					func TestArtistService_Artist(t *testing.T) {
 | 
				
			||||||
	expectedId := 1000
 | 
						expectedId := 1000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	d := NewClient().UserAgent("UnitTestClient/0.0.1 +https://github.com/irlndts/go-discogs")
 | 
						d := NewClient(testUserAgent, testToken)
 | 
				
			||||||
	artist, _, err := d.Artist.Artist(&ArtistParams{Artist_id: "1000"})
 | 
						artist, _, err := d.Artist.Artist(&ArtistParams{Artist_id: "1000"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	check(t, err)
 | 
						check(t, err)
 | 
				
			||||||
@@ -18,7 +18,7 @@ func TestArtistService_Artist(t *testing.T) {
 | 
				
			|||||||
func TestArtistService_Releases(t *testing.T) {
 | 
					func TestArtistService_Releases(t *testing.T) {
 | 
				
			||||||
	expectedArtist := "Dave Clarke"
 | 
						expectedArtist := "Dave Clarke"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	d := NewClient().UserAgent("UnitTestClient/0.0.1 +https://github.com/irlndts/go-discogs")
 | 
						d := NewClient(testUserAgent, testToken)
 | 
				
			||||||
	releases, _, err := d.Artist.Releases(&ArtistParams{Artist_id: "1000", Sort: "year", Sort_order: "desc"})
 | 
						releases, _, err := d.Artist.Releases(&ArtistParams{Artist_id: "1000", Sort: "year", Sort_order: "desc"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	check(t, err)
 | 
						check(t, err)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										23
									
								
								discogs.go
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								discogs.go
									
									
									
									
									
								
							@@ -1,13 +1,13 @@
 | 
				
			|||||||
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/"
 | 
						discogsAPI = "https://api.discogs.com/"
 | 
				
			||||||
	useragent  = "Test UserAgent"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Client is a Discogs client for making Discogs API requests.
 | 
					// Client is a Discogs client for making Discogs API requests.
 | 
				
			||||||
@@ -17,23 +17,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(useragent, token string) *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.New()),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 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
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,11 @@ import (
 | 
				
			|||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						testUserAgent = "UnitTestClient/0.0.2 +https://github.com/irlndts/go-discogs"
 | 
				
			||||||
 | 
						testToken     = ""
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func check(t *testing.T, e error) {
 | 
					func check(t *testing.T, e error) {
 | 
				
			||||||
	if e != nil {
 | 
						if e != nil {
 | 
				
			||||||
		t.Error(e)
 | 
							t.Error(e)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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("TestDiscogsClient/0.0.1 +http://irlndts.moscow", "")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						request := &discogs.SearchRequest{Q: "The Reggaenauts - River Rock / Thursday Kick-off", Page: 0, Per_page: 1}
 | 
				
			||||||
		params := &discogs.ReleaseParams{Release_id: "8138518"}
 | 
						search, _, err := d.Search.Search(request)
 | 
				
			||||||
		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.Id, r.Title)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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 {
 | 
				
			||||||
@@ -12,7 +13,7 @@ type LabelService struct {
 | 
				
			|||||||
type LabelParams struct {
 | 
					type LabelParams struct {
 | 
				
			||||||
	Label_id string
 | 
						Label_id string
 | 
				
			||||||
	Page     int
 | 
						Page     int
 | 
				
			||||||
	Per_page int
 | 
						Per_Page int
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Label struct {
 | 
					type Label struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ import (
 | 
				
			|||||||
func TestLabelService_Label(t *testing.T) {
 | 
					func TestLabelService_Label(t *testing.T) {
 | 
				
			||||||
	expectedId := 1000
 | 
						expectedId := 1000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	d := NewClient().UserAgent("UnitTestClient/0.0.1 +https://github.com/irlndts/go-discogs")
 | 
						d := NewClient(testUserAgent, testToken)
 | 
				
			||||||
	label, _, err := d.Label.Label(&LabelParams{Label_id: "1000"})
 | 
						label, _, err := d.Label.Label(&LabelParams{Label_id: "1000"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	check(t, err)
 | 
						check(t, err)
 | 
				
			||||||
@@ -18,7 +18,7 @@ func TestLabelService_Label(t *testing.T) {
 | 
				
			|||||||
func TestLabelService_Releases(t *testing.T) {
 | 
					func TestLabelService_Releases(t *testing.T) {
 | 
				
			||||||
	expectedId := "Cha Cha Twist"
 | 
						expectedId := "Cha Cha Twist"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	d := NewClient().UserAgent("UnitTestClient/0.0.1 +https://github.com/irlndts/go-discogs")
 | 
						d := NewClient(testUserAgent, testToken)
 | 
				
			||||||
	label, _, err := d.Label.Releases(&LabelParams{Label_id: "1000"})
 | 
						label, _, err := d.Label.Releases(&LabelParams{Label_id: "1000"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	check(t, err)
 | 
						check(t, err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ import (
 | 
				
			|||||||
func TestMasterService_Master(t *testing.T) {
 | 
					func TestMasterService_Master(t *testing.T) {
 | 
				
			||||||
	expectedTitle := "Elephant Riddim"
 | 
						expectedTitle := "Elephant Riddim"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	d := NewClient().UserAgent("UnitTestClient/0.0.1 +https://github.com/irlndts/go-discogs")
 | 
						d := NewClient(testUserAgent, testToken)
 | 
				
			||||||
	master, _, err := d.Master.Master(&MasterParams{Master_id: "960657"})
 | 
						master, _, err := d.Master.Master(&MasterParams{Master_id: "960657"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	check(t, err)
 | 
						check(t, err)
 | 
				
			||||||
@@ -18,7 +18,7 @@ func TestMasterService_Master(t *testing.T) {
 | 
				
			|||||||
func TestMasterService_Versions(t *testing.T) {
 | 
					func TestMasterService_Versions(t *testing.T) {
 | 
				
			||||||
	expectedTitle := "Stardiver"
 | 
						expectedTitle := "Stardiver"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	d := NewClient().UserAgent("UnitTestClient/0.0.1 +https://github.com/irlndts/go-discogs")
 | 
						d := NewClient(testUserAgent, testToken)
 | 
				
			||||||
	versions, _, err := d.Master.Versions(&MasterVersionParams{Master_id: "1000", Page: 1, Per_page: 1})
 | 
						versions, _, err := d.Master.Versions(&MasterVersionParams{Master_id: "1000", Page: 1, Per_page: 1})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	check(t, err)
 | 
						check(t, err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ import (
 | 
				
			|||||||
func TestReleaseService_Release(t *testing.T) {
 | 
					func TestReleaseService_Release(t *testing.T) {
 | 
				
			||||||
	expectedTitle := "Elephant Riddim"
 | 
						expectedTitle := "Elephant Riddim"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	d := NewClient().UserAgent("UnitTestClient/0.0.1 +https://github.com/irlndts/go-discogs")
 | 
						d := NewClient(testUserAgent, testToken)
 | 
				
			||||||
	release, _, err := d.Release.Release(&ReleaseParams{Release_id: "8138518"})
 | 
						release, _, err := d.Release.Release(&ReleaseParams{Release_id: "8138518"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	check(t, err)
 | 
						check(t, err)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										71
									
								
								search.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								search.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					package discogs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/irlndts/go-apirequest"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type SearchService struct {
 | 
				
			||||||
 | 
						api *apirequest.API
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type SearchRequest struct {
 | 
				
			||||||
 | 
						Q             string // search query (optional)
 | 
				
			||||||
 | 
						Type          string // one of release, master, artist, label (optional)
 | 
				
			||||||
 | 
						Title         string // search by combined “Artist Name - Release Title” title field (optional)
 | 
				
			||||||
 | 
						Release_title string // search release titles (optional)
 | 
				
			||||||
 | 
						Credit        string // search release credits (optional)
 | 
				
			||||||
 | 
						Artist        string // search artist names (optional)
 | 
				
			||||||
 | 
						Anv           string // search artist ANV (optional)
 | 
				
			||||||
 | 
						Label         string // search label names (optional)
 | 
				
			||||||
 | 
						Genre         string // search genres (optional)
 | 
				
			||||||
 | 
						Style         string // search styles (optional)
 | 
				
			||||||
 | 
						Country       string // search release country (optional)
 | 
				
			||||||
 | 
						Year          string // search release year (optional)
 | 
				
			||||||
 | 
						Format        string // search formats (optional)
 | 
				
			||||||
 | 
						Catno         string // search catalog number (optional)
 | 
				
			||||||
 | 
						Barcode       string // search barcodes (optional)
 | 
				
			||||||
 | 
						Track         string // search track titles (optional)
 | 
				
			||||||
 | 
						Submitter     string // search submitter username (optional)
 | 
				
			||||||
 | 
						Contributer   string // search contributor usernames (optional)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Page     int // optional
 | 
				
			||||||
 | 
						Per_page int // optional
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Search struct {
 | 
				
			||||||
 | 
						Pagination Page     `json:"pagination"`
 | 
				
			||||||
 | 
						Results    []Result `json:"results"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Result struct {
 | 
				
			||||||
 | 
						Style        []string  `json:"style"`
 | 
				
			||||||
 | 
						Thumb        string    `json:"thumb"`
 | 
				
			||||||
 | 
						Title        string    `json:"title"`
 | 
				
			||||||
 | 
						Country      string    `json:"country"`
 | 
				
			||||||
 | 
						Format       []string  `json:"format"`
 | 
				
			||||||
 | 
						Uri          string    `json:"uri"`
 | 
				
			||||||
 | 
						Community    Community `json:"community"`
 | 
				
			||||||
 | 
						Label        []string  `json:"label"`
 | 
				
			||||||
 | 
						Catno        string    `json:"catno"`
 | 
				
			||||||
 | 
						Year         string    `json:"year"`
 | 
				
			||||||
 | 
						Genre        []string  `json:"genre"`
 | 
				
			||||||
 | 
						Resource_url string    `json:"resource_url"`
 | 
				
			||||||
 | 
						Type         string    `json:"type"`
 | 
				
			||||||
 | 
						Id           int       `json:"id"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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.New().QueryStruct(params).Receive(search, apiError)
 | 
				
			||||||
 | 
						return search, resp, relevantError(err, *apiError)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user