You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
4.1 KiB
97 lines
4.1 KiB
// GoToSocial |
|
// Copyright (C) GoToSocial Authors admin@gotosocial.org |
|
// SPDX-License-Identifier: AGPL-3.0-or-later |
|
// |
|
// This program is free software: you can redistribute it and/or modify |
|
// it under the terms of the GNU Affero General Public License as published by |
|
// the Free Software Foundation, either version 3 of the License, or |
|
// (at your option) any later version. |
|
// |
|
// This program is distributed in the hope that it will be useful, |
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
// GNU Affero General Public License for more details. |
|
// |
|
// You should have received a copy of the GNU Affero General Public License |
|
// along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
|
|
package federation |
|
|
|
import ( |
|
"context" |
|
"net/http" |
|
|
|
"codeberg.org/superseriousbusiness/activity/streams" |
|
"codeberg.org/superseriousbusiness/activity/streams/vocab" |
|
) |
|
|
|
/* |
|
GOFED COMMON BEHAVIOR INTERFACE |
|
Contains functions required for both the Social API and Federating Protocol. |
|
It is passed to the library as a dependency injection from the client |
|
application. |
|
*/ |
|
|
|
// AuthenticateGetInbox delegates the authentication of a GET to an |
|
// inbox. |
|
// |
|
// Always called, regardless whether the Federated Protocol or Social |
|
// API is enabled. |
|
// |
|
// If an error is returned, it is passed back to the caller of |
|
// GetInbox. In this case, the implementation must not write a |
|
// response to the ResponseWriter as is expected that the client will |
|
// do so when handling the error. The 'authenticated' is ignored. |
|
// |
|
// If no error is returned, but authentication or authorization fails, |
|
// then authenticated must be false and error nil. It is expected that |
|
// the implementation handles writing to the ResponseWriter in this |
|
// case. |
|
// |
|
// Finally, if the authentication and authorization succeeds, then |
|
// authenticated must be true and error nil. The request will continue |
|
// to be processed. |
|
func (f *Federator) AuthenticateGetInbox(ctx context.Context, w http.ResponseWriter, r *http.Request) (context.Context, bool, error) { |
|
// IMPLEMENTATION NOTE: For GoToSocial, we serve GETS to outboxes and inboxes through |
|
// the CLIENT API, not through the federation API, so we just do nothing here. |
|
return ctx, false, nil |
|
} |
|
|
|
// AuthenticateGetOutbox delegates the authentication of a GET to an |
|
// outbox. |
|
// |
|
// Always called, regardless whether the Federated Protocol or Social |
|
// API is enabled. |
|
// |
|
// If an error is returned, it is passed back to the caller of |
|
// GetOutbox. In this case, the implementation must not write a |
|
// response to the ResponseWriter as is expected that the client will |
|
// do so when handling the error. The 'authenticated' is ignored. |
|
// |
|
// If no error is returned, but authentication or authorization fails, |
|
// then authenticated must be false and error nil. It is expected that |
|
// the implementation handles writing to the ResponseWriter in this |
|
// case. |
|
// |
|
// Finally, if the authentication and authorization succeeds, then |
|
// authenticated must be true and error nil. The request will continue |
|
// to be processed. |
|
func (f *Federator) AuthenticateGetOutbox(ctx context.Context, w http.ResponseWriter, r *http.Request) (context.Context, bool, error) { |
|
// IMPLEMENTATION NOTE: For GoToSocial, we serve GETS to outboxes and inboxes through |
|
// the CLIENT API, not through the federation API, so we just do nothing here. |
|
return ctx, false, nil |
|
} |
|
|
|
// GetOutbox returns the OrderedCollection inbox of the actor for this |
|
// context. It is up to the implementation to provide the correct |
|
// collection for the kind of authorization given in the request. |
|
// |
|
// AuthenticateGetOutbox will be called prior to this. |
|
// |
|
// Always called, regardless whether the Federated Protocol or Social |
|
// API is enabled. |
|
func (f *Federator) GetOutbox(ctx context.Context, r *http.Request) (vocab.ActivityStreamsOrderedCollectionPage, error) { |
|
// IMPLEMENTATION NOTE: For GoToSocial, we serve GETS to outboxes and inboxes through |
|
// the CLIENT API, not through the federation API, so we just do nothing here. |
|
return streams.NewActivityStreamsOrderedCollectionPage(), nil |
|
}
|
|
|