42 lines
856 B
Go
42 lines
856 B
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"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"`
|
|
Status string `json:"status"`
|
|
Progress float64 `json:"progress"`
|
|
Duration float64 `json:"duration"`
|
|
}
|
|
|
|
func NewTunaOutput() *TunaOutput {
|
|
return &TunaOutput{
|
|
client: http.DefaultClient,
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|