#![allow(clippy::ptr_arg)]
use std::collections::{BTreeSet, HashMap};
use tokio::time::sleep;
#[derive(PartialEq, Eq, Ord, PartialOrd, Hash, Debug, Clone, Copy)]
pub enum Scope {
Androidpublisher,
DriveAppdata,
Full,
}
impl AsRef<str> for Scope {
fn as_ref(&self) -> &str {
match *self {
Scope::Androidpublisher => "https://www.googleapis.com/auth/androidpublisher",
Scope::DriveAppdata => "https://www.googleapis.com/auth/drive.appdata",
Scope::Full => "https://www.googleapis.com/auth/games",
}
}
}
#[allow(clippy::derivable_impls)]
impl Default for Scope {
fn default() -> Scope {
Scope::Full
}
}
#[derive(Clone)]
pub struct Games<C> {
pub client: common::Client<C>,
pub auth: Box<dyn common::GetToken>,
_user_agent: String,
_base_url: String,
_root_url: String,
}
impl<C> common::Hub for Games<C> {}
impl<'a, C> Games<C> {
pub fn new<A: 'static + common::GetToken>(client: common::Client<C>, auth: A) -> Games<C> {
Games {
client,
auth: Box::new(auth),
_user_agent: "google-api-rust-client/7.0.0".to_string(),
_base_url: "https://games.googleapis.com/".to_string(),
_root_url: "https://games.googleapis.com/".to_string(),
}
}
pub fn accesstokens(&'a self) -> AccesstokenMethods<'a, C> {
AccesstokenMethods { hub: self }
}
pub fn achievement_definitions(&'a self) -> AchievementDefinitionMethods<'a, C> {
AchievementDefinitionMethods { hub: self }
}
pub fn achievements(&'a self) -> AchievementMethods<'a, C> {
AchievementMethods { hub: self }
}
pub fn applications(&'a self) -> ApplicationMethods<'a, C> {
ApplicationMethods { hub: self }
}
pub fn events(&'a self) -> EventMethods<'a, C> {
EventMethods { hub: self }
}
pub fn leaderboards(&'a self) -> LeaderboardMethods<'a, C> {
LeaderboardMethods { hub: self }
}
pub fn metagame(&'a self) -> MetagameMethods<'a, C> {
MetagameMethods { hub: self }
}
pub fn players(&'a self) -> PlayerMethods<'a, C> {
PlayerMethods { hub: self }
}
pub fn recall(&'a self) -> RecallMethods<'a, C> {
RecallMethods { hub: self }
}
pub fn revisions(&'a self) -> RevisionMethods<'a, C> {
RevisionMethods { hub: self }
}
pub fn scores(&'a self) -> ScoreMethods<'a, C> {
ScoreMethods { hub: self }
}
pub fn snapshots(&'a self) -> SnapshotMethods<'a, C> {
SnapshotMethods { hub: self }
}
pub fn stats(&'a self) -> StatMethods<'a, C> {
StatMethods { hub: self }
}
pub fn user_agent(&mut self, agent_name: String) -> String {
std::mem::replace(&mut self._user_agent, agent_name)
}
pub fn base_url(&mut self, new_base_url: String) -> String {
std::mem::replace(&mut self._base_url, new_base_url)
}
pub fn root_url(&mut self, new_root_url: String) -> String {
std::mem::replace(&mut self._root_url, new_root_url)
}
}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AchievementDefinition {
#[serde(rename = "achievementType")]
pub achievement_type: Option<String>,
pub description: Option<String>,
#[serde(rename = "experiencePoints")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub experience_points: Option<i64>,
#[serde(rename = "formattedTotalSteps")]
pub formatted_total_steps: Option<String>,
pub id: Option<String>,
#[serde(rename = "initialState")]
pub initial_state: Option<String>,
#[serde(rename = "isRevealedIconUrlDefault")]
pub is_revealed_icon_url_default: Option<bool>,
#[serde(rename = "isUnlockedIconUrlDefault")]
pub is_unlocked_icon_url_default: Option<bool>,
pub kind: Option<String>,
pub name: Option<String>,
#[serde(rename = "revealedIconUrl")]
pub revealed_icon_url: Option<String>,
#[serde(rename = "totalSteps")]
pub total_steps: Option<i32>,
#[serde(rename = "unlockedIconUrl")]
pub unlocked_icon_url: Option<String>,
}
impl common::Resource for AchievementDefinition {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AchievementDefinitionsListResponse {
pub items: Option<Vec<AchievementDefinition>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
}
impl common::ResponseResult for AchievementDefinitionsListResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AchievementIncrementResponse {
#[serde(rename = "currentSteps")]
pub current_steps: Option<i32>,
pub kind: Option<String>,
#[serde(rename = "newlyUnlocked")]
pub newly_unlocked: Option<bool>,
}
impl common::ResponseResult for AchievementIncrementResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AchievementRevealResponse {
#[serde(rename = "currentState")]
pub current_state: Option<String>,
pub kind: Option<String>,
}
impl common::ResponseResult for AchievementRevealResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AchievementSetStepsAtLeastResponse {
#[serde(rename = "currentSteps")]
pub current_steps: Option<i32>,
pub kind: Option<String>,
#[serde(rename = "newlyUnlocked")]
pub newly_unlocked: Option<bool>,
}
impl common::ResponseResult for AchievementSetStepsAtLeastResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AchievementUnlockResponse {
pub kind: Option<String>,
#[serde(rename = "newlyUnlocked")]
pub newly_unlocked: Option<bool>,
}
impl common::ResponseResult for AchievementUnlockResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AchievementUpdateMultipleRequest {
pub kind: Option<String>,
pub updates: Option<Vec<AchievementUpdateRequest>>,
}
impl common::RequestValue for AchievementUpdateMultipleRequest {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AchievementUpdateMultipleResponse {
pub kind: Option<String>,
#[serde(rename = "updatedAchievements")]
pub updated_achievements: Option<Vec<AchievementUpdateResponse>>,
}
impl common::ResponseResult for AchievementUpdateMultipleResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AchievementUpdateRequest {
#[serde(rename = "achievementId")]
pub achievement_id: Option<String>,
#[serde(rename = "incrementPayload")]
pub increment_payload: Option<GamesAchievementIncrement>,
pub kind: Option<String>,
#[serde(rename = "setStepsAtLeastPayload")]
pub set_steps_at_least_payload: Option<GamesAchievementSetStepsAtLeast>,
#[serde(rename = "updateType")]
pub update_type: Option<String>,
}
impl common::Part for AchievementUpdateRequest {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AchievementUpdateResponse {
#[serde(rename = "achievementId")]
pub achievement_id: Option<String>,
#[serde(rename = "currentState")]
pub current_state: Option<String>,
#[serde(rename = "currentSteps")]
pub current_steps: Option<i32>,
pub kind: Option<String>,
#[serde(rename = "newlyUnlocked")]
pub newly_unlocked: Option<bool>,
#[serde(rename = "updateOccurred")]
pub update_occurred: Option<bool>,
}
impl common::Part for AchievementUpdateResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Application {
pub achievement_count: Option<i32>,
pub assets: Option<Vec<ImageAsset>>,
pub author: Option<String>,
pub category: Option<ApplicationCategory>,
pub description: Option<String>,
#[serde(rename = "enabledFeatures")]
pub enabled_features: Option<Vec<String>>,
pub id: Option<String>,
pub instances: Option<Vec<Instance>>,
pub kind: Option<String>,
#[serde(rename = "lastUpdatedTimestamp")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub last_updated_timestamp: Option<i64>,
pub leaderboard_count: Option<i32>,
pub name: Option<String>,
#[serde(rename = "themeColor")]
pub theme_color: Option<String>,
}
impl common::Resource for Application {}
impl common::ResponseResult for Application {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ApplicationCategory {
pub kind: Option<String>,
pub primary: Option<String>,
pub secondary: Option<String>,
}
impl common::Part for ApplicationCategory {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ApplicationPlayerId {
#[serde(rename = "applicationId")]
pub application_id: Option<String>,
#[serde(rename = "playerId")]
pub player_id: Option<String>,
}
impl common::Part for ApplicationPlayerId {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ApplicationVerifyResponse {
pub alternate_player_id: Option<String>,
pub kind: Option<String>,
pub player_id: Option<String>,
}
impl common::ResponseResult for ApplicationVerifyResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Category {
pub category: Option<String>,
#[serde(rename = "experiencePoints")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub experience_points: Option<i64>,
pub kind: Option<String>,
}
impl common::Part for Category {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct CategoryListResponse {
pub items: Option<Vec<Category>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
}
impl common::ResponseResult for CategoryListResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct EndPoint {
pub url: Option<String>,
}
impl common::ResponseResult for EndPoint {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct EventBatchRecordFailure {
#[serde(rename = "failureCause")]
pub failure_cause: Option<String>,
pub kind: Option<String>,
pub range: Option<EventPeriodRange>,
}
impl common::Part for EventBatchRecordFailure {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct EventChild {
#[serde(rename = "childId")]
pub child_id: Option<String>,
pub kind: Option<String>,
}
impl common::Part for EventChild {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct EventDefinition {
#[serde(rename = "childEvents")]
pub child_events: Option<Vec<EventChild>>,
pub description: Option<String>,
#[serde(rename = "displayName")]
pub display_name: Option<String>,
pub id: Option<String>,
#[serde(rename = "imageUrl")]
pub image_url: Option<String>,
#[serde(rename = "isDefaultImageUrl")]
pub is_default_image_url: Option<bool>,
pub kind: Option<String>,
pub visibility: Option<String>,
}
impl common::Part for EventDefinition {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct EventDefinitionListResponse {
pub items: Option<Vec<EventDefinition>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
}
impl common::ResponseResult for EventDefinitionListResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct EventPeriodRange {
pub kind: Option<String>,
#[serde(rename = "periodEndMillis")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub period_end_millis: Option<i64>,
#[serde(rename = "periodStartMillis")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub period_start_millis: Option<i64>,
}
impl common::Part for EventPeriodRange {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct EventPeriodUpdate {
pub kind: Option<String>,
#[serde(rename = "timePeriod")]
pub time_period: Option<EventPeriodRange>,
pub updates: Option<Vec<EventUpdateRequest>>,
}
impl common::Part for EventPeriodUpdate {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct EventRecordFailure {
#[serde(rename = "eventId")]
pub event_id: Option<String>,
#[serde(rename = "failureCause")]
pub failure_cause: Option<String>,
pub kind: Option<String>,
}
impl common::Part for EventRecordFailure {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct EventRecordRequest {
#[serde(rename = "currentTimeMillis")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub current_time_millis: Option<i64>,
pub kind: Option<String>,
#[serde(rename = "requestId")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub request_id: Option<i64>,
#[serde(rename = "timePeriods")]
pub time_periods: Option<Vec<EventPeriodUpdate>>,
}
impl common::RequestValue for EventRecordRequest {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct EventUpdateRequest {
#[serde(rename = "definitionId")]
pub definition_id: Option<String>,
pub kind: Option<String>,
#[serde(rename = "updateCount")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub update_count: Option<i64>,
}
impl common::Part for EventUpdateRequest {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct EventUpdateResponse {
#[serde(rename = "batchFailures")]
pub batch_failures: Option<Vec<EventBatchRecordFailure>>,
#[serde(rename = "eventFailures")]
pub event_failures: Option<Vec<EventRecordFailure>>,
pub kind: Option<String>,
#[serde(rename = "playerEvents")]
pub player_events: Option<Vec<PlayerEvent>>,
}
impl common::ResponseResult for EventUpdateResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct GamePlayerToken {
#[serde(rename = "applicationId")]
pub application_id: Option<String>,
#[serde(rename = "recallToken")]
pub recall_token: Option<RecallToken>,
}
impl common::Part for GamePlayerToken {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct GamesAchievementIncrement {
pub kind: Option<String>,
#[serde(rename = "requestId")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub request_id: Option<i64>,
pub steps: Option<i32>,
}
impl common::Part for GamesAchievementIncrement {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct GamesAchievementSetStepsAtLeast {
pub kind: Option<String>,
pub steps: Option<i32>,
}
impl common::Part for GamesAchievementSetStepsAtLeast {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct GeneratePlayGroupingApiTokenResponse {
pub token: Option<PlayGroupingApiToken>,
}
impl common::ResponseResult for GeneratePlayGroupingApiTokenResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct GenerateRecallPlayGroupingApiTokenResponse {
pub token: Option<PlayGroupingApiToken>,
}
impl common::ResponseResult for GenerateRecallPlayGroupingApiTokenResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct GetMultipleApplicationPlayerIdsResponse {
#[serde(rename = "playerIds")]
pub player_ids: Option<Vec<ApplicationPlayerId>>,
}
impl common::ResponseResult for GetMultipleApplicationPlayerIdsResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ImageAsset {
pub height: Option<i32>,
pub kind: Option<String>,
pub name: Option<String>,
pub url: Option<String>,
pub width: Option<i32>,
}
impl common::Part for ImageAsset {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Instance {
#[serde(rename = "acquisitionUri")]
pub acquisition_uri: Option<String>,
#[serde(rename = "androidInstance")]
pub android_instance: Option<InstanceAndroidDetails>,
#[serde(rename = "iosInstance")]
pub ios_instance: Option<InstanceIosDetails>,
pub kind: Option<String>,
pub name: Option<String>,
#[serde(rename = "platformType")]
pub platform_type: Option<String>,
#[serde(rename = "realtimePlay")]
pub realtime_play: Option<bool>,
#[serde(rename = "turnBasedPlay")]
pub turn_based_play: Option<bool>,
#[serde(rename = "webInstance")]
pub web_instance: Option<InstanceWebDetails>,
}
impl common::Part for Instance {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct InstanceAndroidDetails {
#[serde(rename = "enablePiracyCheck")]
pub enable_piracy_check: Option<bool>,
pub kind: Option<String>,
#[serde(rename = "packageName")]
pub package_name: Option<String>,
pub preferred: Option<bool>,
}
impl common::Part for InstanceAndroidDetails {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct InstanceIosDetails {
#[serde(rename = "bundleIdentifier")]
pub bundle_identifier: Option<String>,
#[serde(rename = "itunesAppId")]
pub itunes_app_id: Option<String>,
pub kind: Option<String>,
#[serde(rename = "preferredForIpad")]
pub preferred_for_ipad: Option<bool>,
#[serde(rename = "preferredForIphone")]
pub preferred_for_iphone: Option<bool>,
#[serde(rename = "supportIpad")]
pub support_ipad: Option<bool>,
#[serde(rename = "supportIphone")]
pub support_iphone: Option<bool>,
}
impl common::Part for InstanceIosDetails {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct InstanceWebDetails {
pub kind: Option<String>,
#[serde(rename = "launchUrl")]
pub launch_url: Option<String>,
pub preferred: Option<bool>,
}
impl common::Part for InstanceWebDetails {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Leaderboard {
#[serde(rename = "iconUrl")]
pub icon_url: Option<String>,
pub id: Option<String>,
#[serde(rename = "isIconUrlDefault")]
pub is_icon_url_default: Option<bool>,
pub kind: Option<String>,
pub name: Option<String>,
pub order: Option<String>,
}
impl common::Resource for Leaderboard {}
impl common::ResponseResult for Leaderboard {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct LeaderboardEntry {
#[serde(rename = "formattedScore")]
pub formatted_score: Option<String>,
#[serde(rename = "formattedScoreRank")]
pub formatted_score_rank: Option<String>,
pub kind: Option<String>,
pub player: Option<Player>,
#[serde(rename = "scoreRank")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub score_rank: Option<i64>,
#[serde(rename = "scoreTag")]
pub score_tag: Option<String>,
#[serde(rename = "scoreValue")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub score_value: Option<i64>,
#[serde(rename = "timeSpan")]
pub time_span: Option<String>,
#[serde(rename = "writeTimestampMillis")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub write_timestamp_millis: Option<i64>,
}
impl common::Part for LeaderboardEntry {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct LeaderboardListResponse {
pub items: Option<Vec<Leaderboard>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
}
impl common::ResponseResult for LeaderboardListResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct LeaderboardScoreRank {
#[serde(rename = "formattedNumScores")]
pub formatted_num_scores: Option<String>,
#[serde(rename = "formattedRank")]
pub formatted_rank: Option<String>,
pub kind: Option<String>,
#[serde(rename = "numScores")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub num_scores: Option<i64>,
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub rank: Option<i64>,
}
impl common::Part for LeaderboardScoreRank {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct LeaderboardScores {
pub items: Option<Vec<LeaderboardEntry>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
#[serde(rename = "numScores")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub num_scores: Option<i64>,
#[serde(rename = "playerScore")]
pub player_score: Option<LeaderboardEntry>,
#[serde(rename = "prevPageToken")]
pub prev_page_token: Option<String>,
}
impl common::ResponseResult for LeaderboardScores {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct LinkPersonaRequest {
#[serde(rename = "cardinalityConstraint")]
pub cardinality_constraint: Option<String>,
#[serde(rename = "conflictingLinksResolutionPolicy")]
pub conflicting_links_resolution_policy: Option<String>,
#[serde(rename = "expireTime")]
pub expire_time: Option<chrono::DateTime<chrono::offset::Utc>>,
pub persona: Option<String>,
#[serde(rename = "sessionId")]
pub session_id: Option<String>,
pub token: Option<String>,
#[serde_as(as = "Option<common::serde::duration::Wrapper>")]
pub ttl: Option<chrono::Duration>,
}
impl common::RequestValue for LinkPersonaRequest {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct LinkPersonaResponse {
pub state: Option<String>,
}
impl common::ResponseResult for LinkPersonaResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct MetagameConfig {
#[serde(rename = "currentVersion")]
pub current_version: Option<i32>,
pub kind: Option<String>,
#[serde(rename = "playerLevels")]
pub player_levels: Option<Vec<PlayerLevel>>,
}
impl common::ResponseResult for MetagameConfig {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayGroupingApiToken {
#[serde(rename = "tokenValue")]
pub token_value: Option<String>,
}
impl common::Part for PlayGroupingApiToken {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Player {
#[serde(rename = "avatarImageUrl")]
pub avatar_image_url: Option<String>,
#[serde(rename = "bannerUrlLandscape")]
pub banner_url_landscape: Option<String>,
#[serde(rename = "bannerUrlPortrait")]
pub banner_url_portrait: Option<String>,
#[serde(rename = "displayName")]
pub display_name: Option<String>,
#[serde(rename = "experienceInfo")]
pub experience_info: Option<PlayerExperienceInfo>,
#[serde(rename = "friendStatus")]
pub friend_status: Option<String>,
#[serde(rename = "gamePlayerId")]
pub game_player_id: Option<String>,
pub kind: Option<String>,
pub name: Option<PlayerName>,
#[serde(rename = "originalPlayerId")]
pub original_player_id: Option<String>,
#[serde(rename = "playerId")]
pub player_id: Option<String>,
#[serde(rename = "profileSettings")]
pub profile_settings: Option<ProfileSettings>,
pub title: Option<String>,
}
impl common::Resource for Player {}
impl common::ResponseResult for Player {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerAchievement {
#[serde(rename = "achievementState")]
pub achievement_state: Option<String>,
#[serde(rename = "currentSteps")]
pub current_steps: Option<i32>,
#[serde(rename = "experiencePoints")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub experience_points: Option<i64>,
#[serde(rename = "formattedCurrentStepsString")]
pub formatted_current_steps_string: Option<String>,
pub id: Option<String>,
pub kind: Option<String>,
#[serde(rename = "lastUpdatedTimestamp")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub last_updated_timestamp: Option<i64>,
}
impl common::Part for PlayerAchievement {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerAchievementListResponse {
pub items: Option<Vec<PlayerAchievement>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
}
impl common::ResponseResult for PlayerAchievementListResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerEvent {
#[serde(rename = "definitionId")]
pub definition_id: Option<String>,
#[serde(rename = "formattedNumEvents")]
pub formatted_num_events: Option<String>,
pub kind: Option<String>,
#[serde(rename = "numEvents")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub num_events: Option<i64>,
#[serde(rename = "playerId")]
pub player_id: Option<String>,
}
impl common::Part for PlayerEvent {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerEventListResponse {
pub items: Option<Vec<PlayerEvent>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
}
impl common::ResponseResult for PlayerEventListResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerExperienceInfo {
#[serde(rename = "currentExperiencePoints")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub current_experience_points: Option<i64>,
#[serde(rename = "currentLevel")]
pub current_level: Option<PlayerLevel>,
pub kind: Option<String>,
#[serde(rename = "lastLevelUpTimestampMillis")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub last_level_up_timestamp_millis: Option<i64>,
#[serde(rename = "nextLevel")]
pub next_level: Option<PlayerLevel>,
}
impl common::Part for PlayerExperienceInfo {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerLeaderboardScore {
#[serde(rename = "friendsRank")]
pub friends_rank: Option<LeaderboardScoreRank>,
pub kind: Option<String>,
pub leaderboard_id: Option<String>,
#[serde(rename = "publicRank")]
pub public_rank: Option<LeaderboardScoreRank>,
#[serde(rename = "scoreString")]
pub score_string: Option<String>,
#[serde(rename = "scoreTag")]
pub score_tag: Option<String>,
#[serde(rename = "scoreValue")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub score_value: Option<i64>,
#[serde(rename = "socialRank")]
pub social_rank: Option<LeaderboardScoreRank>,
#[serde(rename = "timeSpan")]
pub time_span: Option<String>,
#[serde(rename = "writeTimestamp")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub write_timestamp: Option<i64>,
}
impl common::Part for PlayerLeaderboardScore {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerLeaderboardScoreListResponse {
pub items: Option<Vec<PlayerLeaderboardScore>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
pub player: Option<Player>,
}
impl common::ResponseResult for PlayerLeaderboardScoreListResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerLevel {
pub kind: Option<String>,
pub level: Option<i32>,
#[serde(rename = "maxExperiencePoints")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub max_experience_points: Option<i64>,
#[serde(rename = "minExperiencePoints")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub min_experience_points: Option<i64>,
}
impl common::Part for PlayerLevel {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerListResponse {
pub items: Option<Vec<Player>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
}
impl common::ResponseResult for PlayerListResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerScore {
#[serde(rename = "formattedScore")]
pub formatted_score: Option<String>,
pub kind: Option<String>,
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub score: Option<i64>,
#[serde(rename = "scoreTag")]
pub score_tag: Option<String>,
#[serde(rename = "timeSpan")]
pub time_span: Option<String>,
}
impl common::Part for PlayerScore {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerScoreListResponse {
pub kind: Option<String>,
#[serde(rename = "submittedScores")]
pub submitted_scores: Option<Vec<PlayerScoreResponse>>,
}
impl common::ResponseResult for PlayerScoreListResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerScoreResponse {
#[serde(rename = "beatenScoreTimeSpans")]
pub beaten_score_time_spans: Option<Vec<String>>,
#[serde(rename = "formattedScore")]
pub formatted_score: Option<String>,
pub kind: Option<String>,
#[serde(rename = "leaderboardId")]
pub leaderboard_id: Option<String>,
#[serde(rename = "scoreTag")]
pub score_tag: Option<String>,
#[serde(rename = "unbeatenScores")]
pub unbeaten_scores: Option<Vec<PlayerScore>>,
}
impl common::ResponseResult for PlayerScoreResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerScoreSubmissionList {
pub kind: Option<String>,
pub scores: Option<Vec<ScoreSubmission>>,
}
impl common::RequestValue for PlayerScoreSubmissionList {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ProfileSettings {
#[serde(rename = "friendsListVisibility")]
pub friends_list_visibility: Option<String>,
pub kind: Option<String>,
#[serde(rename = "profileVisible")]
pub profile_visible: Option<bool>,
}
impl common::Part for ProfileSettings {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct RecallToken {
#[serde(rename = "expireTime")]
pub expire_time: Option<chrono::DateTime<chrono::offset::Utc>>,
#[serde(rename = "multiPlayerPersona")]
pub multi_player_persona: Option<bool>,
pub token: Option<String>,
}
impl common::Part for RecallToken {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ResetPersonaRequest {
pub persona: Option<String>,
}
impl common::RequestValue for ResetPersonaRequest {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ResetPersonaResponse {
pub unlinked: Option<bool>,
}
impl common::ResponseResult for ResetPersonaResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct RetrieveDeveloperGamesLastPlayerTokenResponse {
#[serde(rename = "gamePlayerToken")]
pub game_player_token: Option<GamePlayerToken>,
}
impl common::ResponseResult for RetrieveDeveloperGamesLastPlayerTokenResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct RetrieveGamesPlayerTokensResponse {
#[serde(rename = "gamePlayerTokens")]
pub game_player_tokens: Option<Vec<GamePlayerToken>>,
}
impl common::ResponseResult for RetrieveGamesPlayerTokensResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct RetrievePlayerTokensResponse {
pub tokens: Option<Vec<RecallToken>>,
}
impl common::ResponseResult for RetrievePlayerTokensResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct RevisionCheckResponse {
#[serde(rename = "apiVersion")]
pub api_version: Option<String>,
pub kind: Option<String>,
#[serde(rename = "revisionStatus")]
pub revision_status: Option<String>,
}
impl common::ResponseResult for RevisionCheckResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ScopedPlayerIds {
#[serde(rename = "developerPlayerKey")]
pub developer_player_key: Option<String>,
#[serde(rename = "gamePlayerId")]
pub game_player_id: Option<String>,
}
impl common::ResponseResult for ScopedPlayerIds {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ScoreSubmission {
pub kind: Option<String>,
#[serde(rename = "leaderboardId")]
pub leaderboard_id: Option<String>,
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub score: Option<i64>,
#[serde(rename = "scoreTag")]
pub score_tag: Option<String>,
pub signature: Option<String>,
}
impl common::Part for ScoreSubmission {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Snapshot {
#[serde(rename = "coverImage")]
pub cover_image: Option<SnapshotImage>,
pub description: Option<String>,
#[serde(rename = "driveId")]
pub drive_id: Option<String>,
#[serde(rename = "durationMillis")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub duration_millis: Option<i64>,
pub id: Option<String>,
pub kind: Option<String>,
#[serde(rename = "lastModifiedMillis")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub last_modified_millis: Option<i64>,
#[serde(rename = "progressValue")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub progress_value: Option<i64>,
pub title: Option<String>,
#[serde(rename = "type")]
pub type_: Option<String>,
#[serde(rename = "uniqueName")]
pub unique_name: Option<String>,
}
impl common::Resource for Snapshot {}
impl common::ResponseResult for Snapshot {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct SnapshotImage {
pub height: Option<i32>,
pub kind: Option<String>,
pub mime_type: Option<String>,
pub url: Option<String>,
pub width: Option<i32>,
}
impl common::Part for SnapshotImage {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct SnapshotListResponse {
pub items: Option<Vec<Snapshot>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
}
impl common::ResponseResult for SnapshotListResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct StatsResponse {
pub avg_session_length_minutes: Option<f32>,
pub churn_probability: Option<f32>,
pub days_since_last_played: Option<i32>,
pub high_spender_probability: Option<f32>,
pub kind: Option<String>,
pub num_purchases: Option<i32>,
pub num_sessions: Option<i32>,
pub num_sessions_percentile: Option<f32>,
pub spend_percentile: Option<f32>,
pub spend_probability: Option<f32>,
pub total_spend_next_28_days: Option<f32>,
}
impl common::ResponseResult for StatsResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct UnlinkPersonaRequest {
pub persona: Option<String>,
#[serde(rename = "sessionId")]
pub session_id: Option<String>,
pub token: Option<String>,
}
impl common::RequestValue for UnlinkPersonaRequest {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct UnlinkPersonaResponse {
pub unlinked: Option<bool>,
}
impl common::ResponseResult for UnlinkPersonaResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PlayerName {
#[serde(rename = "familyName")]
pub family_name: Option<String>,
#[serde(rename = "givenName")]
pub given_name: Option<String>,
}
impl common::NestedType for PlayerName {}
impl common::Part for PlayerName {}
pub struct AccesstokenMethods<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
}
impl<'a, C> common::MethodsBuilder for AccesstokenMethods<'a, C> {}
impl<'a, C> AccesstokenMethods<'a, C> {
pub fn generate_play_grouping_api_token(
&self,
) -> AccesstokenGeneratePlayGroupingApiTokenCall<'a, C> {
AccesstokenGeneratePlayGroupingApiTokenCall {
hub: self.hub,
_persona: Default::default(),
_package_name: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn generate_recall_play_grouping_api_token(
&self,
) -> AccesstokenGenerateRecallPlayGroupingApiTokenCall<'a, C> {
AccesstokenGenerateRecallPlayGroupingApiTokenCall {
hub: self.hub,
_recall_session_id: Default::default(),
_persona: Default::default(),
_package_name: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct AchievementDefinitionMethods<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
}
impl<'a, C> common::MethodsBuilder for AchievementDefinitionMethods<'a, C> {}
impl<'a, C> AchievementDefinitionMethods<'a, C> {
pub fn list(&self) -> AchievementDefinitionListCall<'a, C> {
AchievementDefinitionListCall {
hub: self.hub,
_page_token: Default::default(),
_max_results: Default::default(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct AchievementMethods<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
}
impl<'a, C> common::MethodsBuilder for AchievementMethods<'a, C> {}
impl<'a, C> AchievementMethods<'a, C> {
pub fn increment(
&self,
achievement_id: &str,
steps_to_increment: i32,
) -> AchievementIncrementCall<'a, C> {
AchievementIncrementCall {
hub: self.hub,
_achievement_id: achievement_id.to_string(),
_steps_to_increment: steps_to_increment,
_request_id: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list(&self, player_id: &str) -> AchievementListCall<'a, C> {
AchievementListCall {
hub: self.hub,
_player_id: player_id.to_string(),
_state: Default::default(),
_page_token: Default::default(),
_max_results: Default::default(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn reveal(&self, achievement_id: &str) -> AchievementRevealCall<'a, C> {
AchievementRevealCall {
hub: self.hub,
_achievement_id: achievement_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn set_steps_at_least(
&self,
achievement_id: &str,
steps: i32,
) -> AchievementSetStepsAtLeastCall<'a, C> {
AchievementSetStepsAtLeastCall {
hub: self.hub,
_achievement_id: achievement_id.to_string(),
_steps: steps,
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn unlock(&self, achievement_id: &str) -> AchievementUnlockCall<'a, C> {
AchievementUnlockCall {
hub: self.hub,
_achievement_id: achievement_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn update_multiple(
&self,
request: AchievementUpdateMultipleRequest,
) -> AchievementUpdateMultipleCall<'a, C> {
AchievementUpdateMultipleCall {
hub: self.hub,
_request: request,
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct ApplicationMethods<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
}
impl<'a, C> common::MethodsBuilder for ApplicationMethods<'a, C> {}
impl<'a, C> ApplicationMethods<'a, C> {
pub fn get(&self, application_id: &str) -> ApplicationGetCall<'a, C> {
ApplicationGetCall {
hub: self.hub,
_application_id: application_id.to_string(),
_platform_type: Default::default(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn get_end_point(&self) -> ApplicationGetEndPointCall<'a, C> {
ApplicationGetEndPointCall {
hub: self.hub,
_end_point_type: Default::default(),
_application_id: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn played(&self) -> ApplicationPlayedCall<'a, C> {
ApplicationPlayedCall {
hub: self.hub,
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn verify(&self, application_id: &str) -> ApplicationVerifyCall<'a, C> {
ApplicationVerifyCall {
hub: self.hub,
_application_id: application_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct EventMethods<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
}
impl<'a, C> common::MethodsBuilder for EventMethods<'a, C> {}
impl<'a, C> EventMethods<'a, C> {
pub fn list_by_player(&self) -> EventListByPlayerCall<'a, C> {
EventListByPlayerCall {
hub: self.hub,
_page_token: Default::default(),
_max_results: Default::default(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list_definitions(&self) -> EventListDefinitionCall<'a, C> {
EventListDefinitionCall {
hub: self.hub,
_page_token: Default::default(),
_max_results: Default::default(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn record(&self, request: EventRecordRequest) -> EventRecordCall<'a, C> {
EventRecordCall {
hub: self.hub,
_request: request,
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct LeaderboardMethods<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
}
impl<'a, C> common::MethodsBuilder for LeaderboardMethods<'a, C> {}
impl<'a, C> LeaderboardMethods<'a, C> {
pub fn get(&self, leaderboard_id: &str) -> LeaderboardGetCall<'a, C> {
LeaderboardGetCall {
hub: self.hub,
_leaderboard_id: leaderboard_id.to_string(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list(&self) -> LeaderboardListCall<'a, C> {
LeaderboardListCall {
hub: self.hub,
_page_token: Default::default(),
_max_results: Default::default(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct MetagameMethods<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
}
impl<'a, C> common::MethodsBuilder for MetagameMethods<'a, C> {}
impl<'a, C> MetagameMethods<'a, C> {
pub fn get_metagame_config(&self) -> MetagameGetMetagameConfigCall<'a, C> {
MetagameGetMetagameConfigCall {
hub: self.hub,
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list_categories_by_player(
&self,
player_id: &str,
collection: &str,
) -> MetagameListCategoriesByPlayerCall<'a, C> {
MetagameListCategoriesByPlayerCall {
hub: self.hub,
_player_id: player_id.to_string(),
_collection: collection.to_string(),
_page_token: Default::default(),
_max_results: Default::default(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct PlayerMethods<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
}
impl<'a, C> common::MethodsBuilder for PlayerMethods<'a, C> {}
impl<'a, C> PlayerMethods<'a, C> {
pub fn get(&self, player_id: &str) -> PlayerGetCall<'a, C> {
PlayerGetCall {
hub: self.hub,
_player_id: player_id.to_string(),
_player_id_consistency_token: Default::default(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn get_multiple_application_player_ids(
&self,
) -> PlayerGetMultipleApplicationPlayerIdCall<'a, C> {
PlayerGetMultipleApplicationPlayerIdCall {
hub: self.hub,
_application_ids: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn get_scoped_player_ids(&self) -> PlayerGetScopedPlayerIdCall<'a, C> {
PlayerGetScopedPlayerIdCall {
hub: self.hub,
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list(&self, collection: &str) -> PlayerListCall<'a, C> {
PlayerListCall {
hub: self.hub,
_collection: collection.to_string(),
_page_token: Default::default(),
_max_results: Default::default(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct RecallMethods<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
}
impl<'a, C> common::MethodsBuilder for RecallMethods<'a, C> {}
impl<'a, C> RecallMethods<'a, C> {
pub fn games_player_tokens(&self, session_id: &str) -> RecallGamesPlayerTokenCall<'a, C> {
RecallGamesPlayerTokenCall {
hub: self.hub,
_session_id: session_id.to_string(),
_application_ids: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn last_token_from_all_developer_games(
&self,
session_id: &str,
) -> RecallLastTokenFromAllDeveloperGameCall<'a, C> {
RecallLastTokenFromAllDeveloperGameCall {
hub: self.hub,
_session_id: session_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn link_persona(&self, request: LinkPersonaRequest) -> RecallLinkPersonaCall<'a, C> {
RecallLinkPersonaCall {
hub: self.hub,
_request: request,
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn reset_persona(&self, request: ResetPersonaRequest) -> RecallResetPersonaCall<'a, C> {
RecallResetPersonaCall {
hub: self.hub,
_request: request,
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn retrieve_tokens(&self, session_id: &str) -> RecallRetrieveTokenCall<'a, C> {
RecallRetrieveTokenCall {
hub: self.hub,
_session_id: session_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn unlink_persona(&self, request: UnlinkPersonaRequest) -> RecallUnlinkPersonaCall<'a, C> {
RecallUnlinkPersonaCall {
hub: self.hub,
_request: request,
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct RevisionMethods<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
}
impl<'a, C> common::MethodsBuilder for RevisionMethods<'a, C> {}
impl<'a, C> RevisionMethods<'a, C> {
pub fn check(&self, client_revision: &str) -> RevisionCheckCall<'a, C> {
RevisionCheckCall {
hub: self.hub,
_client_revision: client_revision.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct ScoreMethods<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
}
impl<'a, C> common::MethodsBuilder for ScoreMethods<'a, C> {}
impl<'a, C> ScoreMethods<'a, C> {
pub fn get(
&self,
player_id: &str,
leaderboard_id: &str,
time_span: &str,
) -> ScoreGetCall<'a, C> {
ScoreGetCall {
hub: self.hub,
_player_id: player_id.to_string(),
_leaderboard_id: leaderboard_id.to_string(),
_time_span: time_span.to_string(),
_page_token: Default::default(),
_max_results: Default::default(),
_language: Default::default(),
_include_rank_type: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list(
&self,
leaderboard_id: &str,
collection: &str,
time_span: &str,
) -> ScoreListCall<'a, C> {
ScoreListCall {
hub: self.hub,
_leaderboard_id: leaderboard_id.to_string(),
_collection: collection.to_string(),
_time_span: time_span.to_string(),
_page_token: Default::default(),
_max_results: Default::default(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list_window(
&self,
leaderboard_id: &str,
collection: &str,
time_span: &str,
) -> ScoreListWindowCall<'a, C> {
ScoreListWindowCall {
hub: self.hub,
_leaderboard_id: leaderboard_id.to_string(),
_collection: collection.to_string(),
_time_span: time_span.to_string(),
_return_top_if_absent: Default::default(),
_results_above: Default::default(),
_page_token: Default::default(),
_max_results: Default::default(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn submit(&self, leaderboard_id: &str, score: i64) -> ScoreSubmitCall<'a, C> {
ScoreSubmitCall {
hub: self.hub,
_leaderboard_id: leaderboard_id.to_string(),
_score: score,
_score_tag: Default::default(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn submit_multiple(
&self,
request: PlayerScoreSubmissionList,
) -> ScoreSubmitMultipleCall<'a, C> {
ScoreSubmitMultipleCall {
hub: self.hub,
_request: request,
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct SnapshotMethods<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
}
impl<'a, C> common::MethodsBuilder for SnapshotMethods<'a, C> {}
impl<'a, C> SnapshotMethods<'a, C> {
pub fn get(&self, snapshot_id: &str) -> SnapshotGetCall<'a, C> {
SnapshotGetCall {
hub: self.hub,
_snapshot_id: snapshot_id.to_string(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list(&self, player_id: &str) -> SnapshotListCall<'a, C> {
SnapshotListCall {
hub: self.hub,
_player_id: player_id.to_string(),
_page_token: Default::default(),
_max_results: Default::default(),
_language: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct StatMethods<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
}
impl<'a, C> common::MethodsBuilder for StatMethods<'a, C> {}
impl<'a, C> StatMethods<'a, C> {
pub fn get(&self) -> StatGetCall<'a, C> {
StatGetCall {
hub: self.hub,
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct AccesstokenGeneratePlayGroupingApiTokenCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_persona: Option<String>,
_package_name: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for AccesstokenGeneratePlayGroupingApiTokenCall<'a, C> {}
impl<'a, C> AccesstokenGeneratePlayGroupingApiTokenCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(
mut self,
) -> common::Result<(common::Response, GeneratePlayGroupingApiTokenResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.accesstokens.generatePlayGroupingApiToken",
http_method: hyper::Method::POST,
});
for &field in ["alt", "persona", "packageName"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(4 + self._additional_params.len());
if let Some(value) = self._persona.as_ref() {
params.push("persona", value);
}
if let Some(value) = self._package_name.as_ref() {
params.push("packageName", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url =
self.hub._base_url.clone() + "games/v1/accesstokens/generatePlayGroupingApiToken";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn persona(
mut self,
new_value: &str,
) -> AccesstokenGeneratePlayGroupingApiTokenCall<'a, C> {
self._persona = Some(new_value.to_string());
self
}
pub fn package_name(
mut self,
new_value: &str,
) -> AccesstokenGeneratePlayGroupingApiTokenCall<'a, C> {
self._package_name = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> AccesstokenGeneratePlayGroupingApiTokenCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(
mut self,
name: T,
value: T,
) -> AccesstokenGeneratePlayGroupingApiTokenCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> AccesstokenGeneratePlayGroupingApiTokenCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(
mut self,
scopes: I,
) -> AccesstokenGeneratePlayGroupingApiTokenCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> AccesstokenGeneratePlayGroupingApiTokenCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct AccesstokenGenerateRecallPlayGroupingApiTokenCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_recall_session_id: Option<String>,
_persona: Option<String>,
_package_name: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for AccesstokenGenerateRecallPlayGroupingApiTokenCall<'a, C> {}
impl<'a, C> AccesstokenGenerateRecallPlayGroupingApiTokenCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(
mut self,
) -> common::Result<(common::Response, GenerateRecallPlayGroupingApiTokenResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.accesstokens.generateRecallPlayGroupingApiToken",
http_method: hyper::Method::POST,
});
for &field in ["alt", "recallSessionId", "persona", "packageName"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(5 + self._additional_params.len());
if let Some(value) = self._recall_session_id.as_ref() {
params.push("recallSessionId", value);
}
if let Some(value) = self._persona.as_ref() {
params.push("persona", value);
}
if let Some(value) = self._package_name.as_ref() {
params.push("packageName", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url =
self.hub._base_url.clone() + "games/v1/accesstokens/generateRecallPlayGroupingApiToken";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::Androidpublisher.as_ref().to_string());
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn recall_session_id(
mut self,
new_value: &str,
) -> AccesstokenGenerateRecallPlayGroupingApiTokenCall<'a, C> {
self._recall_session_id = Some(new_value.to_string());
self
}
pub fn persona(
mut self,
new_value: &str,
) -> AccesstokenGenerateRecallPlayGroupingApiTokenCall<'a, C> {
self._persona = Some(new_value.to_string());
self
}
pub fn package_name(
mut self,
new_value: &str,
) -> AccesstokenGenerateRecallPlayGroupingApiTokenCall<'a, C> {
self._package_name = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> AccesstokenGenerateRecallPlayGroupingApiTokenCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(
mut self,
name: T,
value: T,
) -> AccesstokenGenerateRecallPlayGroupingApiTokenCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(
mut self,
scope: St,
) -> AccesstokenGenerateRecallPlayGroupingApiTokenCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(
mut self,
scopes: I,
) -> AccesstokenGenerateRecallPlayGroupingApiTokenCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> AccesstokenGenerateRecallPlayGroupingApiTokenCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct AchievementDefinitionListCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_page_token: Option<String>,
_max_results: Option<i32>,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for AchievementDefinitionListCall<'a, C> {}
impl<'a, C> AchievementDefinitionListCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(
mut self,
) -> common::Result<(common::Response, AchievementDefinitionsListResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.achievementDefinitions.list",
http_method: hyper::Method::GET,
});
for &field in ["alt", "pageToken", "maxResults", "language"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(5 + self._additional_params.len());
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/achievements";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn page_token(mut self, new_value: &str) -> AchievementDefinitionListCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: i32) -> AchievementDefinitionListCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn language(mut self, new_value: &str) -> AchievementDefinitionListCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> AchievementDefinitionListCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> AchievementDefinitionListCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> AchievementDefinitionListCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> AchievementDefinitionListCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> AchievementDefinitionListCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct AchievementIncrementCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_achievement_id: String,
_steps_to_increment: i32,
_request_id: Option<i64>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for AchievementIncrementCall<'a, C> {}
impl<'a, C> AchievementIncrementCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(
mut self,
) -> common::Result<(common::Response, AchievementIncrementResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.achievements.increment",
http_method: hyper::Method::POST,
});
for &field in ["alt", "achievementId", "stepsToIncrement", "requestId"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(5 + self._additional_params.len());
params.push("achievementId", self._achievement_id);
params.push("stepsToIncrement", self._steps_to_increment.to_string());
if let Some(value) = self._request_id.as_ref() {
params.push("requestId", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url =
self.hub._base_url.clone() + "games/v1/achievements/{achievementId}/increment";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{achievementId}", "achievementId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["achievementId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn achievement_id(mut self, new_value: &str) -> AchievementIncrementCall<'a, C> {
self._achievement_id = new_value.to_string();
self
}
pub fn steps_to_increment(mut self, new_value: i32) -> AchievementIncrementCall<'a, C> {
self._steps_to_increment = new_value;
self
}
pub fn request_id(mut self, new_value: i64) -> AchievementIncrementCall<'a, C> {
self._request_id = Some(new_value);
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> AchievementIncrementCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> AchievementIncrementCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> AchievementIncrementCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> AchievementIncrementCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> AchievementIncrementCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct AchievementListCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_player_id: String,
_state: Option<String>,
_page_token: Option<String>,
_max_results: Option<i32>,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for AchievementListCall<'a, C> {}
impl<'a, C> AchievementListCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(
mut self,
) -> common::Result<(common::Response, PlayerAchievementListResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.achievements.list",
http_method: hyper::Method::GET,
});
for &field in [
"alt",
"playerId",
"state",
"pageToken",
"maxResults",
"language",
]
.iter()
{
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(7 + self._additional_params.len());
params.push("playerId", self._player_id);
if let Some(value) = self._state.as_ref() {
params.push("state", value);
}
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/players/{playerId}/achievements";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{playerId}", "playerId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["playerId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn player_id(mut self, new_value: &str) -> AchievementListCall<'a, C> {
self._player_id = new_value.to_string();
self
}
pub fn state(mut self, new_value: &str) -> AchievementListCall<'a, C> {
self._state = Some(new_value.to_string());
self
}
pub fn page_token(mut self, new_value: &str) -> AchievementListCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: i32) -> AchievementListCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn language(mut self, new_value: &str) -> AchievementListCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> AchievementListCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> AchievementListCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> AchievementListCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> AchievementListCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> AchievementListCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct AchievementRevealCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_achievement_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for AchievementRevealCall<'a, C> {}
impl<'a, C> AchievementRevealCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, AchievementRevealResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.achievements.reveal",
http_method: hyper::Method::POST,
});
for &field in ["alt", "achievementId"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(3 + self._additional_params.len());
params.push("achievementId", self._achievement_id);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/achievements/{achievementId}/reveal";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{achievementId}", "achievementId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["achievementId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn achievement_id(mut self, new_value: &str) -> AchievementRevealCall<'a, C> {
self._achievement_id = new_value.to_string();
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> AchievementRevealCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> AchievementRevealCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> AchievementRevealCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> AchievementRevealCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> AchievementRevealCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct AchievementSetStepsAtLeastCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_achievement_id: String,
_steps: i32,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for AchievementSetStepsAtLeastCall<'a, C> {}
impl<'a, C> AchievementSetStepsAtLeastCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(
mut self,
) -> common::Result<(common::Response, AchievementSetStepsAtLeastResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.achievements.setStepsAtLeast",
http_method: hyper::Method::POST,
});
for &field in ["alt", "achievementId", "steps"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(4 + self._additional_params.len());
params.push("achievementId", self._achievement_id);
params.push("steps", self._steps.to_string());
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url =
self.hub._base_url.clone() + "games/v1/achievements/{achievementId}/setStepsAtLeast";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{achievementId}", "achievementId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["achievementId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn achievement_id(mut self, new_value: &str) -> AchievementSetStepsAtLeastCall<'a, C> {
self._achievement_id = new_value.to_string();
self
}
pub fn steps(mut self, new_value: i32) -> AchievementSetStepsAtLeastCall<'a, C> {
self._steps = new_value;
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> AchievementSetStepsAtLeastCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> AchievementSetStepsAtLeastCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> AchievementSetStepsAtLeastCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> AchievementSetStepsAtLeastCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> AchievementSetStepsAtLeastCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct AchievementUnlockCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_achievement_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for AchievementUnlockCall<'a, C> {}
impl<'a, C> AchievementUnlockCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, AchievementUnlockResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.achievements.unlock",
http_method: hyper::Method::POST,
});
for &field in ["alt", "achievementId"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(3 + self._additional_params.len());
params.push("achievementId", self._achievement_id);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/achievements/{achievementId}/unlock";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{achievementId}", "achievementId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["achievementId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn achievement_id(mut self, new_value: &str) -> AchievementUnlockCall<'a, C> {
self._achievement_id = new_value.to_string();
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> AchievementUnlockCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> AchievementUnlockCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> AchievementUnlockCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> AchievementUnlockCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> AchievementUnlockCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct AchievementUpdateMultipleCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_request: AchievementUpdateMultipleRequest,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for AchievementUpdateMultipleCall<'a, C> {}
impl<'a, C> AchievementUpdateMultipleCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(
mut self,
) -> common::Result<(common::Response, AchievementUpdateMultipleResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.achievements.updateMultiple",
http_method: hyper::Method::POST,
});
for &field in ["alt"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(3 + self._additional_params.len());
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/achievements/updateMultiple";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
let mut json_mime_type = mime::APPLICATION_JSON;
let mut request_value_reader = {
let mut value = serde_json::value::to_value(&self._request).expect("serde to work");
common::remove_json_null_values(&mut value);
let mut dst = std::io::Cursor::new(Vec::with_capacity(128));
serde_json::to_writer(&mut dst, &value).unwrap();
dst
};
let request_size = request_value_reader
.seek(std::io::SeekFrom::End(0))
.unwrap();
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_TYPE, json_mime_type.to_string())
.header(CONTENT_LENGTH, request_size as u64)
.body(common::to_body(
request_value_reader.get_ref().clone().into(),
));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn request(
mut self,
new_value: AchievementUpdateMultipleRequest,
) -> AchievementUpdateMultipleCall<'a, C> {
self._request = new_value;
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> AchievementUpdateMultipleCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> AchievementUpdateMultipleCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> AchievementUpdateMultipleCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> AchievementUpdateMultipleCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> AchievementUpdateMultipleCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct ApplicationGetCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_application_id: String,
_platform_type: Option<String>,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for ApplicationGetCall<'a, C> {}
impl<'a, C> ApplicationGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Application)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.applications.get",
http_method: hyper::Method::GET,
});
for &field in ["alt", "applicationId", "platformType", "language"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(5 + self._additional_params.len());
params.push("applicationId", self._application_id);
if let Some(value) = self._platform_type.as_ref() {
params.push("platformType", value);
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/applications/{applicationId}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{applicationId}", "applicationId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["applicationId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn application_id(mut self, new_value: &str) -> ApplicationGetCall<'a, C> {
self._application_id = new_value.to_string();
self
}
pub fn platform_type(mut self, new_value: &str) -> ApplicationGetCall<'a, C> {
self._platform_type = Some(new_value.to_string());
self
}
pub fn language(mut self, new_value: &str) -> ApplicationGetCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> ApplicationGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> ApplicationGetCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> ApplicationGetCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> ApplicationGetCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> ApplicationGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct ApplicationGetEndPointCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_end_point_type: Option<String>,
_application_id: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for ApplicationGetEndPointCall<'a, C> {}
impl<'a, C> ApplicationGetEndPointCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, EndPoint)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.applications.getEndPoint",
http_method: hyper::Method::POST,
});
for &field in ["alt", "endPointType", "applicationId"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(4 + self._additional_params.len());
if let Some(value) = self._end_point_type.as_ref() {
params.push("endPointType", value);
}
if let Some(value) = self._application_id.as_ref() {
params.push("applicationId", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/applications/getEndPoint";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn end_point_type(mut self, new_value: &str) -> ApplicationGetEndPointCall<'a, C> {
self._end_point_type = Some(new_value.to_string());
self
}
pub fn application_id(mut self, new_value: &str) -> ApplicationGetEndPointCall<'a, C> {
self._application_id = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> ApplicationGetEndPointCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> ApplicationGetEndPointCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> ApplicationGetEndPointCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> ApplicationGetEndPointCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> ApplicationGetEndPointCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct ApplicationPlayedCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for ApplicationPlayedCall<'a, C> {}
impl<'a, C> ApplicationPlayedCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<common::Response> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.applications.played",
http_method: hyper::Method::POST,
});
for &field in [].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(1 + self._additional_params.len());
params.extend(self._additional_params.iter());
let mut url = self.hub._base_url.clone() + "games/v1/applications/played";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = common::Response::from_parts(parts, body);
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> ApplicationPlayedCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> ApplicationPlayedCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> ApplicationPlayedCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> ApplicationPlayedCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> ApplicationPlayedCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct ApplicationVerifyCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_application_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for ApplicationVerifyCall<'a, C> {}
impl<'a, C> ApplicationVerifyCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, ApplicationVerifyResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.applications.verify",
http_method: hyper::Method::GET,
});
for &field in ["alt", "applicationId"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(3 + self._additional_params.len());
params.push("applicationId", self._application_id);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/applications/{applicationId}/verify";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{applicationId}", "applicationId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["applicationId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn application_id(mut self, new_value: &str) -> ApplicationVerifyCall<'a, C> {
self._application_id = new_value.to_string();
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> ApplicationVerifyCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> ApplicationVerifyCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> ApplicationVerifyCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> ApplicationVerifyCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> ApplicationVerifyCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct EventListByPlayerCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_page_token: Option<String>,
_max_results: Option<i32>,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for EventListByPlayerCall<'a, C> {}
impl<'a, C> EventListByPlayerCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, PlayerEventListResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.events.listByPlayer",
http_method: hyper::Method::GET,
});
for &field in ["alt", "pageToken", "maxResults", "language"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(5 + self._additional_params.len());
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/events";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn page_token(mut self, new_value: &str) -> EventListByPlayerCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: i32) -> EventListByPlayerCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn language(mut self, new_value: &str) -> EventListByPlayerCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> EventListByPlayerCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> EventListByPlayerCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> EventListByPlayerCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> EventListByPlayerCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> EventListByPlayerCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct EventListDefinitionCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_page_token: Option<String>,
_max_results: Option<i32>,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for EventListDefinitionCall<'a, C> {}
impl<'a, C> EventListDefinitionCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, EventDefinitionListResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.events.listDefinitions",
http_method: hyper::Method::GET,
});
for &field in ["alt", "pageToken", "maxResults", "language"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(5 + self._additional_params.len());
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/eventDefinitions";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn page_token(mut self, new_value: &str) -> EventListDefinitionCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: i32) -> EventListDefinitionCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn language(mut self, new_value: &str) -> EventListDefinitionCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> EventListDefinitionCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> EventListDefinitionCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> EventListDefinitionCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> EventListDefinitionCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> EventListDefinitionCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct EventRecordCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_request: EventRecordRequest,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for EventRecordCall<'a, C> {}
impl<'a, C> EventRecordCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, EventUpdateResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.events.record",
http_method: hyper::Method::POST,
});
for &field in ["alt", "language"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(4 + self._additional_params.len());
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/events";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
let mut json_mime_type = mime::APPLICATION_JSON;
let mut request_value_reader = {
let mut value = serde_json::value::to_value(&self._request).expect("serde to work");
common::remove_json_null_values(&mut value);
let mut dst = std::io::Cursor::new(Vec::with_capacity(128));
serde_json::to_writer(&mut dst, &value).unwrap();
dst
};
let request_size = request_value_reader
.seek(std::io::SeekFrom::End(0))
.unwrap();
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_TYPE, json_mime_type.to_string())
.header(CONTENT_LENGTH, request_size as u64)
.body(common::to_body(
request_value_reader.get_ref().clone().into(),
));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn request(mut self, new_value: EventRecordRequest) -> EventRecordCall<'a, C> {
self._request = new_value;
self
}
pub fn language(mut self, new_value: &str) -> EventRecordCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> EventRecordCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> EventRecordCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> EventRecordCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> EventRecordCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> EventRecordCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct LeaderboardGetCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_leaderboard_id: String,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for LeaderboardGetCall<'a, C> {}
impl<'a, C> LeaderboardGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Leaderboard)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.leaderboards.get",
http_method: hyper::Method::GET,
});
for &field in ["alt", "leaderboardId", "language"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(4 + self._additional_params.len());
params.push("leaderboardId", self._leaderboard_id);
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/leaderboards/{leaderboardId}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{leaderboardId}", "leaderboardId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["leaderboardId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn leaderboard_id(mut self, new_value: &str) -> LeaderboardGetCall<'a, C> {
self._leaderboard_id = new_value.to_string();
self
}
pub fn language(mut self, new_value: &str) -> LeaderboardGetCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> LeaderboardGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> LeaderboardGetCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> LeaderboardGetCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> LeaderboardGetCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> LeaderboardGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct LeaderboardListCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_page_token: Option<String>,
_max_results: Option<i32>,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for LeaderboardListCall<'a, C> {}
impl<'a, C> LeaderboardListCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, LeaderboardListResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.leaderboards.list",
http_method: hyper::Method::GET,
});
for &field in ["alt", "pageToken", "maxResults", "language"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(5 + self._additional_params.len());
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/leaderboards";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn page_token(mut self, new_value: &str) -> LeaderboardListCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: i32) -> LeaderboardListCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn language(mut self, new_value: &str) -> LeaderboardListCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> LeaderboardListCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> LeaderboardListCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> LeaderboardListCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> LeaderboardListCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> LeaderboardListCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct MetagameGetMetagameConfigCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for MetagameGetMetagameConfigCall<'a, C> {}
impl<'a, C> MetagameGetMetagameConfigCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, MetagameConfig)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.metagame.getMetagameConfig",
http_method: hyper::Method::GET,
});
for &field in ["alt"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(2 + self._additional_params.len());
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/metagameConfig";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> MetagameGetMetagameConfigCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> MetagameGetMetagameConfigCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> MetagameGetMetagameConfigCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> MetagameGetMetagameConfigCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> MetagameGetMetagameConfigCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct MetagameListCategoriesByPlayerCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_player_id: String,
_collection: String,
_page_token: Option<String>,
_max_results: Option<i32>,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for MetagameListCategoriesByPlayerCall<'a, C> {}
impl<'a, C> MetagameListCategoriesByPlayerCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, CategoryListResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.metagame.listCategoriesByPlayer",
http_method: hyper::Method::GET,
});
for &field in [
"alt",
"playerId",
"collection",
"pageToken",
"maxResults",
"language",
]
.iter()
{
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(7 + self._additional_params.len());
params.push("playerId", self._player_id);
params.push("collection", self._collection);
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url =
self.hub._base_url.clone() + "games/v1/players/{playerId}/categories/{collection}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in
[("{playerId}", "playerId"), ("{collection}", "collection")].iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["collection", "playerId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn player_id(mut self, new_value: &str) -> MetagameListCategoriesByPlayerCall<'a, C> {
self._player_id = new_value.to_string();
self
}
pub fn collection(mut self, new_value: &str) -> MetagameListCategoriesByPlayerCall<'a, C> {
self._collection = new_value.to_string();
self
}
pub fn page_token(mut self, new_value: &str) -> MetagameListCategoriesByPlayerCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: i32) -> MetagameListCategoriesByPlayerCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn language(mut self, new_value: &str) -> MetagameListCategoriesByPlayerCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> MetagameListCategoriesByPlayerCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> MetagameListCategoriesByPlayerCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> MetagameListCategoriesByPlayerCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> MetagameListCategoriesByPlayerCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> MetagameListCategoriesByPlayerCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PlayerGetCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_player_id: String,
_player_id_consistency_token: Option<String>,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PlayerGetCall<'a, C> {}
impl<'a, C> PlayerGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Player)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.players.get",
http_method: hyper::Method::GET,
});
for &field in ["alt", "playerId", "playerIdConsistencyToken", "language"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(5 + self._additional_params.len());
params.push("playerId", self._player_id);
if let Some(value) = self._player_id_consistency_token.as_ref() {
params.push("playerIdConsistencyToken", value);
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/players/{playerId}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{playerId}", "playerId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["playerId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn player_id(mut self, new_value: &str) -> PlayerGetCall<'a, C> {
self._player_id = new_value.to_string();
self
}
pub fn player_id_consistency_token(mut self, new_value: &str) -> PlayerGetCall<'a, C> {
self._player_id_consistency_token = Some(new_value.to_string());
self
}
pub fn language(mut self, new_value: &str) -> PlayerGetCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PlayerGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PlayerGetCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> PlayerGetCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> PlayerGetCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> PlayerGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PlayerGetMultipleApplicationPlayerIdCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_application_ids: Vec<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PlayerGetMultipleApplicationPlayerIdCall<'a, C> {}
impl<'a, C> PlayerGetMultipleApplicationPlayerIdCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(
mut self,
) -> common::Result<(common::Response, GetMultipleApplicationPlayerIdsResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.players.getMultipleApplicationPlayerIds",
http_method: hyper::Method::GET,
});
for &field in ["alt", "applicationIds"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(3 + self._additional_params.len());
if !self._application_ids.is_empty() {
for f in self._application_ids.iter() {
params.push("applicationIds", f);
}
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url =
self.hub._base_url.clone() + "games/v1/players/me/multipleApplicationPlayerIds";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn add_application_ids(
mut self,
new_value: &str,
) -> PlayerGetMultipleApplicationPlayerIdCall<'a, C> {
self._application_ids.push(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> PlayerGetMultipleApplicationPlayerIdCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PlayerGetMultipleApplicationPlayerIdCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> PlayerGetMultipleApplicationPlayerIdCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> PlayerGetMultipleApplicationPlayerIdCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> PlayerGetMultipleApplicationPlayerIdCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PlayerGetScopedPlayerIdCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PlayerGetScopedPlayerIdCall<'a, C> {}
impl<'a, C> PlayerGetScopedPlayerIdCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, ScopedPlayerIds)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.players.getScopedPlayerIds",
http_method: hyper::Method::GET,
});
for &field in ["alt"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(2 + self._additional_params.len());
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/players/me/scopedIds";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> PlayerGetScopedPlayerIdCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PlayerGetScopedPlayerIdCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> PlayerGetScopedPlayerIdCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> PlayerGetScopedPlayerIdCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> PlayerGetScopedPlayerIdCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PlayerListCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_collection: String,
_page_token: Option<String>,
_max_results: Option<i32>,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PlayerListCall<'a, C> {}
impl<'a, C> PlayerListCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, PlayerListResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.players.list",
http_method: hyper::Method::GET,
});
for &field in ["alt", "collection", "pageToken", "maxResults", "language"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(6 + self._additional_params.len());
params.push("collection", self._collection);
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/players/me/players/{collection}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{collection}", "collection")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["collection"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn collection(mut self, new_value: &str) -> PlayerListCall<'a, C> {
self._collection = new_value.to_string();
self
}
pub fn page_token(mut self, new_value: &str) -> PlayerListCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: i32) -> PlayerListCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn language(mut self, new_value: &str) -> PlayerListCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PlayerListCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PlayerListCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> PlayerListCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> PlayerListCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> PlayerListCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct RecallGamesPlayerTokenCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_session_id: String,
_application_ids: Vec<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for RecallGamesPlayerTokenCall<'a, C> {}
impl<'a, C> RecallGamesPlayerTokenCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(
mut self,
) -> common::Result<(common::Response, RetrieveGamesPlayerTokensResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.recall.gamesPlayerTokens",
http_method: hyper::Method::GET,
});
for &field in ["alt", "sessionId", "applicationIds"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(4 + self._additional_params.len());
params.push("sessionId", self._session_id);
if !self._application_ids.is_empty() {
for f in self._application_ids.iter() {
params.push("applicationIds", f);
}
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/recall/gamesPlayerTokens/{sessionId}";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::Androidpublisher.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{sessionId}", "sessionId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["sessionId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn session_id(mut self, new_value: &str) -> RecallGamesPlayerTokenCall<'a, C> {
self._session_id = new_value.to_string();
self
}
pub fn add_application_ids(mut self, new_value: &str) -> RecallGamesPlayerTokenCall<'a, C> {
self._application_ids.push(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> RecallGamesPlayerTokenCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> RecallGamesPlayerTokenCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> RecallGamesPlayerTokenCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> RecallGamesPlayerTokenCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> RecallGamesPlayerTokenCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct RecallLastTokenFromAllDeveloperGameCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_session_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for RecallLastTokenFromAllDeveloperGameCall<'a, C> {}
impl<'a, C> RecallLastTokenFromAllDeveloperGameCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(
mut self,
) -> common::Result<(
common::Response,
RetrieveDeveloperGamesLastPlayerTokenResponse,
)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.recall.lastTokenFromAllDeveloperGames",
http_method: hyper::Method::GET,
});
for &field in ["alt", "sessionId"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(3 + self._additional_params.len());
params.push("sessionId", self._session_id);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone()
+ "games/v1/recall/developerGamesLastPlayerToken/{sessionId}";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::Androidpublisher.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{sessionId}", "sessionId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["sessionId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn session_id(mut self, new_value: &str) -> RecallLastTokenFromAllDeveloperGameCall<'a, C> {
self._session_id = new_value.to_string();
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> RecallLastTokenFromAllDeveloperGameCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> RecallLastTokenFromAllDeveloperGameCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> RecallLastTokenFromAllDeveloperGameCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> RecallLastTokenFromAllDeveloperGameCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> RecallLastTokenFromAllDeveloperGameCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct RecallLinkPersonaCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_request: LinkPersonaRequest,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for RecallLinkPersonaCall<'a, C> {}
impl<'a, C> RecallLinkPersonaCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, LinkPersonaResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.recall.linkPersona",
http_method: hyper::Method::POST,
});
for &field in ["alt"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(3 + self._additional_params.len());
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/recall:linkPersona";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::Androidpublisher.as_ref().to_string());
}
let url = params.parse_with_url(&url);
let mut json_mime_type = mime::APPLICATION_JSON;
let mut request_value_reader = {
let mut value = serde_json::value::to_value(&self._request).expect("serde to work");
common::remove_json_null_values(&mut value);
let mut dst = std::io::Cursor::new(Vec::with_capacity(128));
serde_json::to_writer(&mut dst, &value).unwrap();
dst
};
let request_size = request_value_reader
.seek(std::io::SeekFrom::End(0))
.unwrap();
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_TYPE, json_mime_type.to_string())
.header(CONTENT_LENGTH, request_size as u64)
.body(common::to_body(
request_value_reader.get_ref().clone().into(),
));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn request(mut self, new_value: LinkPersonaRequest) -> RecallLinkPersonaCall<'a, C> {
self._request = new_value;
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> RecallLinkPersonaCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> RecallLinkPersonaCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> RecallLinkPersonaCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> RecallLinkPersonaCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> RecallLinkPersonaCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct RecallResetPersonaCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_request: ResetPersonaRequest,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for RecallResetPersonaCall<'a, C> {}
impl<'a, C> RecallResetPersonaCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, ResetPersonaResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.recall.resetPersona",
http_method: hyper::Method::POST,
});
for &field in ["alt"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(3 + self._additional_params.len());
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/recall:resetPersona";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::Androidpublisher.as_ref().to_string());
}
let url = params.parse_with_url(&url);
let mut json_mime_type = mime::APPLICATION_JSON;
let mut request_value_reader = {
let mut value = serde_json::value::to_value(&self._request).expect("serde to work");
common::remove_json_null_values(&mut value);
let mut dst = std::io::Cursor::new(Vec::with_capacity(128));
serde_json::to_writer(&mut dst, &value).unwrap();
dst
};
let request_size = request_value_reader
.seek(std::io::SeekFrom::End(0))
.unwrap();
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_TYPE, json_mime_type.to_string())
.header(CONTENT_LENGTH, request_size as u64)
.body(common::to_body(
request_value_reader.get_ref().clone().into(),
));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn request(mut self, new_value: ResetPersonaRequest) -> RecallResetPersonaCall<'a, C> {
self._request = new_value;
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> RecallResetPersonaCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> RecallResetPersonaCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> RecallResetPersonaCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> RecallResetPersonaCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> RecallResetPersonaCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct RecallRetrieveTokenCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_session_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for RecallRetrieveTokenCall<'a, C> {}
impl<'a, C> RecallRetrieveTokenCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(
mut self,
) -> common::Result<(common::Response, RetrievePlayerTokensResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.recall.retrieveTokens",
http_method: hyper::Method::GET,
});
for &field in ["alt", "sessionId"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(3 + self._additional_params.len());
params.push("sessionId", self._session_id);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/recall/tokens/{sessionId}";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::Androidpublisher.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{sessionId}", "sessionId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["sessionId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn session_id(mut self, new_value: &str) -> RecallRetrieveTokenCall<'a, C> {
self._session_id = new_value.to_string();
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> RecallRetrieveTokenCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> RecallRetrieveTokenCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> RecallRetrieveTokenCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> RecallRetrieveTokenCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> RecallRetrieveTokenCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct RecallUnlinkPersonaCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_request: UnlinkPersonaRequest,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for RecallUnlinkPersonaCall<'a, C> {}
impl<'a, C> RecallUnlinkPersonaCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, UnlinkPersonaResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.recall.unlinkPersona",
http_method: hyper::Method::POST,
});
for &field in ["alt"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(3 + self._additional_params.len());
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/recall:unlinkPersona";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::Androidpublisher.as_ref().to_string());
}
let url = params.parse_with_url(&url);
let mut json_mime_type = mime::APPLICATION_JSON;
let mut request_value_reader = {
let mut value = serde_json::value::to_value(&self._request).expect("serde to work");
common::remove_json_null_values(&mut value);
let mut dst = std::io::Cursor::new(Vec::with_capacity(128));
serde_json::to_writer(&mut dst, &value).unwrap();
dst
};
let request_size = request_value_reader
.seek(std::io::SeekFrom::End(0))
.unwrap();
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_TYPE, json_mime_type.to_string())
.header(CONTENT_LENGTH, request_size as u64)
.body(common::to_body(
request_value_reader.get_ref().clone().into(),
));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn request(mut self, new_value: UnlinkPersonaRequest) -> RecallUnlinkPersonaCall<'a, C> {
self._request = new_value;
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> RecallUnlinkPersonaCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> RecallUnlinkPersonaCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> RecallUnlinkPersonaCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> RecallUnlinkPersonaCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> RecallUnlinkPersonaCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct RevisionCheckCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_client_revision: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for RevisionCheckCall<'a, C> {}
impl<'a, C> RevisionCheckCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, RevisionCheckResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.revisions.check",
http_method: hyper::Method::GET,
});
for &field in ["alt", "clientRevision"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(3 + self._additional_params.len());
params.push("clientRevision", self._client_revision);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/revisions/check";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn client_revision(mut self, new_value: &str) -> RevisionCheckCall<'a, C> {
self._client_revision = new_value.to_string();
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> RevisionCheckCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> RevisionCheckCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> RevisionCheckCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> RevisionCheckCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> RevisionCheckCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct ScoreGetCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_player_id: String,
_leaderboard_id: String,
_time_span: String,
_page_token: Option<String>,
_max_results: Option<i32>,
_language: Option<String>,
_include_rank_type: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for ScoreGetCall<'a, C> {}
impl<'a, C> ScoreGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(
mut self,
) -> common::Result<(common::Response, PlayerLeaderboardScoreListResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.scores.get",
http_method: hyper::Method::GET,
});
for &field in [
"alt",
"playerId",
"leaderboardId",
"timeSpan",
"pageToken",
"maxResults",
"language",
"includeRankType",
]
.iter()
{
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(9 + self._additional_params.len());
params.push("playerId", self._player_id);
params.push("leaderboardId", self._leaderboard_id);
params.push("timeSpan", self._time_span);
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
if let Some(value) = self._include_rank_type.as_ref() {
params.push("includeRankType", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone()
+ "games/v1/players/{playerId}/leaderboards/{leaderboardId}/scores/{timeSpan}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [
("{playerId}", "playerId"),
("{leaderboardId}", "leaderboardId"),
("{timeSpan}", "timeSpan"),
]
.iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["timeSpan", "leaderboardId", "playerId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn player_id(mut self, new_value: &str) -> ScoreGetCall<'a, C> {
self._player_id = new_value.to_string();
self
}
pub fn leaderboard_id(mut self, new_value: &str) -> ScoreGetCall<'a, C> {
self._leaderboard_id = new_value.to_string();
self
}
pub fn time_span(mut self, new_value: &str) -> ScoreGetCall<'a, C> {
self._time_span = new_value.to_string();
self
}
pub fn page_token(mut self, new_value: &str) -> ScoreGetCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: i32) -> ScoreGetCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn language(mut self, new_value: &str) -> ScoreGetCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn include_rank_type(mut self, new_value: &str) -> ScoreGetCall<'a, C> {
self._include_rank_type = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> ScoreGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> ScoreGetCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> ScoreGetCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> ScoreGetCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> ScoreGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct ScoreListCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_leaderboard_id: String,
_collection: String,
_time_span: String,
_page_token: Option<String>,
_max_results: Option<i32>,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for ScoreListCall<'a, C> {}
impl<'a, C> ScoreListCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, LeaderboardScores)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.scores.list",
http_method: hyper::Method::GET,
});
for &field in [
"alt",
"leaderboardId",
"collection",
"timeSpan",
"pageToken",
"maxResults",
"language",
]
.iter()
{
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(8 + self._additional_params.len());
params.push("leaderboardId", self._leaderboard_id);
params.push("collection", self._collection);
params.push("timeSpan", self._time_span);
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone()
+ "games/v1/leaderboards/{leaderboardId}/scores/{collection}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [
("{leaderboardId}", "leaderboardId"),
("{collection}", "collection"),
]
.iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["collection", "leaderboardId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn leaderboard_id(mut self, new_value: &str) -> ScoreListCall<'a, C> {
self._leaderboard_id = new_value.to_string();
self
}
pub fn collection(mut self, new_value: &str) -> ScoreListCall<'a, C> {
self._collection = new_value.to_string();
self
}
pub fn time_span(mut self, new_value: &str) -> ScoreListCall<'a, C> {
self._time_span = new_value.to_string();
self
}
pub fn page_token(mut self, new_value: &str) -> ScoreListCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: i32) -> ScoreListCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn language(mut self, new_value: &str) -> ScoreListCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> ScoreListCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> ScoreListCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> ScoreListCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> ScoreListCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> ScoreListCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct ScoreListWindowCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_leaderboard_id: String,
_collection: String,
_time_span: String,
_return_top_if_absent: Option<bool>,
_results_above: Option<i32>,
_page_token: Option<String>,
_max_results: Option<i32>,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for ScoreListWindowCall<'a, C> {}
impl<'a, C> ScoreListWindowCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, LeaderboardScores)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.scores.listWindow",
http_method: hyper::Method::GET,
});
for &field in [
"alt",
"leaderboardId",
"collection",
"timeSpan",
"returnTopIfAbsent",
"resultsAbove",
"pageToken",
"maxResults",
"language",
]
.iter()
{
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(10 + self._additional_params.len());
params.push("leaderboardId", self._leaderboard_id);
params.push("collection", self._collection);
params.push("timeSpan", self._time_span);
if let Some(value) = self._return_top_if_absent.as_ref() {
params.push("returnTopIfAbsent", value.to_string());
}
if let Some(value) = self._results_above.as_ref() {
params.push("resultsAbove", value.to_string());
}
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone()
+ "games/v1/leaderboards/{leaderboardId}/window/{collection}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [
("{leaderboardId}", "leaderboardId"),
("{collection}", "collection"),
]
.iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["collection", "leaderboardId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn leaderboard_id(mut self, new_value: &str) -> ScoreListWindowCall<'a, C> {
self._leaderboard_id = new_value.to_string();
self
}
pub fn collection(mut self, new_value: &str) -> ScoreListWindowCall<'a, C> {
self._collection = new_value.to_string();
self
}
pub fn time_span(mut self, new_value: &str) -> ScoreListWindowCall<'a, C> {
self._time_span = new_value.to_string();
self
}
pub fn return_top_if_absent(mut self, new_value: bool) -> ScoreListWindowCall<'a, C> {
self._return_top_if_absent = Some(new_value);
self
}
pub fn results_above(mut self, new_value: i32) -> ScoreListWindowCall<'a, C> {
self._results_above = Some(new_value);
self
}
pub fn page_token(mut self, new_value: &str) -> ScoreListWindowCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: i32) -> ScoreListWindowCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn language(mut self, new_value: &str) -> ScoreListWindowCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> ScoreListWindowCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> ScoreListWindowCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> ScoreListWindowCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> ScoreListWindowCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> ScoreListWindowCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct ScoreSubmitCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_leaderboard_id: String,
_score: i64,
_score_tag: Option<String>,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for ScoreSubmitCall<'a, C> {}
impl<'a, C> ScoreSubmitCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, PlayerScoreResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.scores.submit",
http_method: hyper::Method::POST,
});
for &field in ["alt", "leaderboardId", "score", "scoreTag", "language"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(6 + self._additional_params.len());
params.push("leaderboardId", self._leaderboard_id);
params.push("score", self._score.to_string());
if let Some(value) = self._score_tag.as_ref() {
params.push("scoreTag", value);
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/leaderboards/{leaderboardId}/scores";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{leaderboardId}", "leaderboardId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["leaderboardId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn leaderboard_id(mut self, new_value: &str) -> ScoreSubmitCall<'a, C> {
self._leaderboard_id = new_value.to_string();
self
}
pub fn score(mut self, new_value: i64) -> ScoreSubmitCall<'a, C> {
self._score = new_value;
self
}
pub fn score_tag(mut self, new_value: &str) -> ScoreSubmitCall<'a, C> {
self._score_tag = Some(new_value.to_string());
self
}
pub fn language(mut self, new_value: &str) -> ScoreSubmitCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> ScoreSubmitCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> ScoreSubmitCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> ScoreSubmitCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> ScoreSubmitCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> ScoreSubmitCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct ScoreSubmitMultipleCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_request: PlayerScoreSubmissionList,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for ScoreSubmitMultipleCall<'a, C> {}
impl<'a, C> ScoreSubmitMultipleCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, PlayerScoreListResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.scores.submitMultiple",
http_method: hyper::Method::POST,
});
for &field in ["alt", "language"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(4 + self._additional_params.len());
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/leaderboards/scores";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
let mut json_mime_type = mime::APPLICATION_JSON;
let mut request_value_reader = {
let mut value = serde_json::value::to_value(&self._request).expect("serde to work");
common::remove_json_null_values(&mut value);
let mut dst = std::io::Cursor::new(Vec::with_capacity(128));
serde_json::to_writer(&mut dst, &value).unwrap();
dst
};
let request_size = request_value_reader
.seek(std::io::SeekFrom::End(0))
.unwrap();
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_TYPE, json_mime_type.to_string())
.header(CONTENT_LENGTH, request_size as u64)
.body(common::to_body(
request_value_reader.get_ref().clone().into(),
));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn request(
mut self,
new_value: PlayerScoreSubmissionList,
) -> ScoreSubmitMultipleCall<'a, C> {
self._request = new_value;
self
}
pub fn language(mut self, new_value: &str) -> ScoreSubmitMultipleCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> ScoreSubmitMultipleCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> ScoreSubmitMultipleCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> ScoreSubmitMultipleCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> ScoreSubmitMultipleCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> ScoreSubmitMultipleCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct SnapshotGetCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_snapshot_id: String,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for SnapshotGetCall<'a, C> {}
impl<'a, C> SnapshotGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Snapshot)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.snapshots.get",
http_method: hyper::Method::GET,
});
for &field in ["alt", "snapshotId", "language"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(4 + self._additional_params.len());
params.push("snapshotId", self._snapshot_id);
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/snapshots/{snapshotId}";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::DriveAppdata.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{snapshotId}", "snapshotId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["snapshotId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn snapshot_id(mut self, new_value: &str) -> SnapshotGetCall<'a, C> {
self._snapshot_id = new_value.to_string();
self
}
pub fn language(mut self, new_value: &str) -> SnapshotGetCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> SnapshotGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> SnapshotGetCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> SnapshotGetCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> SnapshotGetCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> SnapshotGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct SnapshotListCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_player_id: String,
_page_token: Option<String>,
_max_results: Option<i32>,
_language: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for SnapshotListCall<'a, C> {}
impl<'a, C> SnapshotListCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, SnapshotListResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.snapshots.list",
http_method: hyper::Method::GET,
});
for &field in ["alt", "playerId", "pageToken", "maxResults", "language"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(6 + self._additional_params.len());
params.push("playerId", self._player_id);
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
if let Some(value) = self._language.as_ref() {
params.push("language", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/players/{playerId}/snapshots";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::DriveAppdata.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{playerId}", "playerId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["playerId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn player_id(mut self, new_value: &str) -> SnapshotListCall<'a, C> {
self._player_id = new_value.to_string();
self
}
pub fn page_token(mut self, new_value: &str) -> SnapshotListCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: i32) -> SnapshotListCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn language(mut self, new_value: &str) -> SnapshotListCall<'a, C> {
self._language = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> SnapshotListCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> SnapshotListCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> SnapshotListCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> SnapshotListCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> SnapshotListCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct StatGetCall<'a, C>
where
C: 'a,
{
hub: &'a Games<C>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for StatGetCall<'a, C> {}
impl<'a, C> StatGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, StatsResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "games.stats.get",
http_method: hyper::Method::GET,
});
for &field in ["alt"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(2 + self._additional_params.len());
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "games/v1/stats";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Full.as_ref().to_string());
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> StatGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> StatGetCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> StatGetCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> StatGetCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> StatGetCall<'a, C> {
self._scopes.clear();
self
}
}