From 74658055757a2f85a20754d48ecec81921becef6 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 2 Jan 2016 08:47:49 +0100 Subject: parseProblem --- provider.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'provider.go') 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 { -- cgit v1.2.3