public class RestClientBuilder<C,O extends RouterOptions> extends Object
RestClient
. To acquire an instance, see createRest(String)
.Modifier and Type | Class and Description |
---|---|
protected static class |
RestClientBuilder.Config |
Modifier and Type | Field and Description |
---|---|
protected AllowedMentions |
allowedMentions |
protected Function<RestClientBuilder.Config,C> |
clientFactory |
protected ExchangeStrategies |
exchangeStrategies |
protected GlobalRateLimiter |
globalRateLimiter |
protected JacksonResources |
jacksonResources |
protected Function<RouterOptions,O> |
optionsModifier |
protected ReactorResources |
reactorResources |
protected RequestQueueFactory |
requestQueueFactory |
protected List<ResponseFunction> |
responseTransformers |
protected String |
token |
Modifier | Constructor and Description |
---|---|
protected |
RestClientBuilder(RestClientBuilder<?,?> source,
Function<RestClientBuilder.Config,C> clientFactory,
Function<RouterOptions,O> optionsModifier) |
protected |
RestClientBuilder(String token,
Function<RestClientBuilder.Config,C> clientFactory,
Function<RouterOptions,O> optionsModifier) |
Modifier and Type | Method and Description |
---|---|
C |
build()
Create a client capable of connecting to Discord REST API using a
DefaultRouter that is capable of
working in monolithic environments. |
C |
build(Function<O,Router> routerFactory)
Create a client capable of connecting to Discord REST API using a custom
Router factory. |
static RestClientBuilder<RestClient,RouterOptions> |
createRest(String token)
Initialize a new builder with the given token.
|
RestClientBuilder<C,O> |
onClientResponse(ResponseFunction responseFunction)
Sets a new API response behavior to the supporting
Router , allowing cross-cutting behavior across
all requests made by it. |
RestClientBuilder<C,O> |
setDefaultAllowedMentions(AllowedMentions allowedMentions)
Sets the
AllowedMentions object that can limit the mentioned target entities that are notified upon
message created by this client. |
RestClientBuilder<C,O> |
setExchangeStrategies(ExchangeStrategies exchangeStrategies)
Set the strategies to use when reading or writing HTTP request and response body entities.
|
<O2 extends RouterOptions> |
setExtraOptions(Function<? super O,O2> optionsModifier)
Add a configuration for
Router implementation-specific cases, changing the type of the current
RouterOptions object passed to the Router factory in build methods. |
RestClientBuilder<C,O> |
setGlobalRateLimiter(GlobalRateLimiter globalRateLimiter)
Define the
GlobalRateLimiter to be applied while configuring the Router for a client. |
RestClientBuilder<C,O> |
setJacksonResources(JacksonResources jacksonResources)
Set a new
JacksonResources to this builder, dedicated to provide an ObjectMapper for
serialization and deserialization of data. |
RestClientBuilder<C,O> |
setReactorResources(ReactorResources reactorResources)
Set a new
ReactorResources dedicated to set up a connection pool, an event pool, as well as the
supporting HttpClient used for making rest requests and maintaining gateway connections. |
RestClientBuilder<C,O> |
setRequestQueueFactory(RequestQueueFactory requestQueueFactory)
Sets the
RequestQueueFactory that will provide RequestQueue instances for the router. |
RestClientBuilder<C,O> |
setToken(String token)
Change the token stored in this builder.
|
protected final Function<RestClientBuilder.Config,C> clientFactory
protected final Function<RouterOptions,O extends RouterOptions> optionsModifier
protected String token
protected ReactorResources reactorResources
protected JacksonResources jacksonResources
protected ExchangeStrategies exchangeStrategies
protected List<ResponseFunction> responseTransformers
protected GlobalRateLimiter globalRateLimiter
protected RequestQueueFactory requestQueueFactory
@Nullable protected AllowedMentions allowedMentions
protected RestClientBuilder(String token, Function<RestClientBuilder.Config,C> clientFactory, Function<RouterOptions,O> optionsModifier)
protected RestClientBuilder(RestClientBuilder<?,?> source, Function<RestClientBuilder.Config,C> clientFactory, Function<RouterOptions,O> optionsModifier)
public static RestClientBuilder<RestClient,RouterOptions> createRest(String token)
token
- the bot token used to authenticate to Discordpublic <O2 extends RouterOptions> RestClientBuilder<C,O2> setExtraOptions(Function<? super O,O2> optionsModifier)
Router
implementation-specific cases, changing the type of the current
RouterOptions
object passed to the Router
factory in build methods.O2
- new type for the optionsoptionsModifier
- Function
to transform the RouterOptions
type to provide custom
Router
implementations a proper configuration object.RestClientBuilder
that will now work with the new options type.public RestClientBuilder<C,O> setToken(String token)
token
- the new bot tokenpublic RestClientBuilder<C,O> setReactorResources(ReactorResources reactorResources)
ReactorResources
dedicated to set up a connection pool, an event pool, as well as the
supporting HttpClient
used for making rest requests and maintaining gateway connections.reactorResources
- the new resource provider used for rest and gateway operationspublic RestClientBuilder<C,O> setJacksonResources(JacksonResources jacksonResources)
JacksonResources
to this builder, dedicated to provide an ObjectMapper
for
serialization and deserialization of data.jacksonResources
- the new resource provider for serialization and deserializationpublic RestClientBuilder<C,O> setExchangeStrategies(ExchangeStrategies exchangeStrategies)
setJacksonResources(JacksonResources)
to build a ExchangeStrategies.jackson(ObjectMapper)
that
is capable of encoding and decoding JSON using Jackson.exchangeStrategies
- the HTTP exchange strategies to usepublic RestClientBuilder<C,O> onClientResponse(ResponseFunction responseFunction)
Router
, allowing cross-cutting behavior across
all requests made by it.
The given ResponseFunction
will be applied after every response. Calling this function multiple
times will result in additive behavior, so care must be taken regarding the order in
which multiple calls occur. Transformations will be added to the response pipeline in that order.
Built-in factories are supplied for commonly used behavior:
ResponseFunction.emptyIfNotFound()
transforms any HTTP 404 error into an empty sequence.ResponseFunction.emptyIfNotFound(RouteMatcher)
transforms HTTP 404 errors from the given
Route
s into an empty sequence.ResponseFunction.emptyOnErrorStatus(RouteMatcher, Integer...)
provides the same behavior as
above but for any given status codes.ResponseFunction.retryOnceOnErrorStatus(Integer...)
retries once for the given status codes.ResponseFunction.retryOnceOnErrorStatus(RouteMatcher, Integer...)
provides the same behavior
as above but for any matching Route
.responseFunction
- the ResponseFunction
to transform the responses from matching requests.public RestClientBuilder<C,O> setGlobalRateLimiter(GlobalRateLimiter globalRateLimiter)
GlobalRateLimiter
to be applied while configuring the Router
for a client.
GlobalRateLimiter
purpose is to coordinate API requests to properly delay them under global rate
limiting scenarios. A supporting Router
factory (supplied at build(Function)
) is responsible
for applying the given limiter.globalRateLimiter
- the limiter instance to be used while configuring a Router
GlobalRateLimiter
public RestClientBuilder<C,O> setRequestQueueFactory(RequestQueueFactory requestQueueFactory)
RequestQueueFactory
that will provide RequestQueue
instances for the router.
If not set, it will use a RequestQueueFactory
providing request queues backed by a sink with
reasonable buffering capacity, delaying overflowing requests.
requestQueueFactory
- the factory that will provide RequestQueue
instances for the routerRequestQueueFactory.createFromSink(Function, EmissionStrategy)
public RestClientBuilder<C,O> setDefaultAllowedMentions(AllowedMentions allowedMentions)
AllowedMentions
object that can limit the mentioned target entities that are notified upon
message created by this client.allowedMentions
- the options for limiting message mentions. See AllowedMentions.builder()
.public C build()
DefaultRouter
that is capable of
working in monolithic environments.RestClient
based on this builder parameterspublic C build(Function<O,Router> routerFactory)
Router
factory. The resulting
RestClient
will use the produced Router
for every request.routerFactory
- the factory of Router
implementationRestClient
based on this builder parameters