Struct rivet_party::client::Client
source · [−]pub struct Client<C, M, R = Standard> { /* private fields */ }
Expand description
An ergonomic service client for PartyService
.
This client allows ergonomic access to a PartyService
-shaped service.
Each method corresponds to an endpoint defined in the service’s Smithy model,
and the request and response shapes are auto-generated from that same model.
Constructing a Client
To construct a client, you need a few different things:
- A
Config
that specifies additional configuration required by the service. - A connector (
C
) that specifies how HTTP requests are translated into HTTP responses. This will typically be an HTTP client (likehyper
), though you can also substitute in your own, like a mock mock connector for testing. - A “middleware” (
M
) that modifies requests prior to them being sent to the request. Most commonly, middleware will decide what endpoint the requests should be sent to, as well as perform authentication and authorization of requests (such as SigV4). You can also have middleware that performs request/response tracing, throttling, or other middleware-like tasks. - A retry policy (
R
) that dictates the behavior for requests that fail and should (potentially) be retried. The default type is generally what you want, as it implements a well-vetted retry policy implemented inRetryMode::Standard
.
To construct a client, you will generally want to call
Client::with_config
, which takes a aws_smithy_client::Client
(a
Smithy client that isn’t specialized to a particular service),
and a Config
. Both of these are constructed using
the builder pattern where you first construct a Builder
type,
then configure it with the necessary parameters, and then call
build
to construct the finalized output type. The
aws_smithy_client::Client
builder is re-exported in this crate as
Builder
for convenience.
In most circumstances, you will want to use the following pattern to construct a client:
use rivet_party::{Builder, Client, Config};
let raw_client =
Builder::dyn_https()
.middleware(/* discussed below */)
.build();
let config = Config::builder().build();
let client = Client::with_config(raw_client, config);
For the middleware, you’ll want to use whatever matches the routing, authentication and authorization required by the target service. For example, for the standard AWS SDK which uses SigV4-signed requests, the middleware looks like this:
use aws_endpoint::AwsEndpointStage;
use aws_http::auth::CredentialsStage;
use aws_http::recursion_detection::RecursionDetectionStage;
use aws_http::user_agent::UserAgentStage;
use aws_sig_auth::middleware::SigV4SigningStage;
use aws_sig_auth::signer::SigV4Signer;
use aws_smithy_client::retry::Config as RetryConfig;
use aws_smithy_http_tower::map_request::{AsyncMapRequestLayer, MapRequestLayer};
use std::fmt::Debug;
use tower::layer::util::{Identity, Stack};
use tower::ServiceBuilder;
type AwsMiddlewareStack = Stack<
MapRequestLayer<RecursionDetectionStage>,
Stack<
MapRequestLayer<SigV4SigningStage>,
Stack<
AsyncMapRequestLayer<CredentialsStage>,
Stack<
MapRequestLayer<UserAgentStage>,
Stack<MapRequestLayer<AwsEndpointStage>, Identity>,
>,
>,
>,
>;
/// AWS Middleware Stack
///
/// This implements the middleware stack for this service. It will:
/// 1. Load credentials asynchronously into the property bag
/// 2. Sign the request with SigV4
/// 3. Resolve an Endpoint for the request
/// 4. Add a user agent to the request
#[derive(Debug, Default, Clone)]
#[non_exhaustive]
pub struct AwsMiddleware;
impl AwsMiddleware {
/// Create a new `AwsMiddleware` stack
///
/// Note: `AwsMiddleware` holds no state.
pub fn new() -> Self {
AwsMiddleware::default()
}
}
// define the middleware stack in a non-generic location to reduce code bloat.
fn base() -> ServiceBuilder<AwsMiddlewareStack> {
let credential_provider = AsyncMapRequestLayer::for_mapper(CredentialsStage::new());
let signer = MapRequestLayer::for_mapper(SigV4SigningStage::new(SigV4Signer::new()));
let endpoint_resolver = MapRequestLayer::for_mapper(AwsEndpointStage);
let user_agent = MapRequestLayer::for_mapper(UserAgentStage::new());
let recursion_detection = MapRequestLayer::for_mapper(RecursionDetectionStage::new());
// These layers can be considered as occurring in order, that is:
// 1. Resolve an endpoint
// 2. Add a user agent
// 3. Acquire credentials
// 4. Sign with credentials
// (5. Dispatch over the wire)
ServiceBuilder::new()
.layer(endpoint_resolver)
.layer(user_agent)
.layer(credential_provider)
.layer(signer)
.layer(recursion_detection)
}
impl<S> tower::Layer<S> for AwsMiddleware {
type Service = <AwsMiddlewareStack as tower::Layer<S>>::Service;
fn layer(&self, inner: S) -> Self::Service {
base().service(inner)
}
}
Using a Client
Once you have a client set up, you can access the service’s endpoints
by calling the appropriate method on Client
. Each such method
returns a request builder for that endpoint, with methods for setting
the various fields of the request. Once your request is complete, use
the send
method to send the request. send
returns a future, which
you then have to .await
to get the service’s response.
Implementations
sourceimpl<C, M, R> Client<C, M, R> where
C: SmithyConnector,
M: SmithyMiddleware<C>,
R: NewRequestPolicy,
impl<C, M, R> Client<C, M, R> where
C: SmithyConnector,
M: SmithyMiddleware<C>,
R: NewRequestPolicy,
sourcepub fn create_party(&self) -> CreateParty<C, M, R>
pub fn create_party(&self) -> CreateParty<C, M, R>
Constructs a fluent builder for the CreateParty
operation.
- The fluent builder is configurable:
party_size(i32)
/set_party_size(Option<i32>)
: How many members can join the party. If using this party with the matchmaker, this number should be less than or equal to your party player limit. Super large parties may not be able to fit insite a lobby and be unable to join the game.publicity(CreatePartyPublicityConfig)
/set_publicity(Option<CreatePartyPublicityConfig>)
: Publicity configuration for creating a party. Null values will defaultinvites(Vec<CreatePartyInviteConfig>)
/set_invites(Option<Vec<CreatePartyInviteConfig>>)
: (undocumented)matchmaker_current_player_token(impl Into<String>)
/set_matchmaker_current_player_token(Option<String>)
: If the player is currently in the lobby, pass the token fromrivet.matchmaker#MatchmakerLobbyJoinInfoPlayer$token
. This will prevent issuing a new player token and automatically set the party state to the player’s current lobby.
- On success, responds with
CreatePartyOutput
with field(s):party_id(Option<String>)
: A universally unique identifier.invites(Option<Vec<CreatedInvite>>)
: (undocumented)
- On failure, responds with
SdkError<CreatePartyError>
sourcepub fn create_party_invite(&self) -> CreatePartyInvite<C, M, R>
pub fn create_party_invite(&self) -> CreatePartyInvite<C, M, R>
Constructs a fluent builder for the CreatePartyInvite
operation.
- The fluent builder is configurable:
alias(impl Into<String>)
/set_alias(Option<String>)
: An alias used to join a given party.
- On success, responds with
CreatePartyInviteOutput
with field(s):invite(Option<CreatedInvite>)
: Output from a created invite.
- On failure, responds with
SdkError<CreatePartyInviteError>
sourcepub fn get_party_from_invite(&self) -> GetPartyFromInvite<C, M, R>
pub fn get_party_from_invite(&self) -> GetPartyFromInvite<C, M, R>
Constructs a fluent builder for the GetPartyFromInvite
operation.
- The fluent builder is configurable:
token(impl Into<String>)
/set_token(Option<String>)
: Seerivet.api.party#CreatedInvite$token
.alias(impl Into<String>)
/set_alias(Option<String>)
: An alias used to join a given party. This alias must be unique for all invites for your game. Pass this alias torivet.api.party.common#CreatedInvite$alias
to consume the invite.
- On success, responds with
GetPartyFromInviteOutput
with field(s):party(Option<PartySummary>)
: A party summary.
- On failure, responds with
SdkError<GetPartyFromInviteError>
sourcepub fn get_party_profile(&self) -> GetPartyProfile<C, M, R>
pub fn get_party_profile(&self) -> GetPartyProfile<C, M, R>
Constructs a fluent builder for the GetPartyProfile
operation.
- The fluent builder is configurable:
party_id(impl Into<String>)
/set_party_id(Option<String>)
: A universally unique identifier.watch_index(impl Into<String>)
/set_watch_index(Option<String>)
: A query parameter denoting the requests watch index.
- On success, responds with
GetPartyProfileOutput
with field(s):party(Option<PartyProfile>)
: (undocumented)watch(Option<WatchResponse>)
: Provided by watchable endpoints used in blocking loops.
- On failure, responds with
SdkError<GetPartyProfileError>
sourcepub fn get_party_self_profile(&self) -> GetPartySelfProfile<C, M, R>
pub fn get_party_self_profile(&self) -> GetPartySelfProfile<C, M, R>
Constructs a fluent builder for the GetPartySelfProfile
operation.
- The fluent builder is configurable:
watch_index(impl Into<String>)
/set_watch_index(Option<String>)
: A query parameter denoting the requests watch index.
- On success, responds with
GetPartySelfProfileOutput
with field(s):party(Option<PartyProfile>)
: (undocumented)watch(Option<WatchResponse>)
: Provided by watchable endpoints used in blocking loops.
- On failure, responds with
SdkError<GetPartySelfProfileError>
sourcepub fn get_party_self_summary(&self) -> GetPartySelfSummary<C, M, R>
pub fn get_party_self_summary(&self) -> GetPartySelfSummary<C, M, R>
Constructs a fluent builder for the GetPartySelfSummary
operation.
- The fluent builder is configurable:
watch_index(impl Into<String>)
/set_watch_index(Option<String>)
: A query parameter denoting the requests watch index.
- On success, responds with
GetPartySelfSummaryOutput
with field(s):party(Option<PartySummary>)
: A party summary.watch(Option<WatchResponse>)
: Provided by watchable endpoints used in blocking loops.
- On failure, responds with
SdkError<GetPartySelfSummaryError>
sourcepub fn get_party_summary(&self) -> GetPartySummary<C, M, R>
pub fn get_party_summary(&self) -> GetPartySummary<C, M, R>
Constructs a fluent builder for the GetPartySummary
operation.
- The fluent builder is configurable:
party_id(impl Into<String>)
/set_party_id(Option<String>)
: A universally unique identifier.watch_index(impl Into<String>)
/set_watch_index(Option<String>)
: A query parameter denoting the requests watch index.
- On success, responds with
GetPartySummaryOutput
with field(s):party(Option<PartySummary>)
: A party summary.watch(Option<WatchResponse>)
: Provided by watchable endpoints used in blocking loops.
- On failure, responds with
SdkError<GetPartySummaryError>
sourcepub fn join_party(&self) -> JoinParty<C, M, R>
pub fn join_party(&self) -> JoinParty<C, M, R>
Constructs a fluent builder for the JoinParty
operation.
- The fluent builder is configurable:
invite(JoinPartyInvite)
/set_invite(Option<JoinPartyInvite>)
: Represents methods of joining a party.matchmaker_auto_join_lobby(bool)
/set_matchmaker_auto_join_lobby(Option<bool>)
: Whether or not to automatically join the game lobby if a party is currently in game.
- On success, responds with
JoinPartyOutput
with field(s):party_id(Option<String>)
: A universally unique identifier.
- On failure, responds with
SdkError<JoinPartyError>
sourcepub fn kick_member(&self) -> KickMember<C, M, R>
pub fn kick_member(&self) -> KickMember<C, M, R>
Constructs a fluent builder for the KickMember
operation.
- The fluent builder is configurable:
identity_id(impl Into<String>)
/set_identity_id(Option<String>)
: A universally unique identifier.
- On success, responds with
KickMemberOutput
- On failure, responds with
SdkError<KickMemberError>
sourcepub fn leave_party(&self) -> LeaveParty<C, M, R>
pub fn leave_party(&self) -> LeaveParty<C, M, R>
Constructs a fluent builder for the LeaveParty
operation.
- The fluent builder takes no input, just
send
it. - On success, responds with
LeavePartyOutput
- On failure, responds with
SdkError<LeavePartyError>
sourcepub fn revoke_party_invite(&self) -> RevokePartyInvite<C, M, R>
pub fn revoke_party_invite(&self) -> RevokePartyInvite<C, M, R>
Constructs a fluent builder for the RevokePartyInvite
operation.
- The fluent builder is configurable:
invite_id(impl Into<String>)
/set_invite_id(Option<String>)
: A universally unique identifier.
- On success, responds with
RevokePartyInviteOutput
- On failure, responds with
SdkError<RevokePartyInviteError>
sourcepub fn set_party_publicity(&self) -> SetPartyPublicity<C, M, R>
pub fn set_party_publicity(&self) -> SetPartyPublicity<C, M, R>
Constructs a fluent builder for the SetPartyPublicity
operation.
- The fluent builder is configurable:
public(PartyPublicityLevel)
/set_public(Option<PartyPublicityLevel>)
: Defaults torivet.party#PartyPublicityLevel$VIEW
.friends(PartyPublicityLevel)
/set_friends(Option<PartyPublicityLevel>)
: Defaults torivet.party#PartyPublicityLevel$JOIN
.groups(PartyPublicityLevel)
/set_groups(Option<PartyPublicityLevel>)
: Defaults torivet.party#PartyPublicityLevel$VIEW
.
- On success, responds with
SetPartyPublicityOutput
- On failure, responds with
SdkError<SetPartyPublicityError>
sourcepub fn transfer_party_ownership(&self) -> TransferPartyOwnership<C, M, R>
pub fn transfer_party_ownership(&self) -> TransferPartyOwnership<C, M, R>
Constructs a fluent builder for the TransferPartyOwnership
operation.
- The fluent builder is configurable:
identity_id(impl Into<String>)
/set_identity_id(Option<String>)
: A universally unique identifier.
- On success, responds with
TransferPartyOwnershipOutput
- On failure, responds with
SdkError<TransferPartyOwnershipError>
sourcepub fn find_matchmaker_lobby_for_party(
&self
) -> FindMatchmakerLobbyForParty<C, M, R>
pub fn find_matchmaker_lobby_for_party(
&self
) -> FindMatchmakerLobbyForParty<C, M, R>
Constructs a fluent builder for the FindMatchmakerLobbyForParty
operation.
- The fluent builder is configurable:
game_modes(Vec<String>)
/set_game_modes(Option<Vec<String>>)
: Game modes to match lobbies against.regions(Vec<String>)
/set_regions(Option<Vec<String>>)
: Regions to match lobbies against. If not specified, the optimal region will be determined and will attempt to find lobbies in that region.prevent_auto_create_lobby(bool)
/set_prevent_auto_create_lobby(Option<bool>)
: Prevents a new lobby from being created when finding a lobby. If no lobby is found,MATCHMAKER_LOBBY_NOT_FOUND
will be returned.origin(impl Into<String>)
/set_origin(Option<String>)
: (undocumented)
- On success, responds with
FindMatchmakerLobbyForPartyOutput
- On failure, responds with
SdkError<FindMatchmakerLobbyForPartyError>
sourcepub fn join_matchmaker_lobby_for_party(
&self
) -> JoinMatchmakerLobbyForParty<C, M, R>
pub fn join_matchmaker_lobby_for_party(
&self
) -> JoinMatchmakerLobbyForParty<C, M, R>
Constructs a fluent builder for the JoinMatchmakerLobbyForParty
operation.
- The fluent builder is configurable:
lobby_id(impl Into<String>)
/set_lobby_id(Option<String>)
: A universally unique identifier.
- On success, responds with
JoinMatchmakerLobbyForPartyOutput
- On failure, responds with
SdkError<JoinMatchmakerLobbyForPartyError>
sourcepub fn request_matchmaker_player(&self) -> RequestMatchmakerPlayer<C, M, R>
pub fn request_matchmaker_player(&self) -> RequestMatchmakerPlayer<C, M, R>
Constructs a fluent builder for the RequestMatchmakerPlayer
operation.
- The fluent builder takes no input, just
send
it. - On success, responds with
RequestMatchmakerPlayerOutput
- On failure, responds with
SdkError<RequestMatchmakerPlayerError>
sourcepub fn set_party_to_idle(&self) -> SetPartyToIdle<C, M, R>
pub fn set_party_to_idle(&self) -> SetPartyToIdle<C, M, R>
Constructs a fluent builder for the SetPartyToIdle
operation.
- The fluent builder takes no input, just
send
it. - On success, responds with
SetPartyToIdleOutput
- On failure, responds with
SdkError<SetPartyToIdleError>
Trait Implementations
Auto Trait Implementations
impl<C, M, R = Standard> !RefUnwindSafe for Client<C, M, R>
impl<C, M, R> Send for Client<C, M, R> where
C: Send + Sync,
M: Send + Sync,
R: Send + Sync,
impl<C, M, R> Sync for Client<C, M, R> where
C: Send + Sync,
M: Send + Sync,
R: Send + Sync,
impl<C, M, R> Unpin for Client<C, M, R>
impl<C, M, R = Standard> !UnwindSafe for Client<C, M, R>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more