53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package tuna
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
type TunaOutput struct {
|
|
client *http.Client
|
|
}
|
|
|
|
type TunaData struct {
|
|
CoverURL string `json:"cover_url"`
|
|
Title string `json:"title"`
|
|
Artists []string `json:"artists"`
|
|
Label string `json:"label"`
|
|
Status string `json:"status"`
|
|
Progress uint64 `json:"progress"`
|
|
Duration uint64 `json:"duration"`
|
|
}
|
|
|
|
func (d *TunaData) Equal(other *TunaData) bool {
|
|
result := fmt.Sprintf("%+v", d) == fmt.Sprintf("%+v", other)
|
|
log.Printf("%+v == %+v => %v", d, other, result)
|
|
return result
|
|
}
|
|
|
|
func NewTunaOutput() *TunaOutput {
|
|
return &TunaOutput{
|
|
client: &http.Client{
|
|
Timeout: time.Second * 2,
|
|
},
|
|
}
|
|
}
|
|
|
|
func (output *TunaOutput) Post(data *TunaData) (err error) {
|
|
body := new(bytes.Buffer)
|
|
json.NewEncoder(body).Encode(&struct {
|
|
Data *TunaData `json:"data"`
|
|
Hostname string `json:"hostname,omitempty"`
|
|
Date string `json:"date"`
|
|
}{
|
|
Data: data,
|
|
Date: time.Now().Format(time.RFC3339),
|
|
})
|
|
_, err = output.client.Post("http://localhost:1608", "application/json", body)
|
|
return
|
|
}
|