aboutsummaryrefslogtreecommitdiff
path: root/provider.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-01-02 08:47:49 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-01-02 08:47:49 +0100
commit74658055757a2f85a20754d48ecec81921becef6 (patch)
tree051a426c485c0bc3fa9da42bb14d85e4aef74267 /provider.go
parent42a87a2a1c25cda35c75091b73383546f5763bc9 (diff)
parseProblem
Diffstat (limited to 'provider.go')
-rw-r--r--provider.go20
1 files changed, 12 insertions, 8 deletions
diff --git a/provider.go b/provider.go
index da7d522..850b6d3 100644
--- a/provider.go
+++ b/provider.go
@@ -98,14 +98,7 @@ func (p *Provider) post(uri string, s Signer, v interface{}) (*http.Response, er
switch resp.Header.Get("Content-Type") {
case "application/problem+json":
defer resp.Body.Close()
- var p Problem
- if err = json.NewDecoder(resp.Body).Decode(&p); err != nil {
- return resp, err
- }
- if err, ok := urnErrors[p.Type]; ok {
- p.Err = err
- }
- return resp, p
+ return resp, parseProblem(resp)
case "application/json":
defer resp.Body.Close()
return resp, json.NewDecoder(resp.Body).Decode(v)
@@ -116,6 +109,17 @@ func (p *Provider) post(uri string, s Signer, v interface{}) (*http.Response, er
}
}
+func parseProblem(resp *http.Response) error {
+ var p Problem
+ if err := json.NewDecoder(resp.Body).Decode(&p); err != nil {
+ return err
+ }
+ if err, ok := urnErrors[p.Type]; ok {
+ p.Err = err
+ }
+ return p
+}
+
type Links map[string]string
type nextStep struct {