diff --git a/server.go b/server.go
index 7143f1b..94a5b13 100644
--- a/server.go
+++ b/server.go
@@ -17,11 +17,8 @@ import (
)
var MyClient = &http.Client{}
-var MyResp = &RespBandcamp{}
-var SpotifyAPI = newTokenUser()
-//var SpotifyAPI = &TokenUser{}
var Session = session.New()
-var Errors string
+var Queue = make(map[string]*RespBandcamp)
/*
check artist and album
@@ -84,7 +81,7 @@ func testSpotifyPlaylist(token, tokentype, id string) error {
return nil
}
-func getAllTracksPlaylist(token, tokentype, id string, offset int) (SpotifyPlaylist, error) {
+func getAllTracksPlaylist(token, tokentype, id string, offset int) SpotifyPlaylist {
ret := SpotifyPlaylist{}
req, _ := http.NewRequest("GET",
"https://api.spotify.com/v1/playlists/"+id+"/tracks?offset="+strconv.FormatInt(int64(offset), 10),
@@ -99,38 +96,31 @@ func getAllTracksPlaylist(token, tokentype, id string, offset int) (SpotifyPlayl
defer res.Body.Close()
err := json.NewDecoder(res.Body).Decode(&playlist)
if err != nil {
- return ret, err
- fmt.Printf("error:", err)
+ log.Print(err.Error())
+ return ret
}
ret = *playlist
if ret.Total > offset {
- r, e := getAllTracksPlaylist(token, tokentype, id, offset + 100)
- if e != nil {
- return ret, e
- }
-
+ r := getAllTracksPlaylist(token, tokentype, id, offset + 100)
ret.Items = append(ret.Items, r.Items...)
}
- return ret, nil
+ return ret
}
/*
id de la playlist
*/
func getListPlaylist(id, token, tokentype string) {
-
- playlist, err := getAllTracksPlaylist(token, tokentype, id, 0)
- if err != nil {
- //fmt.Printf("error:", err.Error())
- log.Panic("error")
- }
+ playlist := getAllTracksPlaylist(token, tokentype, id, 0)
var find bool
var tmp string
+ var MyResp = &RespBandcamp{}
MyResp.Todo = len(playlist.Items)
MyResp.Done = 0
+ Queue[token] = MyResp
for i := 0; i < len(playlist.Items); i++ {
find, tmp = searchAlbumBandcamp(playlist.Items[i].Track.Album.Name,
@@ -182,23 +172,22 @@ func formHandler (c *fiber.Ctx) error {
log.Panic(e.Error())
}
-
- c.Set("Location", "/feudecamp.html")
+ c.Set("Location", "/feudecamp")
go getListPlaylist(id, token, tokentype)
return c.SendStatus(303)
}
func getNew(c *fiber.Ctx) error {
/* read session */
- c.JSON(MyResp)
- MyResp.Albums = nil
- MyResp.Artists = nil
- MyResp.Notfound = nil
+ sess, _ := Session.Get(c)
+
+ c.JSON(Queue[sess.Get("token").(string)])
return c.SendStatus(201)
}
func mytoken(c *fiber.Ctx) error {
- err := c.BodyParser(&SpotifyAPI)
+ tmp := newTokenUser()
+ err := c.BodyParser(&tmp)
if err != nil {
log.Panic(err.Error())
} else {
@@ -207,9 +196,9 @@ func mytoken(c *fiber.Ctx) error {
log.Panic(err.Error())
}
- sess.Set("token", SpotifyAPI.Token)
- sess.Set("expire", SpotifyAPI.ExpiresIn)
- sess.Set("tokentype", SpotifyAPI.TokenType)
+ sess.Set("token", tmp.Token)
+ sess.Set("expire", tmp.ExpiresIn)
+ sess.Set("tokentype", tmp.TokenType)
sess.Set("creation", time.Now().GoString())
err = sess.Save()
@@ -218,9 +207,6 @@ func mytoken(c *fiber.Ctx) error {
}
}
- //sess.Set("creation", time.Now())
-
-
return c.SendStatus(201)
}
@@ -240,17 +226,16 @@ func index(c *fiber.Ctx) error {
tmp = true
}
- if Errors == "" {
- //return c.Render("index", fiber.Map{"connected": !SpotifyAPI.CheckEmpty(),
- return c.Render("index", fiber.Map{"connected": tmp,
- "url": SpotifyURL})
- } else {
- e := Errors
- Errors = ""
- return c.Render("index", fiber.Map{"connected": tmp,
- "error": e,
- "url": SpotifyURL})
+ return c.Render("index", fiber.Map{"connected": tmp, "url": SpotifyURL})
+}
+
+func fdc(c *fiber.Ctx) error {
+ sess, _ := Session.Get(c)
+
+ if sess.Get("token") == nil {
+ panic("Vous n’êtes pas connecté.")
}
+ return c.Render("feudecamp", fiber.Map{})
}
func main() {
@@ -261,6 +246,7 @@ func main() {
app.Get("/", index)
app.Post("/", mytoken)
+ app.Get("/feudecamp", fdc)
app.Post("/feudecamp", getNew)
app.Post("/back", formHandler)
app.Get("/callback", spotifyCallback)
diff --git a/static/script.js b/static/script.js
index b56ca76..b14c5e8 100644
--- a/static/script.js
+++ b/static/script.js
@@ -28,6 +28,13 @@ async function addCell(id, elem) {
}
}
+async function cleanArray(id) {
+ var table = document.getElementById(id);
+ for (var i = table.rows.length - 1; i > 0; i--) {
+ table.deleteRow(i);
+ }
+}
+
async function refreshArray() {
const data = await fetch('/feudecamp', {method: 'POST'}).then(response => response.json());
if (data != null) {
@@ -35,18 +42,21 @@ async function refreshArray() {
document.getElementById("nb-total").textContent = data.todo;
if (data.albums != null) {
+ cleanArray("found");
for (const elem of data.albums) {
addCell("found", elem);
}
}
if (data.artists != null) {
+ cleanArray("artist-found");
for (const elem of data.artists) {
addCell("artist-found", elem);
}
}
if (data.notfound != null) {
+ cleanArray("notfound");
for (const elem of data.notfound) {
addCell("notfound", elem);
}