/*
* Copyright 2016 the original author or authors.
*
* 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 io.restassured.specification;
import io.restassured.http.Method;
import io.restassured.response.ResponseOptions;
import java.net.URI;
import java.net.URL;
import java.util.Map;
/**
* Options available when sending a request.
*
* @param <R> The type of response options.
*/
public interface RequestSenderOptions<R extends ResponseOptions<R>> {
/**
* Perform a GET request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters. E.g. if path is "/book/{hotelId}/{roomNumber}" you can do <code>get("/book/{hotelName}/{roomNumber}", "Hotels R Us", 22);</code>.
* @return The response of the request.
*/
R get(CharSequence path, Object... pathParams);
/**
* Perform a GET request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters.
* @return The response of the request.
*/
R get(CharSequence path, Map<String, ?> pathParams);
/**
* Perform a POST request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters. E.g. if path is "/book/{hotelId}/{roomNumber}" you can do <code>post("/book/{hotelName}/{roomNumber}", "Hotels R Us", 22);</code>.
* @return The response of the request.
*/
R post(CharSequence path, Object... pathParams);
/**
* Perform a POST request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters.
* @return The response of the request.
*/
R post(CharSequence path, Map<String, ?> pathParams);
/**
* Perform a PUT request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters. E.g. if path is "/book/{hotelId}/{roomNumber}" you can do <code>put("/book/{hotelName}/{roomNumber}", "Hotels R Us", 22);</code>.
* @return The response of the request.
*/
R put(CharSequence path, Object... pathParams);
/**
* Perform a PUT request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters.
* @return The response of the request.
*/
R put(CharSequence path, Map<String, ?> pathParams);
/**
* Perform a DELETE request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters. E.g. if path is "/book/{hotelId}/{roomNumber}" you can do <code>delete("/book/{hotelName}/{roomNumber}", "Hotels R Us", 22);</code>.
* @return The response of the request.
*/
R delete(CharSequence path, Object... pathParams);
/**
* Perform a DELETE request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters.
* @return The response of the request.
*/
R delete(CharSequence path, Map<String, ?> pathParams);
/**
* Perform a HEAD request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters. E.g. if path is "/book/{hotelId}/{roomNumber}" you can do <code>head("/book/{hotelName}/{roomNumber}", "Hotels R Us", 22);</code>.
* @return The response of the request.
*/
R head(CharSequence path, Object... pathParams);
/**
* Perform a HEAD request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters.
* @return The response of the request.
*/
R head(CharSequence path, Map<String, ?> pathParams);
/**
* Perform a PATCH request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters. E.g. if path is "/book/{hotelId}/{roomNumber}" you can do <code>head("/book/{hotelName}/{roomNumber}", "Hotels R Us", 22);</code>.
* @return The response of the request.
*/
R patch(CharSequence path, Object... pathParams);
/**
* Perform a PATCH request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters.
* @return The response of the request.
*/
R patch(CharSequence path, Map<String, ?> pathParams);
/**
* Perform a OPTIONS request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters. E.g. if path is "/book/{hotelId}/{roomNumber}" you can do <code>head("/book/{hotelName}/{roomNumber}", "Hotels R Us", 22);</code>.
* @return The response of the request.
*/
R options(CharSequence path, Object... pathParams);
/**
* Perform a OPTIONS request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param path The path to send the request to.
* @param pathParams The path parameters.
* @return The response of the request.
*/
R options(CharSequence path, Map<String, ?> pathParams);
/**
* Perform a GET request to a <code>uri</code>.
*
* @param uri The uri to send the request to.
* @return The response of the GET request.
*/
R get(URI uri);
/**
* Perform a POST request to a <code>uri</code>.
*
* @param uri The uri to send the request to.
* @return The response of the request.
*/
R post(URI uri);
/**
* Perform a PUT request to a <code>uri</code>.
*
* @param uri The uri to send the request to.
* @return The response of the request.
*/
R put(URI uri);
/**
* Perform a DELETE request to a <code>uri</code>.
*
* @param uri The uri to send the request to.
* @return The response of the request.
*/
R delete(URI uri);
/**
* Perform a HEAD request to a <code>uri</code>.
*
* @param uri The uri to send the request to.
* @return The response of the request.
*/
R head(URI uri);
/**
* Perform a PATCH request to a <code>uri</code>.
*
* @param uri The uri to send the request to.
* @return The response of the request.
*/
R patch(URI uri);
/**
* Perform a OPTIONS request to a <code>uri</code>.
*
* @param uri The uri to send the request to.
* @return The response of the request.
*/
R options(URI uri);
/**
* Perform a GET request to a <code>url</code>.
*
* @param url The url to send the request to.
* @return The response of the GET request.
*/
R get(URL url);
/**
* Perform a POST request to a <code>url</code>.
*
* @param url The url to send the request to.
* @return The response of the request.
*/
R post(URL url);
/**
* Perform a PUT request to a <code>url</code>.
*
* @param url The url to send the request to.
* @return The response of the request.
*/
R put(URL url);
/**
* Perform a DELETE request to a <code>url</code>.
*
* @param url The url to send the request to.
* @return The response of the request.
*/
R delete(URL url);
/**
* Perform a HEAD request to a <code>url</code>.
*
* @param url The url to send the request to.
* @return The response of the request.
*/
R head(URL url);
/**
* Perform a PATCH request to a <code>url</code>.
*
* @param url The url to send the request to.
* @return The response of the request.
*/
R patch(URL url);
/**
* Perform a OPTIONS request to a <code>url</code>.
*
* @param url The url to send the request to.
* @return The response of the request.
*/
R options(URL url);
/**
* Perform a GET request to the statically configured path (by default <code>http://localhost:8080</code>).
*
* @return The response of the GET request.
*/
R get();
/**
* Perform a POST request to the statically configured path (by default <code>http://localhost:8080</code>).
*
* @return The response of the request.
*/
R post();
/**
* Perform a PUT request to the statically configured path (by default <code>http://localhost:8080</code>).
*
* @return The response of the request.
*/
R put();
/**
* Perform a DELETE request to the statically configured path (by default <code>http://localhost:8080</code>).
*
* @return The response of the request.
*/
R delete();
/**
* Perform a HEAD request to the statically configured path (by default <code>http://localhost:8080</code>).
*
* @return The response of the request.
*/
R head();
/**
* Perform a PATCH request to the statically configured path (by default <code>http://localhost:8080</code>).
*
* @return The response of the request.
*/
R patch();
/**
* Perform a OPTIONS request to the statically configured path (by default <code>http://localhost:8080</code>).
*
* @return The response of the request.
*/
R options();
/**
* Perform a request to the pre-configured path (by default <code>http://localhost:8080</code>).
*
* @param method The HTTP method to use
* @return The response of the request.
*/
R request(Method method);
/**
* Perform a custom HTTP request to the pre-configured path (by default <code>http://localhost:8080</code>).
*
* @param method The HTTP method to use
* @return The response of the request.
*/
R request(String method);
/**
* Perform a HTTP request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param method The HTTP method to use
* @param path The path to send the request to.
* @param pathParams The path parameters. E.g. if path is "/book/{hotelId}/{roomNumber}" you can do <code>request(Method.TRACE,"/book/{hotelName}/{roomNumber}", "Hotels R Us", 22);</code>.
* @return The response of the request.
*/
R request(Method method, String path, Object... pathParams);
/**
* Perform a custom HTTP request to a <code>path</code>. Normally the path doesn't have to be fully-qualified e.g. you don't need to
* specify the path as <tt>http://localhost:8080/path</tt>. In this case it's enough to use <tt>/path</tt>.
*
* @param method The HTTP method to use
* @param path The path to send the request to.
* @param pathParams The path parameters. E.g. if path is "/book/{hotelId}/{roomNumber}" you can do <code>request("method","/book/{hotelName}/{roomNumber}", "Hotels R Us", 22);</code>.
* @return The response of the request.
*/
R request(String method, String path, Object... pathParams);
/**
* Perform a request to a <code>uri</code>.
*
* @param method The HTTP method to use
* @param uri The uri to send the request to.
* @return The response of the GET request.
*/
R request(Method method, URI uri);
/**
* Perform a request to a <code>url</code>.
*
* @param method The HTTP method to use
* @param url The url to send the request to.
* @return The response of the GET request.
*/
R request(Method method, URL url);
/**
* Perform a custom HTTP request to a <code>uri</code>.
*
* @param method The HTTP method to use
* @param uri The uri to send the request to.
* @return The response of the GET request.
*/
R request(String method, URI uri);
/**
* Perform a custom HTTP request to a <code>url</code>.
*
* @param method The HTTP method to use
* @param url The url to send the request to.
* @return The response of the GET request.
*/
R request(String method, URL url);
}