summaryrefslogtreecommitdiff
path: root/rhimport/fetcher.go
diff options
context:
space:
mode:
authorChristian Pointner <equinox@helsinki.at>2016-08-04 00:47:07 (GMT)
committerChristian Pointner <equinox@helsinki.at>2016-08-04 00:47:12 (GMT)
commit9d1a296bb18bd343f133326bd2eb4b2b3368bf65 (patch)
tree088a3723aff297157e7cd73e11ca4cea202f1b63 /rhimport/fetcher.go
parente3c391263a0bf57db8b7c1566a27de9cdc325647 (diff)
temporary work dir is now handled by session (no support for soure file policy for now)
Diffstat (limited to 'rhimport/fetcher.go')
-rw-r--r--rhimport/fetcher.go81
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
}