diff options
Diffstat (limited to 'rhimport/fetcher.go')
-rw-r--r-- | rhimport/fetcher.go | 81 |
1 files changed, 7 insertions, 74 deletions
diff --git a/rhimport/fetcher.go b/rhimport/fetcher.go index 7a946f6..6c113a4 100644 --- a/rhimport/fetcher.go +++ b/rhimport/fetcher.go @@ -28,7 +28,6 @@ import ( "bytes" "fmt" "io" - "io/ioutil" "log" "mime" "net/http" @@ -48,7 +47,6 @@ import ( type fetcherCurlCBData struct { ctx *Context res *Result - basepath string filename string remotename string conv fetchConverter @@ -64,7 +62,7 @@ func curlHeaderCallback(ptr []byte, userdata interface{}) bool { if strings.HasPrefix(hdr, "Content-Disposition:") { if mediatype, params, err := mime.ParseMediaType(strings.TrimPrefix(hdr, "Content-Disposition:")); err == nil { if mediatype == "attachment" { - data.filename = filepath.Join(data.basepath, path.Clean("/"+params["filename"])) + data.filename = filepath.Join(data.ctx.WorkDir, path.Clean("/"+params["filename"])) } } } @@ -80,7 +78,7 @@ func curlWriteCallback(ptr []byte, userdata interface{}) bool { data.ctx.dbglog.Printf("remotename('%s') is invalid, replacing it with 'unnamed'", data.remotename) name = "unnamed" } - data.filename = filepath.Join(data.basepath, name) + data.filename = filepath.Join(data.ctx.WorkDir, name) } data.ctx.OrigFilename = data.filename conv, newFilename, err := newFetchConverter(data.ctx, data.filename) @@ -203,9 +201,6 @@ func fetchFileCurl(ctx *Context, res *Result, uri *url.URL) (err error) { } cbdata := &fetcherCurlCBData{ctx: ctx, res: res, remotename: path.Base(uri.Path)} - if cbdata.basepath, err = ioutil.TempDir(ctx.conf.TempDir, "rhimportd-"); err != nil { - return - } if info != nil { if info.Title == "" { cbdata.remotename = info.ID + "." + info.Ext @@ -280,10 +275,6 @@ func fetchFileCurl(ctx *Context, res *Result, uri *url.URL) (err error) { ctx.dbglog.Printf("converter: loudness correction = %.2f dB", ctx.LoudnessCorr) ctx.SourceFile = cbdata.filename - if ctx.SourceFilePolicy == Auto { - ctx.DeleteSourceFile = true - ctx.DeleteSourceDir = true - } return } @@ -349,13 +340,8 @@ func fetchFileArchiv(ctx *Context, res *Result, uri *url.URL) (err error) { easy.Setopt(curl.OPT_SSH_PUBLIC_KEYFILE, fmt.Sprintf("%s/.ssh/id_rsa.pub", u.HomeDir)) easy.Setopt(curl.OPT_SSH_PRIVATE_KEYFILE, fmt.Sprintf("%s/.ssh/id_rsa", u.HomeDir)) - var destpath string - if destpath, err = ioutil.TempDir(ctx.conf.TempDir, "rhimportd-"); err != nil { - return - } - cbdata := &fetcherCurlCBData{ctx: ctx, res: res} - cbdata.filename = fmt.Sprintf("%s/%s", destpath, srcfile) + cbdata.filename = filepath.Join(ctx.WorkDir, srcfile) easy.Setopt(curl.OPT_WRITEFUNCTION, curlWriteCallback) easy.Setopt(curl.OPT_WRITEDATA, cbdata) @@ -406,11 +392,6 @@ func fetchFileArchiv(ctx *Context, res *Result, uri *url.URL) (err error) { ctx.dbglog.Printf("converter: loudness correction = %.2f dB", ctx.LoudnessCorr) ctx.SourceFile = cbdata.filename - if ctx.SourceFilePolicy == Auto { - ctx.DeleteSourceFile = true - ctx.DeleteSourceDir = true - } - return } @@ -423,15 +404,11 @@ func fetchFileTmp(ctx *Context, res *Result, uri *url.URL) (err error) { } func fetchFileDirConvert(ctx *Context, res *Result, origSrc *os.File, sizeTotal int64) (err error) { - basepath, err := ioutil.TempDir(ctx.conf.TempDir, "rhimportd-") - if err != nil { - return err - } origDir, origFile := path.Split(ctx.SourceFile) ctx.OrigFilename = ctx.SourceFile var conv fetchConverter - if conv, ctx.SourceFile, err = newFetchConverter(ctx, filepath.Join(basepath, origFile)); err != nil { + if conv, ctx.SourceFile, err = newFetchConverter(ctx, filepath.Join(ctx.WorkDir, origFile)); err != nil { ctx.stdlog.Printf("Unable to create converter for file %s: %s", origDir+origFile, err) return } @@ -485,25 +462,6 @@ func fetchFileDirConvert(ctx *Context, res *Result, origSrc *os.File, sizeTotal if err != nil { return err } - - switch ctx.SourceFilePolicy { - case Auto: - ctx.DeleteSourceFile = true - ctx.DeleteSourceDir = true - case Keep: - ctx.DeleteSourceFile = false - ctx.DeleteSourceDir = false - case Delete: - ctx.DeleteSourceDir = true - ctx.DeleteSourceFile = true - os.Remove(origDir + origFile) - case DeleteWithDir: - ctx.DeleteSourceDir = true - ctx.DeleteSourceFile = true - os.Remove(origDir + origFile) - os.Remove(origDir) - } - return } @@ -543,11 +501,6 @@ func fetchFileDir(ctx *Context, res *Result, uri *url.URL, dir string, convert b if err = fetchFileDirConvert(ctx, res, src, size); err != nil { return } - } else { - if ctx.SourceFilePolicy == Auto { - ctx.DeleteSourceFile = false - ctx.DeleteSourceDir = false - } } ctx.reportProgress(1, "fetching", float64(size), float64(size)) return @@ -662,12 +615,7 @@ func fetchFileAttachment(ctx *Context, res *Result, uri *url.URL) error { return nil } - basepath, err := ioutil.TempDir(ctx.conf.TempDir, "rhimportd-") - if err != nil { - return err - } - - ctx.SourceFile = filepath.Join(basepath, path.Clean("/"+uri.Path)) + ctx.SourceFile = filepath.Join(ctx.WorkDir, path.Clean("/"+uri.Path)) var conv fetchConverter ctx.OrigFilename = ctx.SourceFile @@ -698,11 +646,6 @@ func fetchFileAttachment(ctx *Context, res *Result, uri *url.URL) error { return fmt.Errorf("converter error: %v; converter output: %s", convErr, convOut) } ctx.dbglog.Printf("converter: loudness correction = %.2f dB", ctx.LoudnessCorr) - - if ctx.SourceFilePolicy == Auto { - ctx.DeleteSourceFile = true - ctx.DeleteSourceDir = true - } return nil } @@ -763,6 +706,8 @@ func checkPassword(ctx *Context, res *Result) (err error) { func FetchFile(ctx *Context) (res *Result, err error) { res = &Result{ResponseCode: http.StatusOK} + ctx.stdlog.Println("FetchFile: called for '%s'", ctx.SourceUri) + var uri *url.URL if uri, err = url.Parse(ctx.SourceUri); err != nil { res.ResponseCode = http.StatusBadRequest @@ -783,17 +728,5 @@ func FetchFile(ctx *Context) (res *Result, err error) { res.ErrorString = fmt.Sprintf("No fetcher for uri scheme '%s' found.", uri.Scheme) return } - - switch ctx.SourceFilePolicy { - case Keep: - ctx.DeleteSourceFile = false - ctx.DeleteSourceDir = false - case DeleteWithDir: - ctx.DeleteSourceDir = true - fallthrough - case Delete: - ctx.DeleteSourceFile = true - } - return } |