This commit is contained in:
irlndts 2016-03-09 18:14:42 +03:00
parent 4b348c7732
commit 09f73cff09
3 changed files with 49 additions and 4 deletions

40
errors.go Normal file
View File

@ -0,0 +1,40 @@
package discogs
import (
"fmt"
)
// APIError represents a Twitter API Error response
// https://dev.twitter.com/overview/api/response-codes
type APIError struct {
Message string `json:"message"`
}
func (e APIError) Error() string {
if e.Message != "" {
return fmt.Sprintf("discogs: %v", e.Message)
}
return ""
}
// Empty returns true if empty. Otherwise, at least 1 error message/code is
// present and false is returned.
func (e APIError) Empty() bool {
if e.Message == "" {
return true
}
return false
}
// relevantError returns any non-nil http-related error (creating the request,
// getting the response, decoding) if any. If the decoded apiError is non-zero
// the apiError is returned. Otherwise, no errors occurred, returns nil.
func relevantError(httpError error, apiError APIError) error {
if httpError != nil {
return httpError
}
if apiError.Empty() {
return nil
}
return apiError
}

View File

@ -12,6 +12,10 @@ func main() {
d := discogs.NewClient(client).UserAgent("TestDiscogsClient/0.0.1 +http://irlndts.moscow") d := discogs.NewClient(client).UserAgent("TestDiscogsClient/0.0.1 +http://irlndts.moscow")
params := &discogs.ReleaseParams{Release_id: "1"} params := &discogs.ReleaseParams{Release_id: "1"}
release, _, err := d.Release.Release(params) release, _, err := d.Release.Release(params)
fmt.Println(release) if err != nil {
fmt.Println(err) fmt.Println(err)
} else {
fmt.Println(release)
}
//fmt.Println(resp)
} }

View File

@ -151,6 +151,7 @@ func newReleaseService(api *apirequest.API) *ReleaseService {
func (self *ReleaseService) Release(params *ReleaseParams) (*Release, *http.Response, error) { func (self *ReleaseService) Release(params *ReleaseParams) (*Release, *http.Response, error) {
release := new(Release) release := new(Release)
resp, err := self.api.New().Get(params.Release_id).QueryStruct(params).Receive(release, nil) apiError := new(APIError)
return release, resp, err resp, err := self.api.New().Get(params.Release_id).QueryStruct(params).Receive(release, apiError)
return release, resp, relevantError(err, *apiError)
} }