Class BaseRequest<R extends HttpRequest>

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      R accept​(java.lang.String value)
      The Accept header to send (e.g.
      HttpResponse<byte[]> asBytes()
      Executes the request and returns the response with the body mapped into a byte[]
      java.util.concurrent.CompletableFuture<HttpResponse<byte[]>> asBytesAsync()
      Executes the request asynchronously and returns the response with the body mapped into a byte[]
      java.util.concurrent.CompletableFuture<HttpResponse<byte[]>> asBytesAsync​(Callback<byte[]> callback)
      Executes the request asynchronously and returns the response with the body mapped into a byte[]
      HttpResponse<Empty> asEmpty()
      Executes the request and returns the response without parsing the body
      java.util.concurrent.CompletableFuture<HttpResponse<Empty>> asEmptyAsync()
      Executes the request asynchronously and returns the response without parsing the body
      java.util.concurrent.CompletableFuture<HttpResponse<Empty>> asEmptyAsync​(Callback<Empty> callback)
      Executes the request asynchronously and returns a empty response which is passed to a callback
      HttpResponse<java.io.File> asFile​(java.lang.String path, java.nio.file.CopyOption... copyOptions)
      Executes the request and writes the contents into a file
      java.util.concurrent.CompletableFuture<HttpResponse<java.io.File>> asFileAsync​(java.lang.String path, java.nio.file.CopyOption... copyOptions)
      asynchronously executes the request and writes the contents into a file
      java.util.concurrent.CompletableFuture<HttpResponse<java.io.File>> asFileAsync​(java.lang.String path, Callback<java.io.File> callback, java.nio.file.CopyOption... copyOptions)
      asynchronously executes the request and writes the contents into a file
      HttpResponse<JsonNode> asJson()
      Executes the request and returns the response with the body mapped into a JsonNode
      java.util.concurrent.CompletableFuture<HttpResponse<JsonNode>> asJsonAsync()
      Executes the request asynchronously and returns the response with the body mapped into a JsonNode
      java.util.concurrent.CompletableFuture<HttpResponse<JsonNode>> asJsonAsync​(Callback<JsonNode> callback)
      Executes the request asynchronously and returns the response with the body mapped into a JsonNode
      <T> HttpResponse<T> asObject​(java.lang.Class<? extends T> responseClass)
      Executes the request and returns the response with the body mapped into T by a configured ObjectMapper
      <T> HttpResponse<T> asObject​(java.util.function.Function<RawResponse,​T> function)
      Execute the request and pass the raw response to a function for mapping.
      <T> HttpResponse<T> asObject​(GenericType<T> genericType)
      Executes the request and returns the response with the body mapped into T by a configured ObjectMapper
      <T> java.util.concurrent.CompletableFuture<HttpResponse<T>> asObjectAsync​(java.lang.Class<? extends T> responseClass)
      Executes the request asynchronously and returns response with the body mapped into T by a configured ObjectMapper
      <T> java.util.concurrent.CompletableFuture<HttpResponse<T>> asObjectAsync​(java.lang.Class<? extends T> responseClass, Callback<T> callback)
      Executes the request asynchronously, mapping to a type via the configured object mapper and then passed to a callback handler.
      <T> java.util.concurrent.CompletableFuture<HttpResponse<T>> asObjectAsync​(java.util.function.Function<RawResponse,​T> function)
      Executes the request asynchronously, and pass the raw response to a function for mapping.
      <T> java.util.concurrent.CompletableFuture<HttpResponse<T>> asObjectAsync​(GenericType<T> genericType)
      Executes the request asynchronously, and use a GenericType with the ObjectMapper
      <T> java.util.concurrent.CompletableFuture<HttpResponse<T>> asObjectAsync​(GenericType<T> genericType, Callback<T> callback)
      Executes the request asynchronously, and use a GenericType with the ObjectMapper
      <T> PagedList<T> asPaged​(java.util.function.Function<HttpRequest,​HttpResponse> mappingFunction, java.util.function.Function<HttpResponse<T>,​java.lang.String> linkExtractor)
      Allows for following paging links common in many APIs.
      HttpResponse<java.lang.String> asString()
      Executes the request and returns the response with the body mapped into a String
      java.util.concurrent.CompletableFuture<HttpResponse<java.lang.String>> asStringAsync()
      Executes the request asynchronously and returns the response with the body mapped into a String
      java.util.concurrent.CompletableFuture<HttpResponse<java.lang.String>> asStringAsync​(Callback<java.lang.String> callback)
      Executes the request asynchronously and returns the response with the body mapped into a String
      R basicAuth​(java.lang.String username, java.lang.String password)
      Basic auth credentials
      R connectTimeout​(int millies)
      Set a connect timeout for this request
      R cookie​(java.lang.String name, java.lang.String value)
      Add a simple cookie header
      R cookie​(java.util.Collection<Cookie> cookies)
      Add a collection of cookie headers
      R cookie​(Cookie cookie)
      Add a simple cookie header
      R downloadMonitor​(ProgressMonitor monitor)
      sets a download monitor for monitoring the response.
      boolean equals​(java.lang.Object o)  
      private <T> java.util.function.Function<RawResponse,​HttpResponse<T>> funcResponse​(java.util.function.Function<RawResponse,​T> function)  
      int getConnectTimeout()  
      private java.util.function.Function<RawResponse,​HttpResponse<java.lang.Object>> getConsumer​(java.util.function.Consumer<RawResponse> consumer)  
      java.time.Instant getCreationTime()  
      Headers getHeaders()  
      HttpMethod getHttpMethod()  
      protected ObjectMapper getObjectMapper()  
      (package private) Path getPath()  
      java.lang.String getUrl()  
      java.net.http.HttpClient.Version getVersion()
      gets the version for the request, or null if not set.
      int hashCode()  
      R header​(java.lang.String name, java.lang.String value)
      Add a http header, HTTP supports multiple of the same header.
      R headerReplace​(java.lang.String name, java.lang.String value)
      Replace a header value or add it if it doesn't exist
      R headers​(java.util.Map<java.lang.String,​java.lang.String> headerMap)
      Add headers as a map
      R headersReplace​(java.util.Map<java.lang.String,​java.lang.String> headerMap)
      Replace headers as a map
      R queryString​(java.lang.String name, java.lang.Object value)
      add a query param to the url.
      R queryString​(java.lang.String name, java.util.Collection<?> value)
      Add multiple param with the same param name.
      R queryString​(java.util.Map<java.lang.String,​java.lang.Object> parameters)
      Add query params as a map of name value pairs
      private <E> HttpResponse<E> request​(java.util.function.Function<RawResponse,​HttpResponse<E>> transformer, java.lang.Class<?> resultType)  
      private <T> java.util.concurrent.CompletableFuture<HttpResponse<T>> requestAsync​(HttpRequest request, java.util.function.Function<RawResponse,​HttpResponse<T>> transformer, java.util.concurrent.CompletableFuture<HttpResponse<T>> callback, java.lang.Class<?> resultType)  
      R responseEncoding​(java.lang.String encoding)
      The encoding to expect the response to be for cases where the server fails to respond with the proper encoding
      R routeParam​(java.lang.String name, java.lang.String value)
      add a route param that replaces the matching {name} For example routeParam("name", "fred") will replace {name} in https://localhost/users/{name} to https://localhost/users/fred
      R routeParam​(java.util.Map<java.lang.String,​java.lang.Object> params)
      add a route param map that replaces the matching {name} For example routeParam(Map.of("name", "fred")) will replace {name} in https://localhost/users/{name} to https://localhost/users/fred
      void thenConsume​(java.util.function.Consumer<RawResponse> consumer)
      Execute the request and pass the raw response to a consumer.
      void thenConsumeAsync​(java.util.function.Consumer<RawResponse> consumer)
      Execute the request asynchronously and pass the raw response to a consumer.
      HttpRequestSummary toSummary()  
      private <T> T valueOr​(T x, java.util.function.Supplier<T> o)  
      R version​(java.net.http.HttpClient.Version value)
      sets the HTTP version for the request.
      R withObjectMapper​(ObjectMapper mapper)
      Pass a ObjectMapper for the request.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • creation

        private java.time.Instant creation
      • callCount

        private int callCount
      • objectMapper

        private java.util.Optional<ObjectMapper> objectMapper
      • responseEncoding

        private java.lang.String responseEncoding
      • headers

        protected Headers headers
      • config

        protected final Config config
      • url

        protected Path url
      • connectTimeout

        private java.lang.Integer connectTimeout
      • version

        private java.net.http.HttpClient.Version version
    • Constructor Detail

      • BaseRequest

        BaseRequest​(Config config,
                    HttpMethod method,
                    java.lang.String url)
    • Method Detail

      • routeParam

        public R routeParam​(java.lang.String name,
                            java.lang.String value)
        Description copied from interface: HttpRequest
        add a route param that replaces the matching {name} For example routeParam("name", "fred") will replace {name} in https://localhost/users/{name} to https://localhost/users/fred
        Specified by:
        routeParam in interface HttpRequest<R extends HttpRequest>
        Parameters:
        name - the name of the param (do not include curly braces {}
        value - the value to replace the placeholder with
        Returns:
        this request builder
      • routeParam

        public R routeParam​(java.util.Map<java.lang.String,​java.lang.Object> params)
        Description copied from interface: HttpRequest
        add a route param map that replaces the matching {name} For example routeParam(Map.of("name", "fred")) will replace {name} in https://localhost/users/{name} to https://localhost/users/fred
        Specified by:
        routeParam in interface HttpRequest<R extends HttpRequest>
        Parameters:
        params - a map of path params
        Returns:
        this request builder
      • basicAuth

        public R basicAuth​(java.lang.String username,
                           java.lang.String password)
        Description copied from interface: HttpRequest
        Basic auth credentials
        Specified by:
        basicAuth in interface HttpRequest<R extends HttpRequest>
        Parameters:
        username - the username
        password - the password
        Returns:
        this request builder
      • accept

        public R accept​(java.lang.String value)
        Description copied from interface: HttpRequest
        The Accept header to send (e.g. application/json
        Specified by:
        accept in interface HttpRequest<R extends HttpRequest>
        Parameters:
        value - a valid mime type for the Accept header
        Returns:
        this request builder
      • header

        public R header​(java.lang.String name,
                        java.lang.String value)
        Description copied from interface: HttpRequest
        Add a http header, HTTP supports multiple of the same header. This will continue to append new values
        Specified by:
        header in interface HttpRequest<R extends HttpRequest>
        Parameters:
        name - name of the header
        value - value for the header
        Returns:
        this request builder
      • headerReplace

        public R headerReplace​(java.lang.String name,
                               java.lang.String value)
        Description copied from interface: HttpRequest
        Replace a header value or add it if it doesn't exist
        Specified by:
        headerReplace in interface HttpRequest<R extends HttpRequest>
        Parameters:
        name - name of the header
        value - value for the header
        Returns:
        this request builder
      • headers

        public R headers​(java.util.Map<java.lang.String,​java.lang.String> headerMap)
        Description copied from interface: HttpRequest
        Add headers as a map
        Specified by:
        headers in interface HttpRequest<R extends HttpRequest>
        Parameters:
        headerMap - a map of headers
        Returns:
        this request builder
      • headersReplace

        public R headersReplace​(java.util.Map<java.lang.String,​java.lang.String> headerMap)
        Description copied from interface: HttpRequest
        Replace headers as a map
        Specified by:
        headersReplace in interface HttpRequest<R extends HttpRequest>
        Parameters:
        headerMap - a map of headers
        Returns:
        this request builder
      • responseEncoding

        public R responseEncoding​(java.lang.String encoding)
        Description copied from interface: HttpRequest
        The encoding to expect the response to be for cases where the server fails to respond with the proper encoding
        Specified by:
        responseEncoding in interface HttpRequest<R extends HttpRequest>
        Parameters:
        encoding - a valid mime type for the Accept header
        Returns:
        this request builder
      • cookie

        public R cookie​(java.lang.String name,
                        java.lang.String value)
        Description copied from interface: HttpRequest
        Add a simple cookie header
        Specified by:
        cookie in interface HttpRequest<R extends HttpRequest>
        Parameters:
        name - the name of the cookie
        value - the value of the cookie
        Returns:
        this request builder
      • cookie

        public R cookie​(Cookie cookie)
        Description copied from interface: HttpRequest
        Add a simple cookie header
        Specified by:
        cookie in interface HttpRequest<R extends HttpRequest>
        Parameters:
        cookie - a cookie
        Returns:
        this request builder
      • cookie

        public R cookie​(java.util.Collection<Cookie> cookies)
        Description copied from interface: HttpRequest
        Add a collection of cookie headers
        Specified by:
        cookie in interface HttpRequest<R extends HttpRequest>
        Parameters:
        cookies - a cookie
        Returns:
        this request builder
      • queryString

        public R queryString​(java.lang.String name,
                             java.util.Collection<?> value)
        Description copied from interface: HttpRequest
        Add multiple param with the same param name. queryString("name", Arrays.asList("bob", "linda")) will result in ?name=bob&name=linda
        Specified by:
        queryString in interface HttpRequest<R extends HttpRequest>
        Parameters:
        name - the name of the param
        value - a collection of values
        Returns:
        this request builder
      • queryString

        public R queryString​(java.lang.String name,
                             java.lang.Object value)
        Description copied from interface: HttpRequest
        add a query param to the url. The value will be URL-Encoded
        Specified by:
        queryString in interface HttpRequest<R extends HttpRequest>
        Parameters:
        name - the name of the param
        value - the value of the param
        Returns:
        this request builder
      • queryString

        public R queryString​(java.util.Map<java.lang.String,​java.lang.Object> parameters)
        Description copied from interface: HttpRequest
        Add query params as a map of name value pairs
        Specified by:
        queryString in interface HttpRequest<R extends HttpRequest>
        Parameters:
        parameters - a map of params
        Returns:
        this request builder
      • connectTimeout

        public R connectTimeout​(int millies)
        Description copied from interface: HttpRequest
        Set a connect timeout for this request
        Specified by:
        connectTimeout in interface HttpRequest<R extends HttpRequest>
        Parameters:
        millies - the time in millies
        Returns:
        this request builder
      • withObjectMapper

        public R withObjectMapper​(ObjectMapper mapper)
        Description copied from interface: HttpRequest
        Pass a ObjectMapper for the request. This will override any globally configured ObjectMapper
        Specified by:
        withObjectMapper in interface HttpRequest<R extends HttpRequest>
        Parameters:
        mapper - the ObjectMapper
        Returns:
        this request builder
      • downloadMonitor

        public R downloadMonitor​(ProgressMonitor monitor)
        Description copied from interface: HttpRequest
        sets a download monitor for monitoring the response. this could be used for drawing a progress bar
        Specified by:
        downloadMonitor in interface HttpRequest<R extends HttpRequest>
        Parameters:
        monitor - a ProgressMonitor
        Returns:
        this request builder
      • version

        public R version​(java.net.http.HttpClient.Version value)
        Description copied from interface: HttpRequest
        sets the HTTP version for the request. This will override any global config
        Specified by:
        version in interface HttpRequest<R extends HttpRequest>
        Parameters:
        value - the version
        Returns:
        this request builder
      • asEmptyAsync

        public java.util.concurrent.CompletableFuture<HttpResponse<Empty>> asEmptyAsync()
        Description copied from interface: HttpRequest
        Executes the request asynchronously and returns the response without parsing the body
        Specified by:
        asEmptyAsync in interface HttpRequest<R extends HttpRequest>
        Returns:
        a CompletableFuture of a HttpResponse
      • asEmptyAsync

        public java.util.concurrent.CompletableFuture<HttpResponse<Empty>> asEmptyAsync​(Callback<Empty> callback)
        Description copied from interface: HttpRequest
        Executes the request asynchronously and returns a empty response which is passed to a callback
        Specified by:
        asEmptyAsync in interface HttpRequest<R extends HttpRequest>
        Parameters:
        callback - the callback* Executes the request asynchronously and returns the response without parsing the body
        Returns:
        a CompletableFuture of a HttpResponse
      • asStringAsync

        public java.util.concurrent.CompletableFuture<HttpResponse<java.lang.String>> asStringAsync()
        Description copied from interface: HttpRequest
        Executes the request asynchronously and returns the response with the body mapped into a String
        Specified by:
        asStringAsync in interface HttpRequest<R extends HttpRequest>
        Returns:
        a CompletableFuture of a response
      • asStringAsync

        public java.util.concurrent.CompletableFuture<HttpResponse<java.lang.String>> asStringAsync​(Callback<java.lang.String> callback)
        Description copied from interface: HttpRequest
        Executes the request asynchronously and returns the response with the body mapped into a String
        Specified by:
        asStringAsync in interface HttpRequest<R extends HttpRequest>
        Parameters:
        callback - a callback handler
        Returns:
        a CompletableFuture of a response
      • asBytes

        public HttpResponse<byte[]> asBytes()
        Description copied from interface: HttpRequest
        Executes the request and returns the response with the body mapped into a byte[]
        Specified by:
        asBytes in interface HttpRequest<R extends HttpRequest>
        Returns:
        response
      • asBytesAsync

        public java.util.concurrent.CompletableFuture<HttpResponse<byte[]>> asBytesAsync()
        Description copied from interface: HttpRequest
        Executes the request asynchronously and returns the response with the body mapped into a byte[]
        Specified by:
        asBytesAsync in interface HttpRequest<R extends HttpRequest>
        Returns:
        a CompletableFuture of a response
      • asBytesAsync

        public java.util.concurrent.CompletableFuture<HttpResponse<byte[]>> asBytesAsync​(Callback<byte[]> callback)
        Description copied from interface: HttpRequest
        Executes the request asynchronously and returns the response with the body mapped into a byte[]
        Specified by:
        asBytesAsync in interface HttpRequest<R extends HttpRequest>
        Parameters:
        callback - a callback handler
        Returns:
        a CompletableFuture of a response
      • asJsonAsync

        public java.util.concurrent.CompletableFuture<HttpResponse<JsonNode>> asJsonAsync()
        Description copied from interface: HttpRequest
        Executes the request asynchronously and returns the response with the body mapped into a JsonNode
        Specified by:
        asJsonAsync in interface HttpRequest<R extends HttpRequest>
        Returns:
        a CompletableFuture of a response
      • asJsonAsync

        public java.util.concurrent.CompletableFuture<HttpResponse<JsonNode>> asJsonAsync​(Callback<JsonNode> callback)
        Description copied from interface: HttpRequest
        Executes the request asynchronously and returns the response with the body mapped into a JsonNode
        Specified by:
        asJsonAsync in interface HttpRequest<R extends HttpRequest>
        Parameters:
        callback - a callback handler
        Returns:
        a CompletableFuture of a response
      • asObject

        public <T> HttpResponse<T> asObject​(java.lang.Class<? extends T> responseClass)
                                     throws UnirestException
        Description copied from interface: HttpRequest
        Executes the request and returns the response with the body mapped into T by a configured ObjectMapper
        Specified by:
        asObject in interface HttpRequest<R extends HttpRequest>
        Type Parameters:
        T - the return type
        Parameters:
        responseClass - the class to return. This will be passed to the ObjectMapper
        Returns:
        a response
        Throws:
        UnirestException
      • asObject

        public <T> HttpResponse<T> asObject​(GenericType<T> genericType)
                                     throws UnirestException
        Description copied from interface: HttpRequest
        Executes the request and returns the response with the body mapped into T by a configured ObjectMapper
        Specified by:
        asObject in interface HttpRequest<R extends HttpRequest>
        Type Parameters:
        T - the return type
        Parameters:
        genericType - the genertic type to return. This will be passed to the ObjectMapper
        Returns:
        a response
        Throws:
        UnirestException
      • asObject

        public <T> HttpResponse<T> asObject​(java.util.function.Function<RawResponse,​T> function)
        Description copied from interface: HttpRequest
        Execute the request and pass the raw response to a function for mapping. This raw response contains the original InputStream and is suitable for reading large responses.
        Specified by:
        asObject in interface HttpRequest<R extends HttpRequest>
        Type Parameters:
        T - The type of the response mapping
        Parameters:
        function - the function to map the response into a object of T
        Returns:
        A HttpResponse containing T as the body
      • asObjectAsync

        public <T> java.util.concurrent.CompletableFuture<HttpResponse<T>> asObjectAsync​(java.util.function.Function<RawResponse,​T> function)
        Description copied from interface: HttpRequest
        Executes the request asynchronously, and pass the raw response to a function for mapping. This raw response contains the original InputStream and is suitable for reading large responses
        Specified by:
        asObjectAsync in interface HttpRequest<R extends HttpRequest>
        Type Parameters:
        T - the type of the response
        Parameters:
        function - a function to map the raw request into a object
        Returns:
        a CompletableFuture of a HttpResponse containing the body of T
      • asObjectAsync

        public <T> java.util.concurrent.CompletableFuture<HttpResponse<T>> asObjectAsync​(java.lang.Class<? extends T> responseClass)
        Description copied from interface: HttpRequest
        Executes the request asynchronously and returns response with the body mapped into T by a configured ObjectMapper
        Specified by:
        asObjectAsync in interface HttpRequest<R extends HttpRequest>
        Type Parameters:
        T - the return type
        Parameters:
        responseClass - the class type to map to
        Returns:
        a CompletableFuture of a response
      • asObjectAsync

        public <T> java.util.concurrent.CompletableFuture<HttpResponse<T>> asObjectAsync​(java.lang.Class<? extends T> responseClass,
                                                                                         Callback<T> callback)
        Description copied from interface: HttpRequest
        Executes the request asynchronously, mapping to a type via the configured object mapper and then passed to a callback handler.
        Specified by:
        asObjectAsync in interface HttpRequest<R extends HttpRequest>
        Type Parameters:
        T - the return type
        Parameters:
        responseClass - the type for the ObjectMapper to map to
        callback - a callback for handling the body post mapping
        Returns:
        a CompletableFuture of a HttpResponse containing the body of T
      • asObjectAsync

        public <T> java.util.concurrent.CompletableFuture<HttpResponse<T>> asObjectAsync​(GenericType<T> genericType)
        Description copied from interface: HttpRequest
        Executes the request asynchronously, and use a GenericType with the ObjectMapper
        Specified by:
        asObjectAsync in interface HttpRequest<R extends HttpRequest>
        Type Parameters:
        T - the type of the response
        Parameters:
        genericType - the generic type containing the type
        Returns:
        a CompletableFuture of a HttpResponse containing the body of T
      • asObjectAsync

        public <T> java.util.concurrent.CompletableFuture<HttpResponse<T>> asObjectAsync​(GenericType<T> genericType,
                                                                                         Callback<T> callback)
        Description copied from interface: HttpRequest
        Executes the request asynchronously, and use a GenericType with the ObjectMapper
        Specified by:
        asObjectAsync in interface HttpRequest<R extends HttpRequest>
        Type Parameters:
        T - the type of the response
        Parameters:
        genericType - the generic type containing the type
        callback - a callback for handling the body post mapping
        Returns:
        a CompletableFuture of a HttpResponse containing the body of T
      • thenConsume

        public void thenConsume​(java.util.function.Consumer<RawResponse> consumer)
        Description copied from interface: HttpRequest
        Execute the request and pass the raw response to a consumer. This raw response contains the original InputStream and is suitable for reading large responses
        Specified by:
        thenConsume in interface HttpRequest<R extends HttpRequest>
        Parameters:
        consumer - a consumer function
      • thenConsumeAsync

        public void thenConsumeAsync​(java.util.function.Consumer<RawResponse> consumer)
        Description copied from interface: HttpRequest
        Execute the request asynchronously and pass the raw response to a consumer. This raw response contains the original InputStream and is suitable for reading large responses
        Specified by:
        thenConsumeAsync in interface HttpRequest<R extends HttpRequest>
        Parameters:
        consumer - a consumer function
      • asFile

        public HttpResponse<java.io.File> asFile​(java.lang.String path,
                                                 java.nio.file.CopyOption... copyOptions)
        Description copied from interface: HttpRequest
        Executes the request and writes the contents into a file
        Specified by:
        asFile in interface HttpRequest<R extends HttpRequest>
        Parameters:
        path - The path to the file.
        copyOptions - options specifying how the copy should be done
        Returns:
        a HttpResponse with the file containing the results
      • asFileAsync

        public java.util.concurrent.CompletableFuture<HttpResponse<java.io.File>> asFileAsync​(java.lang.String path,
                                                                                              java.nio.file.CopyOption... copyOptions)
        Description copied from interface: HttpRequest
        asynchronously executes the request and writes the contents into a file
        Specified by:
        asFileAsync in interface HttpRequest<R extends HttpRequest>
        Parameters:
        path - The path to the file.
        copyOptions - options specifying how the copy should be done
        Returns:
        a file containing the results
      • asFileAsync

        public java.util.concurrent.CompletableFuture<HttpResponse<java.io.File>> asFileAsync​(java.lang.String path,
                                                                                              Callback<java.io.File> callback,
                                                                                              java.nio.file.CopyOption... copyOptions)
        Description copied from interface: HttpRequest
        asynchronously executes the request and writes the contents into a file
        Specified by:
        asFileAsync in interface HttpRequest<R extends HttpRequest>
        Parameters:
        path - The path to the file.
        callback - a callback for handling the body post mapping
        copyOptions - options specifying how the copy should be done
        Returns:
        a file containing the results
      • asPaged

        public <T> PagedList<T> asPaged​(java.util.function.Function<HttpRequest,​HttpResponse> mappingFunction,
                                        java.util.function.Function<HttpResponse<T>,​java.lang.String> linkExtractor)
        Description copied from interface: HttpRequest
        Allows for following paging links common in many APIs. Each request will result in the same request (headers, etc) but will use the "next" link provided by the extract function.
        Specified by:
        asPaged in interface HttpRequest<R extends HttpRequest>
        Type Parameters:
        T - the type of response.
        Parameters:
        mappingFunction - a function to return the desired return type leveraging one of the as* methods (asString, asObject, etc).
        linkExtractor - a function to extract a "next" link to follow. Retuning a null or empty string ends the paging
        Returns:
        a PagedList of your type
      • requestAsync

        private <T> java.util.concurrent.CompletableFuture<HttpResponse<T>> requestAsync​(HttpRequest request,
                                                                                         java.util.function.Function<RawResponse,​HttpResponse<T>> transformer,
                                                                                         java.util.concurrent.CompletableFuture<HttpResponse<T>> callback,
                                                                                         java.lang.Class<?> resultType)
      • getUrl

        public java.lang.String getUrl()
        Specified by:
        getUrl in interface HttpRequest<R extends HttpRequest>
        Returns:
        The current URL string for the request
      • getObjectMapper

        protected ObjectMapper getObjectMapper()
      • getCreationTime

        public java.time.Instant getCreationTime()
        Specified by:
        getCreationTime in interface HttpRequest<R extends HttpRequest>
        Returns:
        the instant the request object was created in UTC (not when it was sent).
      • getVersion

        public java.net.http.HttpClient.Version getVersion()
        Description copied from interface: HttpRequest
        gets the version for the request, or null if not set.
        Specified by:
        getVersion in interface HttpRequest<R extends HttpRequest>
        Returns:
        the version
      • valueOr

        private <T> T valueOr​(T x,
                              java.util.function.Supplier<T> o)
      • getPath

        Path getPath()
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object