Package discord4j.rest
Class RestClientBuilder<C,O extends RouterOptions>
- java.lang.Object
-
- discord4j.rest.RestClientBuilder<C,O>
-
public class RestClientBuilder<C,O extends RouterOptions> extends Object
Builder suited for creating aRestClient
. To acquire an instance, seecreateRest(String)
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
RestClientBuilder.Config
-
Field Summary
Fields Modifier and Type Field 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
-
Constructor Summary
Constructors Modifier Constructor 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)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description C
build()
Create a client capable of connecting to Discord REST API using aDefaultRouter
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 customRouter
factory.static RestClientBuilder<RestClient,RouterOptions>
createRest(String token)
Initialize a new builder with the given token.static RestClientBuilder<RestClient,RouterOptions>
createRestApplication()
RestClientBuilder<C,O>
onClientResponse(ResponseFunction responseFunction)
Sets a new API response behavior to the supportingRouter
, allowing cross-cutting behavior across all requests made by it.RestClientBuilder<C,O>
setDefaultAllowedMentions(AllowedMentions allowedMentions)
Sets theAllowedMentions
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>
RestClientBuilder<C,O2>setExtraOptions(Function<? super O,O2> optionsModifier)
Add a configuration forRouter
implementation-specific cases, changing the type of the currentRouterOptions
object passed to theRouter
factory in build methods.RestClientBuilder<C,O>
setGlobalRateLimiter(GlobalRateLimiter globalRateLimiter)
Define theGlobalRateLimiter
to be applied while configuring theRouter
for a client.RestClientBuilder<C,O>
setJacksonResources(JacksonResources jacksonResources)
Set a newJacksonResources
to this builder, dedicated to provide anObjectMapper
for serialization and deserialization of data.RestClientBuilder<C,O>
setReactorResources(ReactorResources reactorResources)
Set a newReactorResources
dedicated to set up a connection pool, an event pool, as well as the supportingHttpClient
used for making rest requests and maintaining gateway connections.RestClientBuilder<C,O>
setRequestQueueFactory(RequestQueueFactory requestQueueFactory)
Sets theRequestQueueFactory
that will provideRequestQueue
instances for the router.RestClientBuilder<C,O>
setToken(String token)
Change the token stored in this builder.
-
-
-
Field Detail
-
clientFactory
protected final Function<RestClientBuilder.Config,C> clientFactory
-
optionsModifier
protected final Function<RouterOptions,O extends RouterOptions> optionsModifier
-
token
protected String token
-
reactorResources
protected ReactorResources reactorResources
-
jacksonResources
protected JacksonResources jacksonResources
-
exchangeStrategies
protected ExchangeStrategies exchangeStrategies
-
responseTransformers
protected List<ResponseFunction> responseTransformers
-
globalRateLimiter
protected GlobalRateLimiter globalRateLimiter
-
requestQueueFactory
protected RequestQueueFactory requestQueueFactory
-
allowedMentions
@Nullable protected AllowedMentions allowedMentions
-
-
Constructor Detail
-
RestClientBuilder
protected RestClientBuilder(String token, Function<RestClientBuilder.Config,C> clientFactory, Function<RouterOptions,O> optionsModifier)
-
RestClientBuilder
protected RestClientBuilder(RestClientBuilder<?,?> source, Function<RestClientBuilder.Config,C> clientFactory, Function<RouterOptions,O> optionsModifier)
-
-
Method Detail
-
createRest
public static RestClientBuilder<RestClient,RouterOptions> createRest(String token)
Initialize a new builder with the given token.- Parameters:
token
- the bot token used to authenticate to Discord
-
createRestApplication
public static RestClientBuilder<RestClient,RouterOptions> createRestApplication()
-
setExtraOptions
public <O2 extends RouterOptions> RestClientBuilder<C,O2> setExtraOptions(Function<? super O,O2> optionsModifier)
Add a configuration forRouter
implementation-specific cases, changing the type of the currentRouterOptions
object passed to theRouter
factory in build methods.- Type Parameters:
O2
- new type for the options- Parameters:
optionsModifier
-Function
to transform theRouterOptions
type to provide customRouter
implementations a proper configuration object.- Returns:
- a new
RestClientBuilder
that will now work with the new options type.
-
setToken
public RestClientBuilder<C,O> setToken(String token)
Change the token stored in this builder.- Parameters:
token
- the new bot token- Returns:
- this builder
-
setReactorResources
public RestClientBuilder<C,O> setReactorResources(ReactorResources reactorResources)
Set a newReactorResources
dedicated to set up a connection pool, an event pool, as well as the supportingHttpClient
used for making rest requests and maintaining gateway connections.- Parameters:
reactorResources
- the new resource provider used for rest and gateway operations- Returns:
- this builder
-
setJacksonResources
public RestClientBuilder<C,O> setJacksonResources(JacksonResources jacksonResources)
Set a newJacksonResources
to this builder, dedicated to provide anObjectMapper
for serialization and deserialization of data.- Parameters:
jacksonResources
- the new resource provider for serialization and deserialization- Returns:
- this builder
-
setExchangeStrategies
public RestClientBuilder<C,O> setExchangeStrategies(ExchangeStrategies exchangeStrategies)
Set the strategies to use when reading or writing HTTP request and response body entities. Defaults to usingsetJacksonResources(JacksonResources)
to build aExchangeStrategies.jackson(ObjectMapper)
that is capable of encoding and decoding JSON using Jackson.- Parameters:
exchangeStrategies
- the HTTP exchange strategies to use- Returns:
- this builder
-
onClientResponse
public RestClientBuilder<C,O> onClientResponse(ResponseFunction responseFunction)
Sets a new API response behavior to the supportingRouter
, 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 givenRoute
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 matchingRoute
.
- Parameters:
responseFunction
- theResponseFunction
to transform the responses from matching requests.- Returns:
- this builder
-
setGlobalRateLimiter
public RestClientBuilder<C,O> setGlobalRateLimiter(GlobalRateLimiter globalRateLimiter)
Define theGlobalRateLimiter
to be applied while configuring theRouter
for a client.GlobalRateLimiter
purpose is to coordinate API requests to properly delay them under global rate limiting scenarios. A supportingRouter
factory (supplied atbuild(Function)
) is responsible for applying the given limiter.- Parameters:
globalRateLimiter
- the limiter instance to be used while configuring aRouter
- Returns:
- this builder
- See Also:
GlobalRateLimiter
-
setRequestQueueFactory
public RestClientBuilder<C,O> setRequestQueueFactory(RequestQueueFactory requestQueueFactory)
Sets theRequestQueueFactory
that will provideRequestQueue
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.- Parameters:
requestQueueFactory
- the factory that will provideRequestQueue
instances for the router- Returns:
- this builder
- See Also:
RequestQueueFactory.createFromSink(Function, EmissionStrategy)
-
setDefaultAllowedMentions
public RestClientBuilder<C,O> setDefaultAllowedMentions(AllowedMentions allowedMentions)
Sets theAllowedMentions
object that can limit the mentioned target entities that are notified upon message created by this client.- Parameters:
allowedMentions
- the options for limiting message mentions. SeeAllowedMentions.builder()
.- Returns:
- this builder
-
build
public C build()
Create a client capable of connecting to Discord REST API using aDefaultRouter
that is capable of working in monolithic environments.- Returns:
- a configured
RestClient
based on this builder parameters
-
build
public C build(Function<O,Router> routerFactory)
Create a client capable of connecting to Discord REST API using a customRouter
factory. The resultingRestClient
will use the producedRouter
for every request.- Parameters:
routerFactory
- the factory ofRouter
implementation- Returns:
- a configured
RestClient
based on this builder parameters
-
-