mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2024-12-04 01:59:29 +00:00
[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
|
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||||
instanceV1URLs:
|
instanceV1URLs:
|
||||||
properties:
|
properties:
|
||||||
streaming_api:
|
streaming:
|
||||||
description: Websockets address for status and notification streaming.
|
description: Websockets address for status and notification streaming.
|
||||||
example: wss://example.org
|
example: wss://example.org
|
||||||
type: string
|
type: string
|
||||||
x-go-name: StreamingAPI
|
x-go-name: Streaming
|
||||||
title: InstanceV1URLs models instance-relevant URLs for client application consumption.
|
title: InstanceV2URLs models instance-relevant URLs for client application consumption.
|
||||||
type: object
|
type: object
|
||||||
x-go-name: InstanceV1URLs
|
x-go-name: InstanceV2URLs
|
||||||
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
|
||||||
instanceV2:
|
instanceV2:
|
||||||
properties:
|
properties:
|
||||||
|
@ -4039,6 +4039,35 @@ paths:
|
||||||
summary: Get an array of statuses that the requesting account has favourited.
|
summary: Get an array of statuses that the requesting account has favourited.
|
||||||
tags:
|
tags:
|
||||||
- favourites
|
- 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:
|
/api/v1/follow_requests:
|
||||||
get:
|
get:
|
||||||
description: Accounts will be sorted in order of follow request date descending (newest first).
|
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/bookmarks"
|
||||||
"github.com/superseriousbusiness/gotosocial/internal/api/client/customemojis"
|
"github.com/superseriousbusiness/gotosocial/internal/api/client/customemojis"
|
||||||
"github.com/superseriousbusiness/gotosocial/internal/api/client/favourites"
|
"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"
|
filter "github.com/superseriousbusiness/gotosocial/internal/api/client/filters"
|
||||||
"github.com/superseriousbusiness/gotosocial/internal/api/client/followrequests"
|
"github.com/superseriousbusiness/gotosocial/internal/api/client/followrequests"
|
||||||
"github.com/superseriousbusiness/gotosocial/internal/api/client/instance"
|
"github.com/superseriousbusiness/gotosocial/internal/api/client/instance"
|
||||||
|
@ -58,6 +59,7 @@ type Client struct {
|
||||||
bookmarks *bookmarks.Module // api/v1/bookmarks
|
bookmarks *bookmarks.Module // api/v1/bookmarks
|
||||||
customEmojis *customemojis.Module // api/v1/custom_emojis
|
customEmojis *customemojis.Module // api/v1/custom_emojis
|
||||||
favourites *favourites.Module // api/v1/favourites
|
favourites *favourites.Module // api/v1/favourites
|
||||||
|
featuredTags *featuredtags.Module // api/v1/featured_tags
|
||||||
filters *filter.Module // api/v1/filters
|
filters *filter.Module // api/v1/filters
|
||||||
followRequests *followrequests.Module // api/v1/follow_requests
|
followRequests *followrequests.Module // api/v1/follow_requests
|
||||||
instance *instance.Module // api/v1/instance
|
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.bookmarks.Route(h)
|
||||||
c.customEmojis.Route(h)
|
c.customEmojis.Route(h)
|
||||||
c.favourites.Route(h)
|
c.favourites.Route(h)
|
||||||
|
c.featuredTags.Route(h)
|
||||||
c.filters.Route(h)
|
c.filters.Route(h)
|
||||||
c.followRequests.Route(h)
|
c.followRequests.Route(h)
|
||||||
c.instance.Route(h)
|
c.instance.Route(h)
|
||||||
|
@ -119,6 +122,7 @@ func NewClient(db db.DB, p processing.Processor) *Client {
|
||||||
bookmarks: bookmarks.New(p),
|
bookmarks: bookmarks.New(p),
|
||||||
customEmojis: customemojis.New(p),
|
customEmojis: customemojis.New(p),
|
||||||
favourites: favourites.New(p),
|
favourites: favourites.New(p),
|
||||||
|
featuredTags: featuredtags.New(p),
|
||||||
filters: filter.New(p),
|
filters: filter.New(p),
|
||||||
followRequests: followrequests.New(p),
|
followRequests: followrequests.New(p),
|
||||||
instance: instance.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