diff options
-rw-r--r-- | src/helsinki.at/rhimport/importer.go | 46 |
1 files changed, 33 insertions, 13 deletions
diff --git a/src/helsinki.at/rhimport/importer.go b/src/helsinki.at/rhimport/importer.go index 749c895..7c85fdd 100644 --- a/src/helsinki.at/rhimport/importer.go +++ b/src/helsinki.at/rhimport/importer.go @@ -132,7 +132,7 @@ func NewImportResult(rdres *RDWebResult) *ImportResult { return res } -func add_cart(ctx *ImportContext) (result *RDWebResult, err error) { +func add_cart(ctx *ImportContext) (result interface{}, err error) { var b bytes.Buffer w := multipart.NewWriter(&b) @@ -157,11 +157,20 @@ func add_cart(ctx *ImportContext) (result *RDWebResult, err error) { } } w.Close() - return send_post_request(ctx.Config.RDXportEndpoint, &b, w.FormDataContentType()) - // TODO: on success this returns <cartAdd>...</cartAdd> + + var res *http.Response + if res, err = send_post_request(ctx.Config.RDXportEndpoint, &b, w.FormDataContentType()); err != nil { + return + } + defer res.Body.Close() + + if res.StatusCode != http.StatusOK { + return NewRDWebResultFromXML(res.Body) + } + return NewRDCartAddFromXML(res.Body) } -func add_cut(ctx *ImportContext) (result *RDWebResult, err error) { +func add_cut(ctx *ImportContext) (result interface{}, err error) { var b bytes.Buffer w := multipart.NewWriter(&b) @@ -178,8 +187,17 @@ func add_cut(ctx *ImportContext) (result *RDWebResult, err error) { return } w.Close() - return send_post_request(ctx.Config.RDXportEndpoint, &b, w.FormDataContentType()) - // TODO: on success this returns <cutAdd>...</cutAdd> + + var res *http.Response + if res, err = send_post_request(ctx.Config.RDXportEndpoint, &b, w.FormDataContentType()); err != nil { + return + } + defer res.Body.Close() + + if res.StatusCode != http.StatusOK { + return NewRDWebResultFromXML(res.Body) + } + return NewRDCutAddFromXML(res.Body) } func remove_cart(ctx *ImportContext) (result *RDWebResult, err error) { @@ -199,10 +217,16 @@ func remove_cart(ctx *ImportContext) (result *RDWebResult, err error) { return } w.Close() - return send_post_request(ctx.Config.RDXportEndpoint, &b, w.FormDataContentType()) + + var res *http.Response + if res, err = send_post_request(ctx.Config.RDXportEndpoint, &b, w.FormDataContentType()); err != nil { + return + } + defer res.Body.Close() + return NewRDWebResultFromXML(res.Body) } -func send_post_request(url string, b *bytes.Buffer, contenttype string) (result *RDWebResult, err error) { +func send_post_request(url string, b *bytes.Buffer, contenttype string) (res *http.Response, err error) { var req *http.Request if req, err = http.NewRequest("POST", url, b); err != nil { return @@ -212,14 +236,10 @@ func send_post_request(url string, b *bytes.Buffer, contenttype string) (result } client := &http.Client{} - var res *http.Response if res, err = client.Do(req); err != nil { return } - defer res.Body.Close() - - // TODO: some commands might return something else... - return NewRDWebResultFromXML(res.Body) + return } func import_audio_create_request(ctx *ImportContext, easy *curl.CURL) (form *curl.Form, err error) { |