blob: df271749e4ed6217bc0a366a5bf74d3d43f44abc [file] [log] [blame]
/*
* Copyright 2013 gitblit.com.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gitblit.manager;
import java.io.File;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.gitblit.Constants.FederationRequest;
import com.gitblit.Constants.FederationToken;
import com.gitblit.models.FederationModel;
import com.gitblit.models.FederationProposal;
import com.gitblit.models.FederationSet;
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.UserModel;
public interface IFederationManager extends IManager {
/**
* Returns the path of the proposals folder. This method checks to see if
* Gitblit is running on a cloud service and may return an adjusted path.
*
* @return the proposals folder path
* @since 1.4.0
*/
File getProposalsFolder();
boolean canFederate();
/**
* Returns the federation user account.
*
* @return the federation user account
* @since 1.4.0
*/
UserModel getFederationUser();
/**
* Try to authenticate request as the Federation user.
*
* @param httpRequest
* @return the federation user, if authenticated
* @since 1.4.0
*/
UserModel authenticate(HttpServletRequest httpRequest);
/**
* Returns the list of federated gitblit instances that this instance will
* try to pull.
*
* @return list of registered gitblit instances
* @since 1.4.0
*/
List<FederationModel> getFederationRegistrations();
/**
* Retrieve the specified federation registration.
*
* @param name
* the name of the registration
* @return a federation registration
* @since 1.4.0
*/
FederationModel getFederationRegistration(String url, String name);
/**
* Returns the list of federation sets.
*
* @return list of federation sets
* @since 1.4.0
*/
List<FederationSet> getFederationSets(String gitblitUrl);
/**
* Returns the list of possible federation tokens for this Gitblit instance.
*
* @return list of federation tokens
* @since 1.4.0
*/
List<String> getFederationTokens();
/**
* Returns the specified federation token for this Gitblit instance.
*
* @param type
* @return a federation token
* @since 1.4.0
*/
String getFederationToken(FederationToken type);
/**
* Returns the specified federation token for this Gitblit instance.
*
* @param value
* @return a federation token
* @since 1.4.0
*/
String getFederationToken(String value);
/**
* Compares the provided token with this Gitblit instance's tokens and
* determines if the requested permission may be granted to the token.
*
* @param req
* @param token
* @return true if the request can be executed
* @since 1.4.0
*/
boolean validateFederationRequest(FederationRequest req, String token);
/**
* Acknowledge and cache the status of a remote Gitblit instance.
*
* @param identification
* the identification of the pulling Gitblit instance
* @param registration
* the registration from the pulling Gitblit instance
* @return true if acknowledged
* @since 1.4.0
*/
boolean acknowledgeFederationStatus(String identification, FederationModel registration);
/**
* Returns the list of registration results.
*
* @return the list of registration results
* @since 1.4.0
*/
List<FederationModel> getFederationResultRegistrations();
/**
* Submit a federation proposal. The proposal is cached locally and the
* Gitblit administrator(s) are notified via email.
*
* @param proposal
* the proposal
* @param gitblitUrl
* the url of your gitblit instance to send an email to
* administrators
* @return true if the proposal was submitted
* @since 1.4.0
*/
boolean submitFederationProposal(FederationProposal proposal, String gitblitUrl);
/**
* Returns the list of pending federation proposals
*
* @return list of federation proposals
* @since 1.4.0
*/
List<FederationProposal> getPendingFederationProposals();
/**
* Get repositories for the specified token.
*
* @param gitblitUrl
* the base url of this gitblit instance
* @param token
* the federation token
* @return a map of <cloneurl, RepositoryModel>
* @since 1.4.0
*/
Map<String, RepositoryModel> getRepositories(String gitblitUrl, String token);
/**
* Creates a proposal from the token.
*
* @param gitblitUrl
* the url of this Gitblit instance
* @param token
* @return a potential proposal
* @since 1.4.0
*/
FederationProposal createFederationProposal(String gitblitUrl, String token);
/**
* Returns the proposal identified by the supplied token.
*
* @param token
* @return the specified proposal or null
* @since 1.4.0
*/
FederationProposal getPendingFederationProposal(String token);
/**
* Deletes a pending federation proposal.
*
* @param a
* proposal
* @return true if the proposal was deleted
* @since 1.4.0
*/
boolean deletePendingFederationProposal(FederationProposal proposal);
}