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