package retrofit; /** * Intercept every request before it is executed in order to add additional data. */ public interface RequestInterceptor { /** * A {@link RequestInterceptor} which does no modification of requests. */ RequestInterceptor NONE = new RequestInterceptor() { @Override public void intercept(RequestFacade request) { // Do nothing. } }; /** * Called for every request. Add data using methods on the supplied {@link RequestFacade}. */ void intercept(RequestFacade request); interface RequestFacade { /** * Add a header to the request. This will not replace any existing headers. */ void addHeader(String name, String value); /** * Add a path parameter replacement. This works exactly like a {@link retrofit.http.Path * @Path}-annotated method argument. */ void addPathParam(String name, String value); /** * Add a path parameter replacement without first URI encoding. This works exactly like a * {@link retrofit.http.EncodedPath @EncodedPath}-annotated method argument. */ void addEncodedPathParam(String name, String value); /** * Add an additional query parameter. This will not replace any existing query parameters. */ void addQueryParam(String name, String value); /** * Add an additional query parameter without first URI encoding. This will not replace any * existing query parameters. */ void addEncodedQueryParam(String name, String value); } }