65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
package nodeinfo
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/writeas/go-webfinger"
|
|
"log"
|
|
"net/http"
|
|
)
|
|
|
|
// NodeInfoPath defines the default path of the nodeinfo handler.
|
|
const NodeInfoPath = "/.well-known/nodeinfo"
|
|
|
|
type discoverInfo struct {
|
|
Links []webfinger.Link `json:"links"`
|
|
}
|
|
|
|
func (s *Service) NodeInfoDiscover(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
|
|
|
|
i := discoverInfo{
|
|
Links: []webfinger.Link{
|
|
{
|
|
Rel: profile,
|
|
HRef: s.InfoURL,
|
|
},
|
|
},
|
|
}
|
|
|
|
body, err := json.Marshal(i)
|
|
if err != nil {
|
|
log.Printf("Unable to marshal nodeinfo discovery: %v", err)
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
w.WriteHeader(http.StatusOK)
|
|
|
|
_, err = w.Write(body)
|
|
if err != nil {
|
|
log.Printf("Unable to write body: %v", err)
|
|
return
|
|
}
|
|
}
|
|
|
|
func (s *Service) NodeInfo(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Content-Type", "application/json; profile="+profile+"#")
|
|
|
|
i := s.BuildInfo()
|
|
|
|
body, err := json.Marshal(i)
|
|
if err != nil {
|
|
log.Printf("Unable to marshal nodeinfo: %v", err)
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
w.WriteHeader(http.StatusOK)
|
|
|
|
_, err = w.Write(body)
|
|
if err != nil {
|
|
log.Printf("Unable to write body: %v", err)
|
|
return
|
|
}
|
|
}
|