summaryrefslogtreecommitdiff
path: root/internal/api/s2s/nodeinfo/nodeinfoget.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/api/s2s/nodeinfo/nodeinfoget.go')
-rw-r--r--internal/api/s2s/nodeinfo/nodeinfoget.go33
1 files changed, 30 insertions, 3 deletions
diff --git a/internal/api/s2s/nodeinfo/nodeinfoget.go b/internal/api/s2s/nodeinfo/nodeinfoget.go
index 547aa2cf9..61247b1df 100644
--- a/internal/api/s2s/nodeinfo/nodeinfoget.go
+++ b/internal/api/s2s/nodeinfo/nodeinfoget.go
@@ -19,20 +19,42 @@
package nodeinfo
import (
+ "encoding/json"
"net/http"
"github.com/gin-gonic/gin"
"github.com/sirupsen/logrus"
+ "github.com/superseriousbusiness/gotosocial/internal/api"
)
-// NodeInfoGETHandler returns a compliant nodeinfo response to node info queries.
-// See: https://nodeinfo.diaspora.software/
+// NodeInfoGETHandler swagger:operation GET /nodeinfo/2.0 nodeInfoGet
+//
+// Returns a compliant nodeinfo response to node info queries.
+//
+// See: https://nodeinfo.diaspora.software/schema.html
+//
+// ---
+// tags:
+// - nodeinfo
+//
+// produces:
+// - application/json; profile="http://nodeinfo.diaspora.software/ns/schema/2.0#"
+//
+// responses:
+// '200':
+// schema:
+// "$ref": "#/definitions/nodeinfo"
func (m *Module) NodeInfoGETHandler(c *gin.Context) {
l := logrus.WithFields(logrus.Fields{
"func": "NodeInfoGETHandler",
"user-agent": c.Request.UserAgent(),
})
+ if _, err := api.NegotiateAccept(c, api.JSONAcceptHeaders...); err != nil {
+ c.JSON(http.StatusNotAcceptable, gin.H{"error": err.Error()})
+ return
+ }
+
ni, err := m.processor.GetNodeInfo(c.Request.Context(), c.Request)
if err != nil {
l.Debugf("error with get node info request: %s", err)
@@ -40,5 +62,10 @@ func (m *Module) NodeInfoGETHandler(c *gin.Context) {
return
}
- c.JSON(http.StatusOK, ni)
+ b, jsonErr := json.Marshal(ni)
+ if jsonErr != nil {
+ c.JSON(http.StatusInternalServerError, gin.H{"error": jsonErr.Error()})
+ }
+
+ c.Data(http.StatusOK, `application/json; profile="http://nodeinfo.diaspora.software/ns/schema/2.0#"`, b)
}