func (c *Client) BookReviewCounts(isbns []string) ([]responses.ReviewCounts, error) {
	v := c.defaultValues()
	v.Set("isbns", strings.Join(isbns, ","))
	var r struct {
		ReviewCounts []responses.ReviewCounts `json:"books"`
	}
	err := c.httpClient.Get("book/review_counts.json", json.Unmarshal, v, &r)
	if err != nil {
		return nil, err
	}
	return r.ReviewCounts, nil
}
BookReviewCounts returns the review statistics for a given list of ISBNs.
https://www.goodreads.com/api/index#book.review_counts
package goodreads
import (
	"encoding/json"
	"encoding/xml"
	"fmt"
	"github.com/KyleBanks/goodreads/responses"
	"github.com/KyleBanks/goodreads/responses/work"
	"net/url"
	"strconv"
	"strings"
)
type Client struct {
	APIKey     string
	httpClient APIClient
}
func NewClient(key string) *Client {
	return &Client{
		APIKey:     key,
		httpClient: defaultAPIClient,
	}
}
func (c *Client) AuthorBooks(authorID string, page int) (*responses.Author, error) {
	v := c.defaultValues()
	if page > 0 {
		v.Set("page", strconv.Itoa(page))
	}
	var r struct {
		Author responses.Author `xml:"author"`
	}
	err := c.httpClient.Get(fmt.Sprintf("author/list/%s", authorID), xml.Unmarshal, v, &r)
	if err != nil {
		return nil, err
	}
	return &r.Author, nil
}
func (c *Client) AuthorShow(authorID string) (*responses.Author, error) {
	var r struct {
		Author responses.Author `xml:"author"`
	}
	err := c.httpClient.Get(fmt.Sprintf("author/show/%s", authorID), xml.Unmarshal, c.defaultValues(), &r)
	if err != nil {
		return nil, err
	}
	return &r.Author, nil
}