mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 14:12:26 -05: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…
	
	Add table
		Add a link
		
	
		Reference in a new issue