bug en attente de reso
This commit is contained in:
parent
e0d753a927
commit
10c265141a
@ -16,7 +16,7 @@ import (
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
const baseURL = "https://api.debrid-link.com/"
|
||||
const baseURL = "https://debrid-link.com/api/v2/"
|
||||
|
||||
type Client struct {
|
||||
http *http.Client
|
||||
|
||||
@ -58,10 +58,10 @@ func RoutesProtected(r *mux.Router, bd *gorm.DB) {
|
||||
r.HandleFunc("/api/download/all", renders.HandleListJobsPartial(bd)).Methods("GET")
|
||||
r.HandleFunc("/downloads", renders.GoDownload2(bd))
|
||||
r.HandleFunc("/stream/{id}", download.HandleStreamPage()).Methods("GET")
|
||||
r.HandleFunc("/api/download/start/{id}", renders.HandleStartJob(bd)).Methods("POST")
|
||||
r.HandleFunc("/api/download/pause/{id}", renders.HandlePauseJob).Methods("POST")
|
||||
r.HandleFunc("/api/download/resume/{id}", renders.HandleResumeJob(bd)).Methods("POST")
|
||||
r.HandleFunc("/api/download/delete/{id}", renders.HandleDeleteJob).Methods("DELETE")
|
||||
r.HandleFunc("/api/download/start/{id}", renders.HandleStartJob(bd)).Methods("POST")
|
||||
r.HandleFunc("/api/download/pause/{id}", renders.HandlePauseJob).Methods("POST")
|
||||
r.HandleFunc("/api/download/resume/{id}", renders.HandleResumeJob(bd)).Methods("POST")
|
||||
r.HandleFunc("/api/download/delete/{id}", renders.HandleDeleteJob).Methods("DELETE")
|
||||
|
||||
|
||||
// API user
|
||||
|
||||
@ -305,9 +305,12 @@ func HandleAddJob(db *gorm.DB) http.HandlerFunc {
|
||||
PathID: uint(parsedID),
|
||||
Size: l.Size,
|
||||
Host: l.Host,
|
||||
CreatedAt: time.Now(),
|
||||
Progress: 0, // obligatoire si valeur attendue
|
||||
StreamURL: "", // vide par défaut
|
||||
}
|
||||
if err := download.RegisterJobWithDB(job, db); err != nil {
|
||||
log.Printf("[ERROR] Job non enregistré : %v\n", err)
|
||||
}
|
||||
download.RegisterJobWithDB(job,db) // => stocke en mémoire ou DB selon ton implémentation
|
||||
}
|
||||
|
||||
// Met à jour la vue partielle (tableau des jobs)
|
||||
@ -335,16 +338,30 @@ var (
|
||||
func HandleStartJob(db *gorm.DB) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
id := mux.Vars(r)["id"]
|
||||
log.Printf("[id] job id= "+id)
|
||||
|
||||
// 1. Récupérer depuis la map
|
||||
jobsMu.Lock()
|
||||
job, exists := jobs[id]
|
||||
jobsMu.Unlock()
|
||||
|
||||
// 2. Sinon fallback base de données
|
||||
if !exists {
|
||||
var j download.DownloadJob
|
||||
if err := db.First(&j, "id = ?", id).Error; err != nil {
|
||||
http.Error(w, "Job introuvable", http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
|
||||
// important : on copie vers un pointeur pour que la map pointe bien dessus
|
||||
jobCopy := j
|
||||
jobsMu.Lock()
|
||||
jobs[id] = &jobCopy
|
||||
job = &jobCopy
|
||||
jobsMu.Unlock()
|
||||
}
|
||||
|
||||
// 3. Setup client Debrid-Link
|
||||
client := debridlink.NewClient(db)
|
||||
account := download.GetFirstActiveAccount(client)
|
||||
if account == nil {
|
||||
@ -353,11 +370,13 @@ func HandleStartJob(db *gorm.DB) http.HandlerFunc {
|
||||
}
|
||||
client.SetAccount(account)
|
||||
|
||||
go download.StartDownload(job, job.Link, client, db)
|
||||
// 4. Lancer le téléchargement réel
|
||||
go download.StartDownload(job,job.Link,client, db)
|
||||
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
}
|
||||
|
||||
func HandlePauseJob(w http.ResponseWriter, r *http.Request) {
|
||||
id := mux.Vars(r)["id"]
|
||||
download.UpdateJobStatus(id, "paused", nil)
|
||||
@ -367,15 +386,27 @@ func HandleResumeJob(db *gorm.DB) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
id := mux.Vars(r)["id"]
|
||||
|
||||
// 1. Chercher en mémoire
|
||||
jobsMu.Lock()
|
||||
job, exists := jobs[id]
|
||||
jobsMu.Unlock()
|
||||
|
||||
// 2. Si absent, fallback DB
|
||||
if !exists {
|
||||
var j download.DownloadJob
|
||||
if err := db.First(&j, "id = ?", id).Error; err != nil {
|
||||
http.Error(w, "Job introuvable", http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
|
||||
jobCopy := j
|
||||
jobsMu.Lock()
|
||||
jobs[id] = &jobCopy
|
||||
job = &jobCopy
|
||||
jobsMu.Unlock()
|
||||
}
|
||||
|
||||
// 3. Initialiser le client Debrid-Link
|
||||
client := debridlink.NewClient(db)
|
||||
account := download.GetFirstActiveAccount(client)
|
||||
if account == nil {
|
||||
@ -384,10 +415,12 @@ func HandleResumeJob(db *gorm.DB) http.HandlerFunc {
|
||||
}
|
||||
client.SetAccount(account)
|
||||
|
||||
go download.StartDownload(job, job.Link, client, db)
|
||||
// 4. Redémarrer le téléchargement
|
||||
go download.StartDownload(job,job.Link,client,db)
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
}
|
||||
|
||||
func HandleDeleteJob(w http.ResponseWriter, r *http.Request) {
|
||||
id := mux.Vars(r)["id"]
|
||||
download.DeleteJob(id)
|
||||
|
||||
BIN
shelfly_db.db
BIN
shelfly_db.db
Binary file not shown.
@ -11,11 +11,11 @@
|
||||
<tbody>
|
||||
{{ range .jobs }}
|
||||
<tr class="border-b {{ if eq .Status "error" }}bg-red-100 text-red-800{{ end }}">
|
||||
<td class="px-2 py-1 text-sm">{{ .FileName }}</td>
|
||||
<td class="px-2 py-1 text-sm">{{ .Name }}</td>
|
||||
<td class="px-2 py-1 text-sm">{{ .Status }}</td>
|
||||
<td class="px-2 py-1 text-sm">{{ .Speed }}</td>
|
||||
<td class="px-2 py-1 text-sm">{{ .Progress }}</td>
|
||||
<td class="px-2 py-1 text-sm">
|
||||
{{ if eq .Status "added" }}
|
||||
{{ if eq .Status "waiting" }}
|
||||
<button hx-post="/api/download/start/{{ .ID }}" class="text-indigo-600">⬇ Télécharger</button>
|
||||
{{ end }}
|
||||
{{ if eq .Status "paused" }}
|
||||
|
||||
@ -1 +1 @@
|
||||
exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1
|
||||
exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1
|
||||
Loading…
Reference in New Issue
Block a user