// // rhimportd // // The Radio Helsinki Rivendell Import Daemon // // // Copyright (C) 2015 Christian Pointner // // This file is part of rhimportd. // // rhimportd is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // rhimportd is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with rhimportd. If not, see . // package rhimport import ( // "bytes" "fmt" // "io" // "mime/multipart" // "net/http" // "os" ) type ImportContext struct { Conf *Config UserName string password string GroupName string Cart int Channels int NormalizationLevel int AutotrimLevel int UseMetaData bool SourceFile string DeleteSourceFile bool } func NewImportContext(conf *Config, user string, group string, cart int) *ImportContext { ctx := new(ImportContext) ctx.Conf = conf ctx.UserName = user ctx.GroupName = group ctx.Cart = cart ctx.Channels = 2 ctx.NormalizationLevel = 1200 ctx.AutotrimLevel = 0 ctx.UseMetaData = false ctx.SourceFile = "" ctx.DeleteSourceFile = false return ctx } func (ctx *ImportContext) getPassword(cached bool) (err error) { req := getPasswordRequest{} req.username = ctx.UserName req.cached = cached req.response = make(chan getPasswordResult) ctx.Conf.getPasswordChan <- req res := <-req.response if res.err != nil { err = res.err return } ctx.password = res.password return } // func import_audio(url, file string) (err error) { // var b bytes.Buffer // w := multipart.NewWriter(&b) // if err = w.WriteField("COMMAND", "2"); err != nil { // return // } // if err = w.WriteField("LOGIN_NAME", ""); err != nil { // return // } // if err = w.WriteField("PASSWORD", ""); err != nil { // return // } // f, err := os.Open(file) // if err != nil { // return // } // fw, err := w.CreateFormFile("FILENAME", file) // if err != nil { // return // } // if _, err = io.Copy(fw, f); err != nil { // return // } // f.Close() // w.Close() // req, err := http.NewRequest("POST", url, &b) // if err != nil { // return // } // req.Header.Set("Content-Type", w.FormDataContentType()) // client := &http.Client{} // res, err := client.Do(req) // if err != nil { // return // } // if res.StatusCode != http.StatusOK { // err = fmt.Errorf("bad status: %s", res.Status) // } // return // } func ImportFile(ctx *ImportContext) (err error) { rhl.Println("ImportFile called for", ctx.SourceFile) if err = ctx.getPassword(true); err != nil { return } rhdl.Println("credentials:", ctx.UserName, "/", ctx.password) err = fmt.Errorf("%+v", ctx) return }