2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   GoToSocial 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-20 18:42:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   Copyright  ( C )  2021 - 2022  GoToSocial  Authors  admin @ gotosocial . org 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   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 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									apimodel  "github.com/superseriousbusiness/gotosocial/internal/api/model" 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-15 10:16:43 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/concurrency" 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"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" 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-03 12:08:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/superseriousbusiness/gotosocial/internal/storage" 
							 
						 
					
						
							
								
									
										
										
										
											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. 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-28 13:23:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Start ( )  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. 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountCreate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . AccountCreateRequest )  ( * apimodel . Token ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-15 16:12:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AccountDeleteLocal processes the delete of a LOCAL account using the given form. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									AccountDeleteLocal ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . AccountDeleteRequest )  gtserror . WithCode 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// AccountGet processes the given request for account information. 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-15 14:33:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountGet ( ctx  context . Context ,  authed  * oauth . Auth ,  targetAccountID  string )  ( * apimodel . Account ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// AccountGet processes the given request for account information. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									AccountGetLocalByUsername ( ctx  context . Context ,  authed  * oauth . Auth ,  username  string )  ( * apimodel . Account ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// AccountUpdate processes the update of an account with the given form 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountUpdate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . UpdateCredentialsRequest )  ( * apimodel . Account ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											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. 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:22:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AccountStatusesGet ( ctx  context . Context ,  authed  * oauth . Auth ,  targetAccountID  string ,  limit  int ,  excludeReplies  bool ,  excludeReblogs  bool ,  maxID  string ,  minID  string ,  pinned  bool ,  mediaOnly  bool ,  publicOnly  bool )  ( * apimodel . TimelineResponse ,  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 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-19 12:01:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AdminAccountAction handles the creation/execution of an action on an account. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									AdminAccountAction ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . AdminAccountActionRequest )  gtserror . WithCode 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-09 14:06:06 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AdminEmojiCreate handles the creation of a new instance emoji by an admin, using the given form. 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-15 17:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AdminEmojiCreate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . EmojiCreateRequest )  ( * apimodel . Emoji ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											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 ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-03 11:56:18 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// AdminMediaRemotePrune triggers a prune of remote media according to the given number of mediaRemoteCacheDays 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-15 16:45:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AdminMediaPrune ( ctx  context . Context ,  mediaRemoteCacheDays  int )  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 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AppCreate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . ApplicationCreateRequest )  ( * apimodel . Application ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											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 ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-20 04:34:36 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// CustomEmojisGet returns an array of info about the custom emojis on this server 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									CustomEmojisGet ( ctx  context . Context )  ( [ ] * apimodel . Emoji ,  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. 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-07 11:08:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									FileGet ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . GetContentRequestForm )  ( * apimodel . Content ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											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 ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-23 16:54:54 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									InstancePeersGet ( ctx  context . Context ,  authed  * oauth . Auth ,  includeSuspended  bool ,  includeOpen  bool ,  flat  bool )  ( interface { } ,  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. 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									MediaCreate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . AttachmentRequest )  ( * apimodel . Attachment ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											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 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:22:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									NotificationsGet ( ctx  context . Context ,  authed  * oauth . Auth ,  limit  int ,  maxID  string ,  sinceID  string )  ( * apimodel . TimelineResponse ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-27 16:06:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-06-11 10:39:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									OAuthHandleTokenRequest ( r  * http . Request )  ( map [ string ] interface { } ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									OAuthHandleAuthorizeRequest ( w  http . ResponseWriter ,  r  * http . Request )  error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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. 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusCreate ( ctx  context . Context ,  authed  * oauth . Auth ,  form  * apimodel . AdvancedStatusCreateForm )  ( * apimodel . Status ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											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. 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusDelete ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( * apimodel . Status ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											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. 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusFave ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( * apimodel . Status ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											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. 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusFavedBy ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( [ ] * apimodel . Account ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// StatusGet gets the given status, taking account of privacy settings and blocks etc. 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusGet ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( * apimodel . Status ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											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. 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									StatusUnfave ( ctx  context . Context ,  authed  * oauth . Auth ,  targetStatusID  string )  ( * apimodel . Status ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											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. 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:22:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									HomeTimelineGet ( ctx  context . Context ,  authed  * oauth . Auth ,  maxID  string ,  sinceID  string ,  minID  string ,  limit  int ,  local  bool )  ( * apimodel . TimelineResponse ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-31 17:36:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// PublicTimelineGet returns statuses from the public/local timeline, with the given filters/parameters. 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:22:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PublicTimelineGet ( ctx  context . Context ,  authed  * oauth . Auth ,  maxID  string ,  sinceID  string ,  minID  string ,  limit  int ,  local  bool )  ( * apimodel . TimelineResponse ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-09 18:32:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// FavedTimelineGet returns faved statuses, with the given filters/parameters. 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:22:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									FavedTimelineGet ( ctx  context . Context ,  authed  * oauth . Auth ,  maxID  string ,  minID  string ,  limit  int )  ( * apimodel . TimelineResponse ,  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. 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-08 20:38:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									AuthorizeStreamingRequest ( ctx  context . Context ,  accessToken  string )  ( * gtsmodel . Account ,  gtserror . WithCode ) 
							 
						 
					
						
							
								
									
										
										
										
											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  {  
						 
					
						
							
								
									
										
										
										
											2022-05-15 10:16:43 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									clientWorker  * concurrency . WorkerPool [ messages . FromClientAPI ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fedWorker     * concurrency . WorkerPool [ messages . FromFederator ] 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-28 13:23:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									federator        federation . Federator 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									tc               typeutils . TypeConverter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									oauthServer      oauth . Server 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-28 16:36:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mediaManager     media . Manager 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-03 12:08:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									storage          storage . Driver 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-05 12:47:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									statusTimelines  timeline . Manager 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									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 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-28 16:36:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mediaManager  media . Manager , 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-03 12:08:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									storage  storage . Driver , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-31 15:46:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									db  db . DB , 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-28 13:23:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emailSender  email . Sender , 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-15 10:16:43 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									clientWorker  * concurrency . WorkerPool [ messages . FromClientAPI ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fedWorker  * concurrency . WorkerPool [ messages . FromFederator ] , 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-28 13:23:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  Processor  {  
						 
					
						
							
								
									
										
										
										
											2022-03-29 11:54:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									parseMentionFunc  :=  GetParseMentionFunc ( db ,  federator ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-28 13:23:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									statusProcessor  :=  status . New ( db ,  tc ,  clientWorker ,  parseMentionFunc ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-11 05:37:33 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									streamingProcessor  :=  streaming . New ( db ,  oauthServer ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-28 13:23:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									accountProcessor  :=  account . New ( db ,  tc ,  mediaManager ,  oauthServer ,  clientWorker ,  federator ,  parseMentionFunc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									adminProcessor  :=  admin . New ( db ,  tc ,  mediaManager ,  clientWorker ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-07 11:08:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mediaProcessor  :=  mediaProcessor . New ( db ,  tc ,  mediaManager ,  federator . TransportController ( ) ,  storage ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-07 13:31:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									userProcessor  :=  user . New ( db ,  emailSender ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-28 13:23:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									federationProcessor  :=  federationProcessor . New ( db ,  tc ,  federator ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-05 12:47:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									filter  :=  visibility . NewFilter ( db ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  & processor { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-28 13:23:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										clientWorker :  clientWorker , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fedWorker :     fedWorker , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										federator :        federator , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tc :               tc , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										oauthServer :      oauthServer , 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-28 16:36:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										mediaManager :     mediaManager , 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-11 20:18:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										storage :          storage , 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-05 12:47:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										statusTimelines :  timeline . NewManager ( StatusGrabFunction ( db ) ,  StatusFilterFunction ( db ,  filter ) ,  StatusPrepareFunction ( db ,  tc ) ,  StatusSkipInsertFunction ( ) ) , 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-13 18:42:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										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.  
						 
					
						
							
								
									
										
										
										
											2022-04-28 13:23:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  ( p  * processor )  Start ( )  error  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Setup and start the client API worker pool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									p . clientWorker . SetProcessor ( p . ProcessFromClientAPI ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  :=  p . clientWorker . Start ( ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Setup and start the federator worker pool 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									p . fedWorker . SetProcessor ( p . ProcessFromFederator ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  :=  p . fedWorker . Start ( ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( p  * processor )  Stop ( )  error  {  
						 
					
						
							
								
									
										
										
										
											2022-04-28 13:23:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  err  :=  p . clientWorker . Stop ( ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err  :=  p . fedWorker . Stop ( ) ;  err  !=  nil  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  err 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}