mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-03 18:02:26 -06:00 
			
		
		
		
	* reference logrus' global logger instead of passing and storing a logger reference everywhere * always directly use global logrus logger instead of referencing an instance * test suites should also directly use the global logrus logger * rename gin logging function to clarify that it's middleware * correct comments which erroneously referenced removed logger parameter * setting log level for tests now uses logrus' exported type instead of the string value, to guarantee error isn't possible
		
			
				
	
	
		
			92 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package admin
 | 
						|
 | 
						|
import (
 | 
						|
	"net/http"
 | 
						|
	"strconv"
 | 
						|
 | 
						|
	"github.com/gin-gonic/gin"
 | 
						|
	"github.com/sirupsen/logrus"
 | 
						|
	"github.com/superseriousbusiness/gotosocial/internal/oauth"
 | 
						|
)
 | 
						|
 | 
						|
// DomainBlocksGETHandler swagger:operation GET /api/v1/admin/domain_blocks domainBlocksGet
 | 
						|
//
 | 
						|
// View all domain blocks currently in place.
 | 
						|
//
 | 
						|
// ---
 | 
						|
// tags:
 | 
						|
// - admin
 | 
						|
//
 | 
						|
// produces:
 | 
						|
// - application/json
 | 
						|
//
 | 
						|
// parameters:
 | 
						|
// - name: export
 | 
						|
//   type: boolean
 | 
						|
//   description: |-
 | 
						|
//     If set to true, then each entry in the returned list of domain blocks will only consist of
 | 
						|
//     the fields 'domain' and 'public_comment'. This is perfect for when you want to save and share
 | 
						|
//     a list of all the domains you have blocked on your instance, so that someone else can easily import them,
 | 
						|
//     but you don't need them to see the database IDs of your blocks, or private comments etc.
 | 
						|
//   in: query
 | 
						|
//   required: false
 | 
						|
//
 | 
						|
// security:
 | 
						|
// - OAuth2 Bearer:
 | 
						|
//   - admin
 | 
						|
//
 | 
						|
// responses:
 | 
						|
//   '200':
 | 
						|
//     description: All domain blocks currently in place.
 | 
						|
//     schema:
 | 
						|
//       type: array
 | 
						|
//       items:
 | 
						|
//         "$ref": "#/definitions/domainBlock"
 | 
						|
//   '403':
 | 
						|
//      description: forbidden
 | 
						|
//   '400':
 | 
						|
//      description: bad request
 | 
						|
//   '404':
 | 
						|
//      description: not found
 | 
						|
func (m *Module) DomainBlocksGETHandler(c *gin.Context) {
 | 
						|
	l := logrus.WithFields(logrus.Fields{
 | 
						|
		"func":        "DomainBlocksGETHandler",
 | 
						|
		"request_uri": c.Request.RequestURI,
 | 
						|
		"user_agent":  c.Request.UserAgent(),
 | 
						|
		"origin_ip":   c.ClientIP(),
 | 
						|
	})
 | 
						|
 | 
						|
	// make sure we're authed with an admin account
 | 
						|
	authed, err := oauth.Authed(c, true, true, true, true)
 | 
						|
	if err != nil {
 | 
						|
		l.Debugf("couldn't auth: %s", err)
 | 
						|
		c.JSON(http.StatusForbidden, gin.H{"error": err.Error()})
 | 
						|
		return
 | 
						|
	}
 | 
						|
	if !authed.User.Admin {
 | 
						|
		l.Debugf("user %s not an admin", authed.User.ID)
 | 
						|
		c.JSON(http.StatusForbidden, gin.H{"error": "not an admin"})
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	export := false
 | 
						|
	exportString := c.Query(ExportQueryKey)
 | 
						|
	if exportString != "" {
 | 
						|
		i, err := strconv.ParseBool(exportString)
 | 
						|
		if err != nil {
 | 
						|
			l.Debugf("error parsing export string: %s", err)
 | 
						|
			c.JSON(http.StatusBadRequest, gin.H{"error": "couldn't parse export query param"})
 | 
						|
			return
 | 
						|
		}
 | 
						|
		export = i
 | 
						|
	}
 | 
						|
 | 
						|
	domainBlocks, err := m.processor.AdminDomainBlocksGet(c.Request.Context(), authed, export)
 | 
						|
	if err != nil {
 | 
						|
		l.Debugf("error getting domain blocks: %s", err)
 | 
						|
		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	c.JSON(http.StatusOK, domainBlocks)
 | 
						|
}
 |