forked from mirrors/gotosocial
[chore] stub /api/v1/featured_tags endpoint (#1420)
This commit is contained in:
parent
80c26d61f7
commit
7f3245738d
4 changed files with 157 additions and 4 deletions
|
@ -1373,14 +1373,14 @@ definitions:
|
|||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
instanceV1URLs:
|
||||
properties:
|
||||
streaming_api:
|
||||
streaming:
|
||||
description: Websockets address for status and notification streaming.
|
||||
example: wss://example.org
|
||||
type: string
|
||||
x-go-name: StreamingAPI
|
||||
title: InstanceV1URLs models instance-relevant URLs for client application consumption.
|
||||
x-go-name: Streaming
|
||||
title: InstanceV2URLs models instance-relevant URLs for client application consumption.
|
||||
type: object
|
||||
x-go-name: InstanceV1URLs
|
||||
x-go-name: InstanceV2URLs
|
||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||
instanceV2:
|
||||
properties:
|
||||
|
@ -4039,6 +4039,35 @@ paths:
|
|||
summary: Get an array of statuses that the requesting account has favourited.
|
||||
tags:
|
||||
- favourites
|
||||
/api/v1/featured_tags:
|
||||
get:
|
||||
description: 'THIS ENDPOINT IS CURRENTLY NOT FULLY IMPLEMENTED: it will always return an empty array.'
|
||||
operationId: getFeaturedTags
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: ""
|
||||
schema:
|
||||
items:
|
||||
type: object
|
||||
type: array
|
||||
"400":
|
||||
description: bad request
|
||||
"401":
|
||||
description: unauthorized
|
||||
"404":
|
||||
description: not found
|
||||
"406":
|
||||
description: not acceptable
|
||||
"500":
|
||||
description: internal server error
|
||||
security:
|
||||
- OAuth2 Bearer:
|
||||
- read:accounts
|
||||
summary: Get an array of all hashtags that you currently have featured on your profile.
|
||||
tags:
|
||||
- featured_tags
|
||||
/api/v1/follow_requests:
|
||||
get:
|
||||
description: Accounts will be sorted in order of follow request date descending (newest first).
|
||||
|
|
|
@ -29,6 +29,7 @@ import (
|
|||
"github.com/superseriousbusiness/gotosocial/internal/api/client/bookmarks"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/api/client/customemojis"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/api/client/favourites"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/api/client/featuredtags"
|
||||
filter "github.com/superseriousbusiness/gotosocial/internal/api/client/filters"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/api/client/followrequests"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/api/client/instance"
|
||||
|
@ -58,6 +59,7 @@ type Client struct {
|
|||
bookmarks *bookmarks.Module // api/v1/bookmarks
|
||||
customEmojis *customemojis.Module // api/v1/custom_emojis
|
||||
favourites *favourites.Module // api/v1/favourites
|
||||
featuredTags *featuredtags.Module // api/v1/featured_tags
|
||||
filters *filter.Module // api/v1/filters
|
||||
followRequests *followrequests.Module // api/v1/follow_requests
|
||||
instance *instance.Module // api/v1/instance
|
||||
|
@ -93,6 +95,7 @@ func (c *Client) Route(r router.Router, m ...gin.HandlerFunc) {
|
|||
c.bookmarks.Route(h)
|
||||
c.customEmojis.Route(h)
|
||||
c.favourites.Route(h)
|
||||
c.featuredTags.Route(h)
|
||||
c.filters.Route(h)
|
||||
c.followRequests.Route(h)
|
||||
c.instance.Route(h)
|
||||
|
@ -119,6 +122,7 @@ func NewClient(db db.DB, p processing.Processor) *Client {
|
|||
bookmarks: bookmarks.New(p),
|
||||
customEmojis: customemojis.New(p),
|
||||
favourites: favourites.New(p),
|
||||
featuredTags: featuredtags.New(p),
|
||||
filters: filter.New(p),
|
||||
followRequests: followrequests.New(p),
|
||||
instance: instance.New(p),
|
||||
|
|
44
internal/api/client/featuredtags/featuredtags.go
Normal file
44
internal/api/client/featuredtags/featuredtags.go
Normal file
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
GoToSocial
|
||||
Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package featuredtags
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/processing"
|
||||
)
|
||||
|
||||
const (
|
||||
BasePath = "/v1/featured_tags"
|
||||
)
|
||||
|
||||
type Module struct {
|
||||
processor processing.Processor
|
||||
}
|
||||
|
||||
func New(processor processing.Processor) *Module {
|
||||
return &Module{
|
||||
processor: processor,
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Module) Route(attachHandler func(method string, path string, f ...gin.HandlerFunc) gin.IRoutes) {
|
||||
attachHandler(http.MethodGet, BasePath, m.FeaturedTagsGETHandler)
|
||||
}
|
76
internal/api/client/featuredtags/get.go
Normal file
76
internal/api/client/featuredtags/get.go
Normal file
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
GoToSocial
|
||||
Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package featuredtags
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/oauth"
|
||||
)
|
||||
|
||||
// FeaturedTagsGETHandler swagger:operation GET /api/v1/featured_tags getFeaturedTags
|
||||
//
|
||||
// Get an array of all hashtags that you currently have featured on your profile.
|
||||
//
|
||||
// THIS ENDPOINT IS CURRENTLY NOT FULLY IMPLEMENTED: it will always return an empty array.
|
||||
//
|
||||
// ---
|
||||
// tags:
|
||||
// - featured_tags
|
||||
//
|
||||
// produces:
|
||||
// - application/json
|
||||
//
|
||||
// security:
|
||||
// - OAuth2 Bearer:
|
||||
// - read:accounts
|
||||
//
|
||||
// responses:
|
||||
// '200':
|
||||
// schema:
|
||||
// type: array
|
||||
// items:
|
||||
// type: object
|
||||
// '400':
|
||||
// description: bad request
|
||||
// '401':
|
||||
// description: unauthorized
|
||||
// '404':
|
||||
// description: not found
|
||||
// '406':
|
||||
// description: not acceptable
|
||||
// '500':
|
||||
// description: internal server error
|
||||
func (m *Module) FeaturedTagsGETHandler(c *gin.Context) {
|
||||
_, err := oauth.Authed(c, true, true, true, true)
|
||||
if err != nil {
|
||||
apiutil.ErrorHandler(c, gtserror.NewErrorUnauthorized(err, err.Error()), m.processor.InstanceGetV1)
|
||||
return
|
||||
}
|
||||
|
||||
if _, err := apiutil.NegotiateAccept(c, apiutil.JSONAcceptHeaders...); err != nil {
|
||||
apiutil.ErrorHandler(c, gtserror.NewErrorNotAcceptable(err, err.Error()), m.processor.InstanceGetV1)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, []interface{}{})
|
||||
}
|
Loading…
Reference in a new issue