Interface HttpScmRequestHandler


public interface HttpScmRequestHandler
Plugin point for providing handlers for HTTP requests for SCM hosting operations.

Bitbucket will automatically attempt to authenticate requests using its standard authentication stack (which includes support for Basic Auth). If authentication is required but was not provided or there were invalid credentials, sendAuthenticationError(com.atlassian.bitbucket.scm.AuthenticationState, java.lang.String, java.lang.String, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) will be called.

See Also:
  • Method Summary

    Modifier and Type
    Method
    Description
    create(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
    Returns an HttpScmRequest to service the supplied request, or Optional.empty() if the request could not be created.
    void
    sendAuthenticationError(AuthenticationState state, String summary, String detailMessage, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
     
    void
    sendError(String summary, String detailMessage, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
     
    boolean
    supports(HttpRequestDetails requestDetails)
    Returns whether the handler can service the supplied request.
  • Method Details

    • create

      @Nonnull Optional<HttpScmRequest> create(@Nonnull javax.servlet.http.HttpServletRequest request, @Nonnull javax.servlet.http.HttpServletResponse response)
      Returns an HttpScmRequest to service the supplied request, or Optional.empty() if the request could not be created. This method is only called when supports(com.atlassian.bitbucket.scm.http.HttpRequestDetails) returned true for that request.
      Parameters:
      request - an HttpServletRequest targeting /scm/* (e.g. an HTTP request from the git client binary)
      response - the HttpServletResponse
      Returns:
      an HttpScmRequest to service the request, or Optional.empty()
      Throws:
      com.atlassian.bitbucket.repository.NoSuchRepositoryException - if the repository could not be found
      com.atlassian.bitbucket.AuthorisationException - if the repository is not accessible
    • sendAuthenticationError

      void sendAuthenticationError(@Nonnull AuthenticationState state, @Nonnull String summary, @Nonnull String detailMessage, @Nonnull javax.servlet.http.HttpServletRequest request, @Nonnull javax.servlet.http.HttpServletResponse response) throws IOException
      Parameters:
      state - the current state of the user's authentication, see AuthenticationState for details
      summary - an i18n'd message to (optionally) send to the client if it supports displaying custom messages
      detailMessage - a longer detailed explanation of the problem
      request - an HttpServletRequest targeting /scm/* (e.g. an HTTP request from the git client binary)
      response - the HttpServletResponse
      Throws:
      IOException - if there was a problem reading from the request or writing to the response
    • sendError

      void sendError(@Nonnull String summary, @Nonnull String detailMessage, @Nonnull javax.servlet.http.HttpServletRequest request, @Nonnull javax.servlet.http.HttpServletResponse response) throws IOException
      Parameters:
      summary - an i18n'd message to (optionally) send to the client if it supports displaying custom messages
      detailMessage - a longer detailed explanation of the problem
      request - an HttpServletRequest targeting /scm/* (e.g. an HTTP request from the git client binary)
      response - the HttpServletResponse
      Throws:
      IOException - if there was a problem writing to the response
    • supports

      boolean supports(@Nonnull HttpRequestDetails requestDetails)
      Returns whether the handler can service the supplied request. false means that the request will be passed on to the HttpScmRequestHandler provided by the HttpScmRequestHandlerModuleDescriptor with the next heaviest weight.
      Parameters:
      requestDetails - HttpRequestDetails from the request targeting /scm/* (e.g. an HTTP request from the git client binary)
      Returns:
      true if the handler can service this request, false otherwise