diff options
Diffstat (limited to 'src/helsinki.at')
-rw-r--r-- | src/helsinki.at/rhimport/importer.go | 70 | ||||
-rw-r--r-- | src/helsinki.at/rhimportd/ctrlWebSimple.go | 2 |
2 files changed, 53 insertions, 19 deletions
diff --git a/src/helsinki.at/rhimport/importer.go b/src/helsinki.at/rhimport/importer.go index 68b71a6..c7b1a66 100644 --- a/src/helsinki.at/rhimport/importer.go +++ b/src/helsinki.at/rhimport/importer.go @@ -114,6 +114,57 @@ func (ctx *ImportContext) getShowInfo() (err error) { return } +func send_post_request(url string, b *bytes.Buffer, contenttype string) (err error) { + var req *http.Request + if req, err = http.NewRequest("POST", url, b); err != nil { + return + } + if contenttype != "" { + req.Header.Set("Content-Type", contenttype) + } + + client := &http.Client{} + var res *http.Response + if res, err = client.Do(req); err != nil { + return + } + defer res.Body.Close() + + if res.StatusCode != http.StatusOK { + // TODO: better error output + err = fmt.Errorf("bad status: %s", res.Status) + } + return +} + +func add_cart(ctx *ImportContext) (err error) { + var b bytes.Buffer + w := multipart.NewWriter(&b) + + if err = w.WriteField("COMMAND", "12"); err != nil { + return + } + if err = w.WriteField("LOGIN_NAME", ctx.UserName); err != nil { + return + } + if err = w.WriteField("PASSWORD", ctx.Password); err != nil { + return + } + if err = w.WriteField("GRPOUP_NAME", ctx.GroupName); err != nil { + return + } + if err = w.WriteField("TYPE", "audio"); err != nil { + return + } + if ctx.Cart != 0 { + if err = w.WriteField("CART_NUMBER", fmt.Sprintf("%d", ctx.Cart)); err != nil { + return + } + } + w.Close() + return send_post_request(ctx.Config.RDXportEndpoint, &b, w.FormDataContentType()) +} + func import_audio(ctx *ImportContext) (err error) { var b bytes.Buffer w := multipart.NewWriter(&b) @@ -160,24 +211,7 @@ func import_audio(ctx *ImportContext) (err error) { f.Close() w.Close() - var req *http.Request - if req, err = http.NewRequest("POST", ctx.Config.RDXportEndpoint, &b); err != nil { - return - } - req.Header.Set("Content-Type", w.FormDataContentType()) - - client := &http.Client{} - var res *http.Response - if res, err = client.Do(req); err != nil { - return - } - defer res.Body.Close() - - if res.StatusCode != http.StatusOK { - // TODO: better error output - err = fmt.Errorf("bad status: %s", res.Status) - } - return + return send_post_request(ctx.Config.RDXportEndpoint, &b, w.FormDataContentType()) } func cleanup_files(ctx *ImportContext) { diff --git a/src/helsinki.at/rhimportd/ctrlWebSimple.go b/src/helsinki.at/rhimportd/ctrlWebSimple.go index 1d28818..4cac593 100644 --- a/src/helsinki.at/rhimportd/ctrlWebSimple.go +++ b/src/helsinki.at/rhimportd/ctrlWebSimple.go @@ -68,7 +68,7 @@ func webSimpleResponse(w http.ResponseWriter) { } func webSimpleProgressCallback(step int, step_name string, progress float64, userdata interface{}) { - fmt.Printf("Step %d / %s: %3.2f%%\r", step, step_name, progress * 100) + fmt.Printf("Step %d / %s: %3.2f%%\r", step, step_name, progress*100) } func webSimpleParseRequest(conf *rhimport.Config, rddb *rhimport.RdDb, trusted bool, r *http.Request) (ctx *rhimport.ImportContext, err error) { |