diff options
| author | 2023-01-02 13:10:50 +0100 | |
|---|---|---|
| committer | 2023-01-02 12:10:50 +0000 | |
| commit | 941893a774c83802afdc4cc76e1d30c59b6c5585 (patch) | |
| tree | 6e7296146dedfeac8e83655157270f41e190724b /internal/api/client/instance | |
| parent | [chore]: Bump github.com/abema/go-mp4 from 0.8.0 to 0.9.0 (#1287) (diff) | |
| download | gotosocial-941893a774c83802afdc4cc76e1d30c59b6c5585.tar.xz | |
[chore] The Big Middleware and API Refactor (tm) (#1250)
* interim commit: start refactoring middlewares into package under router
* another interim commit, this is becoming a big job
* another fucking massive interim commit
* refactor bookmarks to new style
* ambassador, wiz zeze commits you are spoiling uz
* she compiles, we're getting there
* we're just normal men; we're just innocent men
* apiutil
* whoopsie
* i'm glad noone reads commit msgs haha :blob_sweat:
* use that weirdo go-bytesize library for maxMultipartMemory
* fix media module paths
Diffstat (limited to 'internal/api/client/instance')
| -rw-r--r-- | internal/api/client/instance/instance.go | 21 | ||||
| -rw-r--r-- | internal/api/client/instance/instance_test.go | 2 | ||||
| -rw-r--r-- | internal/api/client/instance/instanceget.go | 8 | ||||
| -rw-r--r-- | internal/api/client/instance/instancepatch.go | 22 | ||||
| -rw-r--r-- | internal/api/client/instance/instancepeersget.go | 12 | 
5 files changed, 30 insertions, 35 deletions
diff --git a/internal/api/client/instance/instance.go b/internal/api/client/instance/instance.go index 16ff7c9f9..101e8cea4 100644 --- a/internal/api/client/instance/instance.go +++ b/internal/api/client/instance/instance.go @@ -21,36 +21,31 @@ package instance  import (  	"net/http" -	"github.com/superseriousbusiness/gotosocial/internal/api" +	"github.com/gin-gonic/gin"  	"github.com/superseriousbusiness/gotosocial/internal/processing" -	"github.com/superseriousbusiness/gotosocial/internal/router"  )  const ( -	// InstanceInformationPath is for serving instance info requests -	InstanceInformationPath = "api/v1/instance" +	// InstanceInformationPath is for serving instance info requests, minus the 'api' prefix. +	InstanceInformationPath = "/v1/instance"  	// InstancePeersPath is for serving instance peers requests.  	InstancePeersPath = InstanceInformationPath + "/peers"  	// PeersFilterKey is used to provide filters to /api/v1/instance/peers  	PeersFilterKey = "filter"  ) -// Module implements the ClientModule interface  type Module struct {  	processor processing.Processor  } -// New returns a new instance information module -func New(processor processing.Processor) api.ClientModule { +func New(processor processing.Processor) *Module {  	return &Module{  		processor: processor,  	}  } -// Route satisfies the ClientModule interface -func (m *Module) Route(s router.Router) error { -	s.AttachHandler(http.MethodGet, InstanceInformationPath, m.InstanceInformationGETHandler) -	s.AttachHandler(http.MethodPatch, InstanceInformationPath, m.InstanceUpdatePATCHHandler) -	s.AttachHandler(http.MethodGet, InstancePeersPath, m.InstancePeersGETHandler) -	return nil +func (m *Module) Route(attachHandler func(method string, path string, f ...gin.HandlerFunc) gin.IRoutes) { +	attachHandler(http.MethodGet, InstanceInformationPath, m.InstanceInformationGETHandler) +	attachHandler(http.MethodPatch, InstanceInformationPath, m.InstanceUpdatePATCHHandler) +	attachHandler(http.MethodGet, InstancePeersPath, m.InstancePeersGETHandler)  } diff --git a/internal/api/client/instance/instance_test.go b/internal/api/client/instance/instance_test.go index 26f29027d..33efbc847 100644 --- a/internal/api/client/instance/instance_test.go +++ b/internal/api/client/instance/instance_test.go @@ -88,7 +88,7 @@ func (suite *InstanceStandardTestSuite) SetupTest() {  	suite.sentEmails = make(map[string]string)  	suite.emailSender = testrig.NewEmailSender("../../../../web/template/", suite.sentEmails)  	suite.processor = testrig.NewTestProcessor(suite.db, suite.storage, suite.federator, suite.emailSender, suite.mediaManager, clientWorker, fedWorker) -	suite.instanceModule = instance.New(suite.processor).(*instance.Module) +	suite.instanceModule = instance.New(suite.processor)  	testrig.StandardDBSetup(suite.db, nil)  	testrig.StandardStorageSetup(suite.storage, "../../../../testrig/media")  } diff --git a/internal/api/client/instance/instanceget.go b/internal/api/client/instance/instanceget.go index bcedf398b..dfb8330ff 100644 --- a/internal/api/client/instance/instanceget.go +++ b/internal/api/client/instance/instanceget.go @@ -21,7 +21,7 @@ package instance  import (  	"net/http" -	"github.com/superseriousbusiness/gotosocial/internal/api" +	apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util"  	"github.com/superseriousbusiness/gotosocial/internal/config"  	"github.com/superseriousbusiness/gotosocial/internal/gtserror" @@ -49,14 +49,14 @@ import (  //		'500':  //			description: internal error  func (m *Module) InstanceInformationGETHandler(c *gin.Context) { -	if _, err := api.NegotiateAccept(c, api.JSONAcceptHeaders...); err != nil { -		api.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGet) +	if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { +		apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGet)  		return  	}  	instance, errWithCode := m.processor.InstanceGet(c.Request.Context(), config.GetHost())  	if errWithCode != nil { -		api.ErrorHandler(c, errWithCode, m.processor.InstanceGet) +		apiutil.ErrorHandler(c, errWithCode, m.processor.InstanceGet)  		return  	} diff --git a/internal/api/client/instance/instancepatch.go b/internal/api/client/instance/instancepatch.go index d4fa8ca5d..891ce8e38 100644 --- a/internal/api/client/instance/instancepatch.go +++ b/internal/api/client/instance/instancepatch.go @@ -24,8 +24,8 @@ import (  	"net/http"  	"github.com/gin-gonic/gin" -	"github.com/superseriousbusiness/gotosocial/internal/api" -	"github.com/superseriousbusiness/gotosocial/internal/api/model" +	apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model" +	apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util"  	"github.com/superseriousbusiness/gotosocial/internal/config"  	"github.com/superseriousbusiness/gotosocial/internal/gtserror"  	"github.com/superseriousbusiness/gotosocial/internal/oauth" @@ -130,42 +130,42 @@ import (  func (m *Module) InstanceUpdatePATCHHandler(c *gin.Context) {  	authed, err := oauth.Authed(c, true, true, true, true)  	if err != nil { -		api.ErrorHandler(c, gtserror.NewErrorUnauthorized(err, err.Error()), m.processor.InstanceGet) +		apiutil.ErrorHandler(c, gtserror.NewErrorUnauthorized(err, err.Error()), m.processor.InstanceGet)  		return  	} -	if _, err := api.NegotiateAccept(c, api.JSONAcceptHeaders...); err != nil { -		api.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGet) +	if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { +		apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGet)  		return  	}  	if !*authed.User.Admin {  		err := errors.New("user is not an admin so cannot update instance settings") -		api.ErrorHandler(c, gtserror.NewErrorForbidden(err, err.Error()), m.processor.InstanceGet) +		apiutil.ErrorHandler(c, gtserror.NewErrorForbidden(err, err.Error()), m.processor.InstanceGet)  		return  	} -	form := &model.InstanceSettingsUpdateRequest{} +	form := &apimodel.InstanceSettingsUpdateRequest{}  	if err := c.ShouldBind(&form); err != nil { -		api.ErrorHandler(c, gtserror.NewErrorBadRequest(err, err.Error()), m.processor.InstanceGet) +		apiutil.ErrorHandler(c, gtserror.NewErrorBadRequest(err, err.Error()), m.processor.InstanceGet)  		return  	}  	if err := validateInstanceUpdate(form); err != nil { -		api.ErrorHandler(c, gtserror.NewErrorBadRequest(err, err.Error()), m.processor.InstanceGet) +		apiutil.ErrorHandler(c, gtserror.NewErrorBadRequest(err, err.Error()), m.processor.InstanceGet)  		return  	}  	i, errWithCode := m.processor.InstancePatch(c.Request.Context(), form)  	if errWithCode != nil { -		api.ErrorHandler(c, errWithCode, m.processor.InstanceGet) +		apiutil.ErrorHandler(c, errWithCode, m.processor.InstanceGet)  		return  	}  	c.JSON(http.StatusOK, i)  } -func validateInstanceUpdate(form *model.InstanceSettingsUpdateRequest) error { +func validateInstanceUpdate(form *apimodel.InstanceSettingsUpdateRequest) error {  	if form.Title == nil &&  		form.ContactUsername == nil &&  		form.ContactEmail == nil && diff --git a/internal/api/client/instance/instancepeersget.go b/internal/api/client/instance/instancepeersget.go index f7d05acdc..de6e40e7c 100644 --- a/internal/api/client/instance/instancepeersget.go +++ b/internal/api/client/instance/instancepeersget.go @@ -23,7 +23,7 @@ import (  	"net/http"  	"strings" -	"github.com/superseriousbusiness/gotosocial/internal/api" +	apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util"  	"github.com/superseriousbusiness/gotosocial/internal/gtserror"  	"github.com/superseriousbusiness/gotosocial/internal/oauth" @@ -101,12 +101,12 @@ import (  func (m *Module) InstancePeersGETHandler(c *gin.Context) {  	authed, err := oauth.Authed(c, false, false, false, false)  	if err != nil { -		api.ErrorHandler(c, gtserror.NewErrorUnauthorized(err, err.Error()), m.processor.InstanceGet) +		apiutil.ErrorHandler(c, gtserror.NewErrorUnauthorized(err, err.Error()), m.processor.InstanceGet)  		return  	} -	if _, err := api.NegotiateAccept(c, api.JSONAcceptHeaders...); err != nil { -		api.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGet) +	if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil { +		apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGet)  		return  	} @@ -124,7 +124,7 @@ func (m *Module) InstancePeersGETHandler(c *gin.Context) {  				includeOpen = true  			default:  				err := fmt.Errorf("filter %s not recognized; accepted values are 'open', 'suspended'", trimmed) -				api.ErrorHandler(c, gtserror.NewErrorBadRequest(err, err.Error()), m.processor.InstanceGet) +				apiutil.ErrorHandler(c, gtserror.NewErrorBadRequest(err, err.Error()), m.processor.InstanceGet)  				return  			}  		} @@ -138,7 +138,7 @@ func (m *Module) InstancePeersGETHandler(c *gin.Context) {  	data, errWithCode := m.processor.InstancePeersGet(c.Request.Context(), authed, includeSuspended, includeOpen, flat)  	if errWithCode != nil { -		api.ErrorHandler(c, errWithCode, m.processor.InstanceGet) +		apiutil.ErrorHandler(c, errWithCode, m.processor.InstanceGet)  		return  	}  | 
