mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 17:52:25 -05:00 
			
		
		
		
	Serve outbox for Actor (#289)
		
	* add statusesvisible convenience function * add minID + onlyPublic to account statuses get * move swagger collection stuff to common * start working on Outbox GETting * move functions into federationProcessor * outboxToASCollection * add statusesvisible convenience function * add minID + onlyPublic to account statuses get * move swagger collection stuff to common * start working on Outbox GETting * move functions into federationProcessor * outboxToASCollection * bit more work on outbox paging * wrapNoteInCreate function * test + hook up the processor functions * don't do prev + next links on empty reply * test get outbox through api * don't fail on no status entries * add outbox implementation doc * typo
This commit is contained in:
		
					parent
					
						
							
								26a95ad27d
							
						
					
				
			
			
				commit
				
					
						4b1d9d3780
					
				
			
		
					 38 changed files with 1851 additions and 470 deletions
				
			
		
							
								
								
									
										64
									
								
								internal/processing/federation/getwebfinger.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								internal/processing/federation/getwebfinger.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,64 @@ | |||
| /* | ||||
|    GoToSocial | ||||
|    Copyright (C) 2021 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 federation | ||||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 
 | ||||
| 	apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model" | ||||
| 	"github.com/superseriousbusiness/gotosocial/internal/gtserror" | ||||
| ) | ||||
| 
 | ||||
| const ( | ||||
| 	webfingerProfilePage            = "http://webfinger.net/rel/profile-page" | ||||
| 	webFingerProfilePageContentType = "text/html" | ||||
| 	webfingerSelf                   = "self" | ||||
| 	webFingerSelfContentType        = "application/activity+json" | ||||
| 	webfingerAccount                = "acct" | ||||
| ) | ||||
| 
 | ||||
| func (p *processor) GetWebfingerAccount(ctx context.Context, requestedUsername string) (*apimodel.WellKnownResponse, gtserror.WithCode) { | ||||
| 	// get the account the request is referring to | ||||
| 	requestedAccount, err := p.db.GetLocalAccountByUsername(ctx, requestedUsername) | ||||
| 	if err != nil { | ||||
| 		return nil, gtserror.NewErrorNotFound(fmt.Errorf("database error getting account with username %s: %s", requestedUsername, err)) | ||||
| 	} | ||||
| 
 | ||||
| 	// return the webfinger representation | ||||
| 	return &apimodel.WellKnownResponse{ | ||||
| 		Subject: fmt.Sprintf("%s:%s@%s", webfingerAccount, requestedAccount.Username, p.config.AccountDomain), | ||||
| 		Aliases: []string{ | ||||
| 			requestedAccount.URI, | ||||
| 			requestedAccount.URL, | ||||
| 		}, | ||||
| 		Links: []apimodel.Link{ | ||||
| 			{ | ||||
| 				Rel:  webfingerProfilePage, | ||||
| 				Type: webFingerProfilePageContentType, | ||||
| 				Href: requestedAccount.URL, | ||||
| 			}, | ||||
| 			{ | ||||
| 				Rel:  webfingerSelf, | ||||
| 				Type: webFingerSelfContentType, | ||||
| 				Href: requestedAccount.URI, | ||||
| 			}, | ||||
| 		}, | ||||
| 	}, nil | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue