2022-02-05 19:59:41 +00:00
|
|
|
package controllers
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
|
|
|
|
2022-02-06 12:06:19 +00:00
|
|
|
"git.jamesravey.me/ravenscroftj/indiescrobble/models"
|
2022-02-05 19:59:41 +00:00
|
|
|
"git.jamesravey.me/ravenscroftj/indiescrobble/scrobble"
|
2022-02-06 12:06:19 +00:00
|
|
|
"git.jamesravey.me/ravenscroftj/indiescrobble/services/micropub"
|
2022-02-05 19:59:41 +00:00
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
func Scrobble(c *gin.Context){
|
|
|
|
|
|
|
|
err := c.Request.ParseForm()
|
|
|
|
|
2022-02-06 12:06:19 +00:00
|
|
|
// this is an authed endpoint so 'user' must be set and if not panicking is fair
|
|
|
|
currentUser := c.MustGet("user").(*models.BaseUser)
|
|
|
|
|
2022-02-05 19:59:41 +00:00
|
|
|
if err != nil{
|
|
|
|
c.HTML(http.StatusBadRequest, "error.tmpl", gin.H{
|
|
|
|
"message": err,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: add validation of type
|
|
|
|
scrobbleType := c.Request.Form.Get("type")
|
|
|
|
|
2022-02-05 21:52:46 +00:00
|
|
|
searchEngine := scrobble.NewSearchProvider(scrobbleType)
|
|
|
|
|
|
|
|
var searchResults []scrobble.ScrobbleMetaRecord = nil
|
|
|
|
var item scrobble.ScrobbleMetaRecord = nil
|
|
|
|
|
|
|
|
query := c.Request.Form.Get("q")
|
|
|
|
itemID := c.Request.Form.Get("item")
|
|
|
|
|
|
|
|
if itemID != "" {
|
|
|
|
|
|
|
|
item, err = searchEngine.SearchProvider.GetItem(itemID)
|
|
|
|
|
|
|
|
if err != nil{
|
|
|
|
c.HTML(http.StatusBadRequest, "error.tmpl", gin.H{
|
|
|
|
"message": err,
|
|
|
|
})
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}else if query != "" {
|
|
|
|
var err error = nil
|
|
|
|
searchResults, err = searchEngine.SearchProvider.Search(query)
|
|
|
|
|
|
|
|
if err != nil{
|
|
|
|
c.HTML(http.StatusBadRequest, "error.tmpl", gin.H{
|
|
|
|
"message": err,
|
|
|
|
})
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-02-06 12:06:19 +00:00
|
|
|
|
2022-02-05 19:59:41 +00:00
|
|
|
c.HTML(http.StatusOK, "scrobble.tmpl", gin.H{
|
2022-02-06 12:06:19 +00:00
|
|
|
"user": currentUser,
|
2022-02-05 21:52:46 +00:00
|
|
|
"scrobbleType": scrobbleType,
|
|
|
|
"scrobblePlaceholder": scrobble.ScrobblePlaceholders[scrobbleType],
|
|
|
|
"scrobbleTypeName": scrobble.ScrobbleTypeNames[scrobbleType],
|
|
|
|
"searchEngine": searchEngine.SearchProvider.GetName(),
|
|
|
|
"searchResults": searchResults,
|
|
|
|
"item": item,
|
2022-02-05 19:59:41 +00:00
|
|
|
})
|
|
|
|
|
2022-02-06 12:06:19 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func PreviewScrobble(c *gin.Context){
|
|
|
|
|
|
|
|
err := c.Request.ParseForm()
|
|
|
|
|
|
|
|
// this is an authed endpoint so 'user' must be set and if not panicking is fair
|
|
|
|
currentUser := c.MustGet("user").(*models.BaseUser)
|
|
|
|
|
|
|
|
if err != nil{
|
|
|
|
c.HTML(http.StatusBadRequest, "error.tmpl", gin.H{
|
|
|
|
"message": err,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
scrobbleType := c.Request.Form.Get("type")
|
|
|
|
|
|
|
|
searchEngine := scrobble.NewSearchProvider(scrobbleType)
|
|
|
|
|
|
|
|
itemID := c.Request.Form.Get("item")
|
|
|
|
|
|
|
|
item, err := searchEngine.SearchProvider.GetItem(itemID)
|
|
|
|
|
|
|
|
if err != nil{
|
|
|
|
c.HTML(http.StatusBadRequest, "error.tmpl", gin.H{
|
|
|
|
"message": err,
|
|
|
|
})
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
discovery := micropub.MicropubDiscoveryService{}
|
|
|
|
|
|
|
|
discovery.Discover(currentUser.Me, currentUser.Token )
|
|
|
|
|
|
|
|
c.HTML(http.StatusOK, "preview.tmpl", gin.H{
|
|
|
|
"user": currentUser,
|
|
|
|
"scrobbleType": scrobbleType,
|
|
|
|
"scrobbleTypeName": scrobble.ScrobbleTypeNames[scrobbleType],
|
|
|
|
"item": item,
|
|
|
|
"when": c.Request.Form.Get("when"),
|
|
|
|
"rating": c.Request.Form.Get("rating"),
|
|
|
|
"content": c.Request.Form.Get("content"),
|
|
|
|
})
|
|
|
|
|
2022-02-05 19:59:41 +00:00
|
|
|
}
|