summaryrefslogtreecommitdiff
path: root/rhimport/converter.go
diff options
context:
space:
mode:
authorChristian Pointner <equinox@helsinki.at>2016-06-30 11:46:23 (GMT)
committerChristian Pointner <equinox@helsinki.at>2016-06-30 11:46:23 (GMT)
commit8134f3159f30da5560a3d515f4da834eb06bf8dc (patch)
tree46216db45fb143be9a73339da97191ce2219ce34 /rhimport/converter.go
parent471c9224bd1952671179263ebce8a15656d474d1 (diff)
make fetch converter configurable
Diffstat (limited to 'rhimport/converter.go')
-rw-r--r--rhimport/converter.go37
1 files changed, 24 insertions, 13 deletions
diff --git a/rhimport/converter.go b/rhimport/converter.go
index 4b68faa..418d27b 100644
--- a/rhimport/converter.go
+++ b/rhimport/converter.go
@@ -25,6 +25,7 @@
package rhimport
import (
+ "errors"
"io"
"os"
"os/exec"
@@ -32,7 +33,7 @@ import (
"strings"
)
-type Converter interface {
+type FetchConverter interface {
io.WriteCloser
GetResult() (result string, err error)
}
@@ -42,31 +43,41 @@ type ConverterResult struct {
err error
}
+func NewFetchConverter(convType, filename string) (FetchConverter, string, error) {
+ switch convType {
+ case "null":
+ return NewNullFetchConverter(filename)
+ case "ffmpeg":
+ return NewFFMpegFetchConverter(filename)
+ }
+ return nil, "", errors.New("unknown fetch converter type: " + convType)
+}
+
//
// NUll Converter aka File Writer
//
-type NullConverter struct {
+type NullFetchConverter struct {
file *os.File
}
-func NewNullConverter(filename string) (n *NullConverter, newFilename string, err error) {
- n = &NullConverter{}
+func NewNullFetchConverter(filename string) (n *NullFetchConverter, newFilename string, err error) {
+ n = &NullFetchConverter{}
rhl.Printf("null-converter: opening file '%s'", filename)
newFilename = filename
n.file, err = os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_EXCL, 0600)
return
}
-func (c *NullConverter) Write(p []byte) (n int, err error) {
+func (c *NullFetchConverter) Write(p []byte) (n int, err error) {
return c.file.Write(p)
}
-func (c *NullConverter) Close() (err error) {
+func (c *NullFetchConverter) Close() (err error) {
return c.file.Close()
}
-func (c *NullConverter) GetResult() (result string, err error) {
+func (c *NullFetchConverter) GetResult() (result string, err error) {
return "", nil
}
@@ -74,14 +85,14 @@ func (c *NullConverter) GetResult() (result string, err error) {
// FFMpeg Converter: converts all files into flac
//
-type FFMpegConverter struct {
+type FFMpegFetchConverter struct {
cmd *exec.Cmd
pipe io.WriteCloser
result chan ConverterResult
}
-func NewFFMpegConverter(filename string) (ff *FFMpegConverter, filenameFlac string, err error) {
- ff = &FFMpegConverter{}
+func NewFFMpegFetchConverter(filename string) (ff *FFMpegFetchConverter, filenameFlac string, err error) {
+ ff = &FFMpegFetchConverter{}
ext := filepath.Ext(filename)
filenameFlac = strings.TrimSuffix(filename, ext) + ".flac"
rhl.Printf("ffmpeg-converter: starting ffmpeg for file '%s' (had extension: '%s')", filenameFlac, ext)
@@ -98,15 +109,15 @@ func NewFFMpegConverter(filename string) (ff *FFMpegConverter, filenameFlac stri
return
}
-func (ff *FFMpegConverter) Write(p []byte) (n int, err error) {
+func (ff *FFMpegFetchConverter) Write(p []byte) (n int, err error) {
return ff.pipe.Write(p)
}
-func (ff *FFMpegConverter) Close() (err error) {
+func (ff *FFMpegFetchConverter) Close() (err error) {
return ff.pipe.Close()
}
-func (ff *FFMpegConverter) GetResult() (result string, err error) {
+func (ff *FFMpegFetchConverter) GetResult() (result string, err error) {
if ff.result != nil {
r := <-ff.result
return r.output, r.err