diff options
author | Christian Pointner <equinox@helsinki.at> | 2016-06-30 11:46:23 (GMT) |
---|---|---|
committer | Christian Pointner <equinox@helsinki.at> | 2016-06-30 11:46:23 (GMT) |
commit | 8134f3159f30da5560a3d515f4da834eb06bf8dc (patch) | |
tree | 46216db45fb143be9a73339da97191ce2219ce34 /rhimport/converter.go | |
parent | 471c9224bd1952671179263ebce8a15656d474d1 (diff) |
make fetch converter configurable
Diffstat (limited to 'rhimport/converter.go')
-rw-r--r-- | rhimport/converter.go | 37 |
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 |