Skip to content
Snippets Groups Projects
Commit 8b3c57c2 authored by Christian Pointner's avatar Christian Pointner
Browse files

actually call importer functions from api

parent 47803aef
No related branches found
No related tags found
No related merge requests found
......@@ -70,6 +70,7 @@ func (api *API) CreateFileForGroup() http.Handler {
user := "anonymous" // TODO: get this from auth middleware
job, err := api.importer.CreateJob(group, file.ID, request.SourceURI, user, vars["ref-id"])
if err != nil {
// shall we remove the file here... thinking...
sendImporterError(w, err)
return
}
......
......@@ -26,17 +26,37 @@ package v1
import (
"net/http"
"github.com/gorilla/mux"
)
func (api *API) ListImportsOfGroup() http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
sendWebResponse(w, http.StatusNotImplemented, ErrorResponse{Error: "listing imports of group not yet implemented"})
vars := mux.Vars(r)
// TODO: implement pagination
jobs, err := api.importer.ListJobs(vars["group-id"])
if err != nil {
sendImporterError(w, err)
return
}
sendWebResponse(w, http.StatusOK, JobsListing{jobs})
})
}
func (api *API) ReadImportOfFile() http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
sendWebResponse(w, http.StatusNotImplemented, ErrorResponse{Error: "reading imports not yet implemented"})
vars := mux.Vars(r)
id, err := idFromString(vars["file-id"])
if err != nil {
sendWebResponse(w, http.StatusBadRequest, ErrorResponse{Error: "invalid file-id: " + err.Error()})
return
}
job, err := api.importer.GetJob(vars["group-id"], id)
if err != nil {
sendImporterError(w, err)
return
}
sendWebResponse(w, http.StatusOK, job)
})
}
......@@ -48,6 +68,18 @@ func (api *API) UploadFile() http.Handler {
func (api *API) CancelImportOfFile() http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
sendWebResponse(w, http.StatusNotImplemented, ErrorResponse{Error: "canceling imports not yet implemented"})
vars := mux.Vars(r)
id, err := idFromString(vars["file-id"])
if err != nil {
sendWebResponse(w, http.StatusBadRequest, ErrorResponse{Error: "invalid file-id: " + err.Error()})
return
}
job, err := api.importer.GetJob(vars["group-id"], id)
if err != nil {
sendImporterError(w, err)
return
}
job.Cancel()
sendWebResponse(w, http.StatusNoContent, nil)
})
}
......@@ -25,6 +25,7 @@
package v1
import (
"gitlab.servus.at/autoradio/tank/importer"
"gitlab.servus.at/autoradio/tank/store"
)
......@@ -48,7 +49,9 @@ type GroupsListing struct {
}
// Imports
// TODO: add me
type JobsListing struct {
Jobs importer.Jobs `json:"results"`
}
// Files
type FilesListing struct {
......@@ -65,6 +68,7 @@ type FileUsageListing struct {
} `json:"results"`
}
// Playlists
type PlaylistsListing struct {
Playlists store.Playlists `json:"results"`
}
......@@ -93,7 +93,7 @@ func uiIndexHtml() (*asset, error) {
return nil, err
}
 
info := bindataFileInfo{name: "ui/index.html", size: 10339, mode: os.FileMode(436), modTime: time.Unix(1530835704, 0)}
info := bindataFileInfo{name: "ui/index.html", size: 10339, mode: os.FileMode(436), modTime: time.Unix(1530831239, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
......@@ -113,7 +113,7 @@ func uiCssBootstrapRebootMinCss() (*asset, error) {
return nil, err
}
 
info := bindataFileInfo{name: "ui/css/bootstrap-reboot.min.css", size: 3989, mode: os.FileMode(436), modTime: time.Unix(1530321195, 0)}
info := bindataFileInfo{name: "ui/css/bootstrap-reboot.min.css", size: 3989, mode: os.FileMode(420), modTime: time.Unix(1525033372, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
......@@ -133,7 +133,7 @@ func uiCssBootstrapRebootMinCssMap() (*asset, error) {
return nil, err
}
 
info := bindataFileInfo{name: "ui/css/bootstrap-reboot.min.css.map", size: 25857, mode: os.FileMode(420), modTime: time.Unix(1525065771, 0)}
info := bindataFileInfo{name: "ui/css/bootstrap-reboot.min.css.map", size: 25857, mode: os.FileMode(436), modTime: time.Unix(1530624697, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
......@@ -153,7 +153,7 @@ func uiCssBootstrapMinCss() (*asset, error) {
return nil, err
}
 
info := bindataFileInfo{name: "ui/css/bootstrap.min.css", size: 140930, mode: os.FileMode(436), modTime: time.Unix(1530321195, 0)}
info := bindataFileInfo{name: "ui/css/bootstrap.min.css", size: 140930, mode: os.FileMode(420), modTime: time.Unix(1525033370, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
......@@ -173,7 +173,7 @@ func uiCssBootstrapMinCssMap() (*asset, error) {
return nil, err
}
 
info := bindataFileInfo{name: "ui/css/bootstrap.min.css.map", size: 559636, mode: os.FileMode(420), modTime: time.Unix(1525065769, 0)}
info := bindataFileInfo{name: "ui/css/bootstrap.min.css.map", size: 559636, mode: os.FileMode(436), modTime: time.Unix(1530624697, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
......@@ -193,7 +193,7 @@ func uiCssMainCss() (*asset, error) {
return nil, err
}
 
info := bindataFileInfo{name: "ui/css/main.css", size: 232, mode: os.FileMode(436), modTime: time.Unix(1530321195, 0)}
info := bindataFileInfo{name: "ui/css/main.css", size: 232, mode: os.FileMode(436), modTime: time.Unix(1530314832, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
......@@ -213,7 +213,7 @@ func uiJsBootstrapBundleMinJs() (*asset, error) {
return nil, err
}
 
info := bindataFileInfo{name: "ui/js/bootstrap.bundle.min.js", size: 70682, mode: os.FileMode(436), modTime: time.Unix(1530321195, 0)}
info := bindataFileInfo{name: "ui/js/bootstrap.bundle.min.js", size: 70682, mode: os.FileMode(420), modTime: time.Unix(1530305287, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
......@@ -233,7 +233,7 @@ func uiJsBootstrapBundleMinJsMap() (*asset, error) {
return nil, err
}
 
info := bindataFileInfo{name: "ui/js/bootstrap.bundle.min.js.map", size: 292629, mode: os.FileMode(420), modTime: time.Unix(1525065777, 0)}
info := bindataFileInfo{name: "ui/js/bootstrap.bundle.min.js.map", size: 292629, mode: os.FileMode(436), modTime: time.Unix(1530624697, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
......@@ -253,7 +253,7 @@ func uiJsJqueryMinJs() (*asset, error) {
return nil, err
}
 
info := bindataFileInfo{name: "ui/js/jquery.min.js", size: 86927, mode: os.FileMode(436), modTime: time.Unix(1530321195, 0)}
info := bindataFileInfo{name: "ui/js/jquery.min.js", size: 86927, mode: os.FileMode(436), modTime: time.Unix(1516469204, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
......@@ -273,7 +273,7 @@ func uiJsMainJs() (*asset, error) {
return nil, err
}
 
info := bindataFileInfo{name: "ui/js/main.js", size: 14941, mode: os.FileMode(436), modTime: time.Unix(1530835704, 0)}
info := bindataFileInfo{name: "ui/js/main.js", size: 14941, mode: os.FileMode(436), modTime: time.Unix(1530831443, 0)}
a := &asset{bytes: bytes, info: info}
return a, nil
}
......
......@@ -52,13 +52,13 @@ type Importer struct {
func (im *Importer) CreateJob(group string, id uint64, src, user, refID string) (*Job, error) {
// TODO: implement this
// sanity check inputs:
// sanity checks:
// - parse src: valid URI?
// - does fileID exist and does it belong to group?
// - file.Source.Import.State == new?
//
// add job to inventory -> return existing job if it already exists
// job.Start() will enqueue the job
// don't enqueue the job: will be done by job.Start()
return nil, ErrNotImplemented
}
......@@ -67,16 +67,16 @@ func (im *Importer) GetJob(group string, id uint64) (*Job, error) {
return nil, ErrNotImplemented
}
func (im *Importer) ListJobs(group string) ([]*Job, error) {
func (im *Importer) ListJobs(group string) (Jobs, error) {
// TODO: pass this on to job inventory
return nil, ErrNotImplemented
}
// handle subscriptions to new jobs-of-group -> pass on to job inventory
func (im *Importer) deleteJob(group string, id uint64) ([]*Job, error) {
func (im *Importer) deleteJob(group string, id uint64) error {
// TODO: pass this on to job inventory
return nil, ErrNotImplemented
return ErrNotImplemented
}
func (im *Importer) runWorker(idx int) {
......
......@@ -42,6 +42,8 @@ type Job struct {
RefID string `json:"ref-id,omitempty"`
}
type Jobs []Jobs
func (job *Job) run() (err error) {
// TODO: update store.file: set import state to ImportRunning
......@@ -74,8 +76,8 @@ func (job *Job) Start(timeout time.Duration) {
} else {
job.ctx, job.Cancel = context.WithCancel(context.Background())
}
// TODO: enqueue job to importer.work
// TODO: update store.file: set import state to ImportPending
job.im.work <- job
}
func newJob(im *Importer, group string, id uint64, src url.URL, user, refID string) *Job {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment