2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   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/>. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* /  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-30 13:12:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								package  processing  
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  (  
						 
					
						
							
								
									
										
										
										
											2021-05-15 11:58:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"context" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"net/http" 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"net/url" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-11-13 12:29:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"codeberg.org/gruf/go-store/kv" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"github.com/sirupsen/logrus" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									apimodel  "github.com/superseriousbusiness/gotosocial/internal/api/model" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/db" 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-31 15:46:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/email" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/federation" 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/gtserror" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/media" 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-31 15:59:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/messages" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/oauth" 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/processing/account" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/processing/admin" 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									federationProcessor  "github.com/superseriousbusiness/gotosocial/internal/processing/federation" 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mediaProcessor  "github.com/superseriousbusiness/gotosocial/internal/processing/media" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/processing/status" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/processing/streaming" 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-14 14:26:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/processing/user" 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/stream" 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/timeline" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/typeutils" 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-17 18:02:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/visibility" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Processor should be passed to api modules (see internal/apimodule/...). It is used for  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// passing messages back and forth from the client API and the federating interface, via channels.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// It also contains logic for filtering which messages should end up where.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// It is designed to be used asynchronously: the client API and the federating API should just be able to  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// fire messages into the processor and not wait for a reply before proceeding with other work. This allows  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// for clean distribution of messages without slowing down the client API and harming the user experience.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  Processor  interface  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Start starts the Processor, reading from its channels and passing messages back and forth. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Start ( ctx  context . Context )  error 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// Stop stops the processor cleanly, finishing handling any remaining messages before closing down. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Stop ( )  error 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-04 13:29:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// ProcessFromClientAPI processes one message coming from the clientAPI channel, and triggers appropriate side effects. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ProcessFromClientAPI ( ctx  context . Context ,  clientMsg  messages . FromClientAPI )  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ProcessFromFederator processes one message coming from the federator channel, and triggers appropriate side effects. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ProcessFromFederator ( ctx  context . Context ,  federatorMsg  messages . FromFederator )  error 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/ * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										CLIENT  API - FACING  PROCESSING  FUNCTIONS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										These  functions  are  intended  to  be  called  when  the  API  client  needs  an  immediate  ( ie . ,  synchronous )  reply 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										to  an  HTTP  request .  As  such ,  they  will  only  do  the  bare - minimum  of  work  necessary  to  give  a  properly 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										formed  reply .  For  more  intensive  ( and  time - consuming )  calls ,  where  you  don ' t  require  an  immediate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										response ,  pass  work  to  the  processor  using  a  channel  instead . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									* / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// AccountCreate processes the given form for creating a new account, returning an oauth token for that account if successful. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountCreate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . AccountCreateRequest )  ( * apimodel . Token ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// AccountGet processes the given request for account information. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountGet ( ctx  context . Context ,  authed  * oauth . Auth ,  targetAccountID  string )  ( * apimodel . Account ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// AccountUpdate processes the update of an account with the given form 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountUpdate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . UpdateCredentialsRequest )  ( * apimodel . Account ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-17 19:06:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AccountStatusesGet fetches a number of statuses (in time descending order) from the given account, filtered by visibility for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// the account given in authed. 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountStatusesGet ( ctx  context . Context ,  authed  * oauth . Auth ,  targetAccountID  string ,  limit  int ,  excludeReplies  bool ,  maxID  string ,  minID  string ,  pinned  bool ,  mediaOnly  bool ,  publicOnly  bool )  ( [ ] apimodel . Status ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-21 15:48:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AccountFollowersGet fetches a list of the target account's followers. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountFollowersGet ( ctx  context . Context ,  authed  * oauth . Auth ,  targetAccountID  string )  ( [ ] apimodel . Account ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-21 15:48:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AccountFollowingGet fetches a list of the accounts that target account is following. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountFollowingGet ( ctx  context . Context ,  authed  * oauth . Auth ,  targetAccountID  string )  ( [ ] apimodel . Account ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-21 15:48:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AccountRelationshipGet returns a relationship model describing the relationship of the targetAccount to the Authed account. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountRelationshipGet ( ctx  context . Context ,  authed  * oauth . Auth ,  targetAccountID  string )  ( * apimodel . Relationship ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-21 15:48:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AccountFollowCreate handles a follow request to an account, either remote or local. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountFollowCreate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . AccountFollowRequest )  ( * apimodel . Relationship ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-21 15:48:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AccountFollowRemove handles the removal of a follow/follow request to an account, either remote or local. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountFollowRemove ( ctx  context . Context ,  authed  * oauth . Auth ,  targetAccountID  string )  ( * apimodel . Relationship ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-11 16:22:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AccountBlockCreate handles the creation of a block from authed account to target account, either remote or local. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountBlockCreate ( ctx  context . Context ,  authed  * oauth . Auth ,  targetAccountID  string )  ( * apimodel . Relationship ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-11 16:22:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AccountBlockRemove handles the removal of a block from authed account to target account, either remote or local. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountBlockRemove ( ctx  context . Context ,  authed  * oauth . Auth ,  targetAccountID  string )  ( * apimodel . Relationship ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 14:06:06 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AdminEmojiCreate handles the creation of a new instance emoji by an admin, using the given form. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AdminEmojiCreate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . EmojiCreateRequest )  ( * apimodel . Emoji ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AdminDomainBlockCreate handles the creation of a new domain block by an admin, using the given form. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AdminDomainBlockCreate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . DomainBlockCreateRequest )  ( * apimodel . DomainBlock ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-06 13:29:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AdminDomainBlocksImport handles the import of multiple domain blocks by an admin, using the given form. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AdminDomainBlocksImport ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . DomainBlockCreateRequest )  ( [ ] * apimodel . DomainBlock ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AdminDomainBlocksGet returns a list of currently blocked domains. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AdminDomainBlocksGet ( ctx  context . Context ,  authed  * oauth . Auth ,  export  bool )  ( [ ] * apimodel . DomainBlock ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AdminDomainBlockGet returns one domain block, specified by ID. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AdminDomainBlockGet ( ctx  context . Context ,  authed  * oauth . Auth ,  id  string ,  export  bool )  ( * apimodel . DomainBlock ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AdminDomainBlockDelete deletes one domain block, specified by ID, returning the deleted domain block. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AdminDomainBlockDelete ( ctx  context . Context ,  authed  * oauth . Auth ,  id  string )  ( * apimodel . DomainBlock ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 14:06:06 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// AppCreate processes the creation of a new API application 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AppCreate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . ApplicationCreateRequest )  ( * apimodel . Application ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-11 16:22:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// BlocksGet returns a list of accounts blocked by the requesting account. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									BlocksGet ( ctx  context . Context ,  authed  * oauth . Auth ,  maxID  string ,  sinceID  string ,  limit  int )  ( * apimodel . BlocksResponse ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-11 16:22:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-10 16:29:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// FileGet handles the fetching of a media attachment file via the fileserver. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									FileGet ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . GetContentRequestForm )  ( * apimodel . Content ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-10 16:29:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-15 11:58:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// FollowRequestsGet handles the getting of the authed account's incoming follow requests 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									FollowRequestsGet ( ctx  context . Context ,  auth  * oauth . Auth )  ( [ ] apimodel . Account ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 13:27:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// FollowRequestAccept handles the acceptance of a follow request from the given account ID. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									FollowRequestAccept ( ctx  context . Context ,  auth  * oauth . Auth ,  accountID  string )  ( * apimodel . Relationship ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-16 13:27:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// FollowRequestReject handles the rejection of a follow request from the given account ID. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									FollowRequestReject ( ctx  context . Context ,  auth  * oauth . Auth ,  accountID  string )  ( * apimodel . Relationship ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-15 11:58:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 14:06:06 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// InstanceGet retrieves instance information for serving at api/v1/instance 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									InstanceGet ( ctx  context . Context ,  domain  string )  ( * apimodel . Instance ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-23 16:35:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// InstancePatch updates this instance according to the given form. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// It should already be ascertained that the requesting account is authenticated and an admin. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									InstancePatch ( ctx  context . Context ,  form  * apimodel . InstanceSettingsUpdateRequest )  ( * apimodel . Instance ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 14:06:06 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// MediaCreate handles the creation of a media attachment, using the given form. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									MediaCreate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . AttachmentRequest )  ( * apimodel . Attachment ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-10 16:29:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// MediaGet handles the GET of a media attachment with the given ID 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									MediaGet ( ctx  context . Context ,  authed  * oauth . Auth ,  attachmentID  string )  ( * apimodel . Attachment ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-10 16:29:05 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// MediaUpdate handles the PUT of a media attachment with the given ID and form 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									MediaUpdate ( ctx  context . Context ,  authed  * oauth . Auth ,  attachmentID  string ,  form  * apimodel . AttachmentUpdateRequest )  ( * apimodel . Attachment ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 14:06:06 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 16:06:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// NotificationsGet 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NotificationsGet ( ctx  context . Context ,  authed  * oauth . Auth ,  limit  int ,  maxID  string ,  sinceID  string )  ( [ ] * apimodel . Notification ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 16:06:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-29 19:36:54 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// SearchGet performs a search with the given params, resolving/dereferencing remotely as desired 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									SearchGet ( ctx  context . Context ,  authed  * oauth . Auth ,  searchQuery  * apimodel . SearchQuery )  ( * apimodel . SearchResult ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-29 19:36:54 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// StatusCreate processes the given form to create a new status, returning the api model representation of that status if it's OK. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusCreate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . AdvancedStatusCreateForm )  ( * apimodel . Status ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// StatusDelete processes the delete of a given status, returning the deleted status if the delete goes through. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusDelete ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( * apimodel . Status ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// StatusFave processes the faving of a given status, returning the updated status if the fave goes through. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusFave ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( * apimodel . Status ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 15:16:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// StatusBoost processes the boost/reblog of a given status, returning the newly-created boost if all is well. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusBoost ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( * apimodel . Status ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-21 15:56:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// StatusUnboost processes the unboost/unreblog of a given status, returning the status if all is well. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusUnboost ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( * apimodel . Status ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-31 17:36:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// StatusBoostedBy returns a slice of accounts that have boosted the given status, filtered according to privacy settings. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusBoostedBy ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( [ ] * apimodel . Account ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// StatusFavedBy returns a slice of accounts that have liked the given status, filtered according to privacy settings. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusFavedBy ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( [ ] * apimodel . Account ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// StatusGet gets the given status, taking account of privacy settings and blocks etc. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusGet ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( * apimodel . Status ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// StatusUnfave processes the unfaving of a given status, returning the updated status if the fave goes through. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusUnfave ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( * apimodel . Status ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-31 17:36:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// StatusGetContext returns the context (previous and following posts) from the given status ID 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusGetContext ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( * apimodel . Context ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-21 23:04:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// HomeTimelineGet returns statuses from the home timeline, with the given filters/parameters. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									HomeTimelineGet ( ctx  context . Context ,  authed  * oauth . Auth ,  maxID  string ,  sinceID  string ,  minID  string ,  limit  int ,  local  bool )  ( * apimodel . StatusTimelineResponse ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-31 17:36:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// PublicTimelineGet returns statuses from the public/local timeline, with the given filters/parameters. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PublicTimelineGet ( ctx  context . Context ,  authed  * oauth . Auth ,  maxID  string ,  sinceID  string ,  minID  string ,  limit  int ,  local  bool )  ( * apimodel . StatusTimelineResponse ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-09 18:32:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// FavedTimelineGet returns faved statuses, with the given filters/parameters. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									FavedTimelineGet ( ctx  context . Context ,  authed  * oauth . Auth ,  maxID  string ,  minID  string ,  limit  int )  ( * apimodel . StatusTimelineResponse ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-21 23:04:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-06-19 11:18:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AuthorizeStreamingRequest returns a gotosocial account in exchange for an access token, or an error if the given token is not valid. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AuthorizeStreamingRequest ( ctx  context . Context ,  accessToken  string )  ( * gtsmodel . Account ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-19 11:18:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// OpenStreamForAccount opens a new stream for the given account, with the given stream type. 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-01 18:29:25 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									OpenStreamForAccount ( ctx  context . Context ,  account  * gtsmodel . Account ,  streamType  string )  ( * stream . Stream ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-19 11:18:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-14 14:26:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// UserChangePassword changes the password for the given user, with the given form. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									UserChangePassword ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . PasswordChangeRequest )  gtserror . WithCode 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-31 15:46:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// UserConfirmEmail confirms an email address using the given token. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// The user belonging to the confirmed email is also returned. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									UserConfirmEmail ( ctx  context . Context ,  token  string )  ( * gtsmodel . User ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-14 14:26:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									/ * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										FEDERATION  API - FACING  PROCESSING  FUNCTIONS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										These  functions  are  intended  to  be  called  when  the  federating  client  needs  an  immediate  ( ie . ,  synchronous )  reply 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										to  an  HTTP  request .  As  such ,  they  will  only  do  the  bare - minimum  of  work  necessary  to  give  a  properly 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										formed  reply .  For  more  intensive  ( and  time - consuming )  calls ,  where  you  don ' t  require  an  immediate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										response ,  pass  work  to  the  processor  using  a  channel  instead . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									* / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// GetFediUser handles the getting of a fedi/activitypub representation of a user/account, performing appropriate authentication 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// before returning a JSON serializable interface to the caller. 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									GetFediUser ( ctx  context . Context ,  requestedUsername  string ,  requestURL  * url . URL )  ( interface { } ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-21 15:48:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// GetFediFollowers handles the getting of a fedi/activitypub representation of a user/account's followers, performing appropriate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// authentication before returning a JSON serializable interface to the caller. 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									GetFediFollowers ( ctx  context . Context ,  requestedUsername  string ,  requestURL  * url . URL )  ( interface { } ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-23 18:07:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// GetFediFollowing handles the getting of a fedi/activitypub representation of a user/account's following, performing appropriate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// authentication before returning a JSON serializable interface to the caller. 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									GetFediFollowing ( ctx  context . Context ,  requestedUsername  string ,  requestURL  * url . URL )  ( interface { } ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-21 15:48:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// GetFediStatus handles the getting of a fedi/activitypub representation of a particular status, performing appropriate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// authentication before returning a JSON serializable interface to the caller. 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									GetFediStatus ( ctx  context . Context ,  requestedUsername  string ,  requestedStatusID  string ,  requestURL  * url . URL )  ( interface { } ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-10 13:32:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// GetFediStatus handles the getting of a fedi/activitypub representation of replies to a status, performing appropriate 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// authentication before returning a JSON serializable interface to the caller. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									GetFediStatusReplies ( ctx  context . Context ,  requestedUsername  string ,  requestedStatusID  string ,  page  bool ,  onlyOtherAccounts  bool ,  minID  string ,  requestURL  * url . URL )  ( interface { } ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// GetFediOutbox returns the public outbox of the requested user, with the given parameters. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									GetFediOutbox ( ctx  context . Context ,  requestedUsername  string ,  page  bool ,  maxID  string ,  minID  string ,  requestURL  * url . URL )  ( interface { } ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 20:34:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// GetWebfingerAccount handles the GET for a webfinger resource. Most commonly, it will be used for returning account lookups. 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 16:46:45 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									GetWebfingerAccount ( ctx  context . Context ,  requestedUsername  string )  ( * apimodel . WellKnownResponse ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-24 14:26:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// GetNodeInfoRel returns a well known response giving the path to node info. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									GetNodeInfoRel ( ctx  context . Context ,  request  * http . Request )  ( * apimodel . WellKnownResponse ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-24 14:26:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// GetNodeInfo returns a node info struct in response to a node info request. 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									GetNodeInfo ( ctx  context . Context ,  request  * http . Request )  ( * apimodel . Nodeinfo ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-15 11:58:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// InboxPost handles POST requests to a user's inbox for new activitypub messages. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// InboxPost returns true if the request was handled as an ActivityPub POST to an actor's inbox. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// If false, the request was not an ActivityPub request and may still be handled by the caller in another way, such as serving a web page. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// If the error is nil, then the ResponseWriter's headers and response has already been written. If a non-nil error is returned, then no response has been written. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// If the Actor was constructed with the Federated Protocol enabled, side effects will occur. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// If the Federated Protocol is not enabled, writes the http.StatusMethodNotAllowed status code in the response. No side effects occur. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									InboxPost ( ctx  context . Context ,  w  http . ResponseWriter ,  r  * http . Request )  ( bool ,  error ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// processor just implements the Processor interface  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  processor  struct  {  
						 
					
						
							
								
									
										
										
										
											2021-08-31 15:59:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									fromClientAPI    chan  messages . FromClientAPI 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fromFederator    chan  messages . FromFederator 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									federator        federation . Federator 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									stop             chan  interface { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									tc               typeutils . TypeConverter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									oauthServer      oauth . Server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mediaHandler     media . Handler 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-11 20:18:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									storage          * kv . KVStore 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									timelineManager  timeline . Manager 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									db               db . DB 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-17 18:02:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									filter           visibility . Filter 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/ * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										SUB - PROCESSORS 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									* / 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									accountProcessor     account . Processor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									adminProcessor       admin . Processor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									statusProcessor      status . Processor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									streamingProcessor   streaming . Processor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mediaProcessor       mediaProcessor . Processor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									userProcessor        user . Processor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									federationProcessor  federationProcessor . Processor 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-31 15:46:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// NewProcessor returns a new Processor.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  NewProcessor (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									tc  typeutils . TypeConverter , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									federator  federation . Federator , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									oauthServer  oauth . Server , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mediaHandler  media . Handler , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									storage  * kv . KVStore , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									timelineManager  timeline . Manager , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									db  db . DB , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emailSender  email . Sender )  Processor  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-31 15:59:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									fromClientAPI  :=  make ( chan  messages . FromClientAPI ,  1000 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fromFederator  :=  make ( chan  messages . FromFederator ,  1000 ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 13:31:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									statusProcessor  :=  status . New ( db ,  tc ,  fromClientAPI ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-11 05:37:33 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									streamingProcessor  :=  streaming . New ( db ,  oauthServer ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 13:31:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									accountProcessor  :=  account . New ( db ,  tc ,  mediaHandler ,  oauthServer ,  fromClientAPI ,  federator ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									adminProcessor  :=  admin . New ( db ,  tc ,  mediaHandler ,  fromClientAPI ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mediaProcessor  :=  mediaProcessor . New ( db ,  tc ,  mediaHandler ,  storage ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									userProcessor  :=  user . New ( db ,  emailSender ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									federationProcessor  :=  federationProcessor . New ( db ,  tc ,  federator ,  fromFederator ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  & processor { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fromClientAPI :    fromClientAPI , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fromFederator :    fromFederator , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										federator :        federator , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										stop :             make ( chan  interface { } ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tc :               tc , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										oauthServer :      oauthServer , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										mediaHandler :     mediaHandler , 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-11 20:18:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										storage :          storage , 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										timelineManager :  timelineManager , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										db :               db , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-11 05:37:33 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										filter :           visibility . NewFilter ( db ) , 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-24 11:57:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										accountProcessor :     accountProcessor , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										adminProcessor :       adminProcessor , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										statusProcessor :      statusProcessor , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										streamingProcessor :   streamingProcessor , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										mediaProcessor :       mediaProcessor , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										userProcessor :        userProcessor , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										federationProcessor :  federationProcessor , 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Start starts the Processor, reading from its channels and passing messages back and forth.  
						 
					
						
							
								
									
										
										
										
											2021-08-25 15:34:33 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( p  * processor )  Start ( ctx  context . Context )  error  {  
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									go  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									DistLoop : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											select  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  clientMsg  :=  <- p . fromClientAPI : 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-11 05:37:33 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												logrus . Tracef ( "received message FROM client API: %+v" ,  clientMsg ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												go  func ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-04 13:29:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  err  :=  p . ProcessFromClientAPI ( ctx ,  clientMsg ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-11 05:37:33 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														logrus . Error ( err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											case  federatorMsg  :=  <- p . fromFederator : 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-11 05:37:33 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												logrus . Tracef ( "received message FROM federator: %+v" ,  federatorMsg ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												go  func ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-04 13:29:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  err  :=  p . ProcessFromFederator ( ctx ,  federatorMsg ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-11 05:37:33 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														logrus . Error ( err ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-05 13:23:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											case  <- p . stop : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break  DistLoop 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-15 18:43:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  nil 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Stop stops the processor cleanly, finishing handling any remaining messages before closing down.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// TODO: empty message buffer properly before stopping otherwise we'll lose federating messages.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( p  * processor )  Stop ( )  error  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									close ( p . stop ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}