mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 00:11:04 +00:00 
			
		
		
		
	[GITEA] convert feed items' titles to plain text
Refs: https://codeberg.org/forgejo/forgejo/pulls/1595 (cherry picked from commit35b962e631) (cherry picked from commit1004e35b84) (cherry picked from commitaf51dd594d) (cherry picked from commitef10fae296) (cherry picked from commitff8027ed1b) (cherry picked from commit2540ff52ef) (cherry picked from commit57b4d775e1) (cherry picked from commitc388aba9b5) (cherry picked from commit7a3b605c11) (cherry picked from commitcc02354d0a) (cherry picked from commite11c5ce82a) (cherry picked from commitd1e7798bb2) (cherry picked from commit1813af7391) (cherry picked from commit0d55a88945) (cherry picked from commitbd9ac9ac6f) (cherry picked from commit3794698320)
This commit is contained in:
		
					parent
					
						
							
								99866d8045
							
						
					
				
			
			
				commit
				
					
						0f22c4be84
					
				
			
		
					 2 changed files with 49 additions and 1 deletions
				
			
		| 
						 | 
					@ -21,6 +21,7 @@ import (
 | 
				
			||||||
	"code.gitea.io/gitea/modules/util"
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/gorilla/feeds"
 | 
						"github.com/gorilla/feeds"
 | 
				
			||||||
 | 
						"github.com/jaytaylor/html2text"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func toBranchLink(ctx *context.Context, act *activities_model.Action) string {
 | 
					func toBranchLink(ctx *context.Context, act *activities_model.Action) string {
 | 
				
			||||||
| 
						 | 
					@ -240,8 +241,15 @@ func feedActionsToFeedItems(ctx *context.Context, actions activities_model.Actio
 | 
				
			||||||
			content = desc
 | 
								content = desc
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// It's a common practice for feed generators to use plain text titles.
 | 
				
			||||||
 | 
							// See https://codeberg.org/forgejo/forgejo/pulls/1595
 | 
				
			||||||
 | 
							plainTitle, err := html2text.FromString(title, html2text.Options{OmitLinks: true})
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		items = append(items, &feeds.Item{
 | 
							items = append(items, &feeds.Item{
 | 
				
			||||||
			Title:       title,
 | 
								Title:       plainTitle,
 | 
				
			||||||
			Link:        link,
 | 
								Link:        link,
 | 
				
			||||||
			Description: desc,
 | 
								Description: desc,
 | 
				
			||||||
			IsPermaLink: "false",
 | 
								IsPermaLink: "false",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										40
									
								
								tests/integration/api_feed_plain_text_titles_test.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								tests/integration/api_feed_plain_text_titles_test.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,40 @@
 | 
				
			||||||
 | 
					// Copyright 2023 The Forgejo Authors. All rights reserved.
 | 
				
			||||||
 | 
					// SPDX-License-Identifier: MIT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package integration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/tests"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/stretchr/testify/assert"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestFeedPlainTextTitles(t *testing.T) {
 | 
				
			||||||
 | 
						// This test verifies that items' titles in feeds are generated as plain text.
 | 
				
			||||||
 | 
						// See https://codeberg.org/forgejo/forgejo/pulls/1595
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						t.Run("Feed plain text titles", func(t *testing.T) {
 | 
				
			||||||
 | 
							t.Run("Atom", func(t *testing.T) {
 | 
				
			||||||
 | 
								defer tests.PrepareTestEnv(t)()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								req := NewRequest(t, "GET", "/user2/repo1.atom")
 | 
				
			||||||
 | 
								resp := MakeRequest(t, req, http.StatusOK)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								data := resp.Body.String()
 | 
				
			||||||
 | 
								assert.Contains(t, data, "<title>the_1-user.with.all.allowedChars closed issue user2/repo1#4</title>")
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							t.Run("RSS", func(t *testing.T) {
 | 
				
			||||||
 | 
								defer tests.PrepareTestEnv(t)()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								req := NewRequest(t, "GET", "/user2/repo1.rss")
 | 
				
			||||||
 | 
								resp := MakeRequest(t, req, http.StatusOK)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								data := resp.Body.String()
 | 
				
			||||||
 | 
								assert.Contains(t, data, "<title>the_1-user.with.all.allowedChars closed issue user2/repo1#4</title>")
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue