| /* |
| * 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); |
| |
| } |