#![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 {
Full,
Readonly,
}
impl AsRef<str> for Scope {
fn as_ref(&self) -> &str {
match *self {
Scope::Full => "https://www.googleapis.com/auth/blogger",
Scope::Readonly => "https://www.googleapis.com/auth/blogger.readonly",
}
}
}
#[allow(clippy::derivable_impls)]
impl Default for Scope {
fn default() -> Scope {
Scope::Readonly
}
}
#[derive(Clone)]
pub struct Blogger<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 Blogger<C> {}
impl<'a, C> Blogger<C> {
pub fn new<A: 'static + common::GetToken>(client: common::Client<C>, auth: A) -> Blogger<C> {
Blogger {
client,
auth: Box::new(auth),
_user_agent: "google-api-rust-client/7.0.0".to_string(),
_base_url: "https://blogger.googleapis.com/".to_string(),
_root_url: "https://blogger.googleapis.com/".to_string(),
}
}
pub fn blog_user_infos(&'a self) -> BlogUserInfoMethods<'a, C> {
BlogUserInfoMethods { hub: self }
}
pub fn blogs(&'a self) -> BlogMethods<'a, C> {
BlogMethods { hub: self }
}
pub fn comments(&'a self) -> CommentMethods<'a, C> {
CommentMethods { hub: self }
}
pub fn page_views(&'a self) -> PageViewMethods<'a, C> {
PageViewMethods { hub: self }
}
pub fn pages(&'a self) -> PageMethods<'a, C> {
PageMethods { hub: self }
}
pub fn post_user_infos(&'a self) -> PostUserInfoMethods<'a, C> {
PostUserInfoMethods { hub: self }
}
pub fn posts(&'a self) -> PostMethods<'a, C> {
PostMethods { hub: self }
}
pub fn users(&'a self) -> UserMethods<'a, C> {
UserMethods { 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 Blog {
#[serde(rename = "customMetaData")]
pub custom_meta_data: Option<String>,
pub description: Option<String>,
pub id: Option<String>,
pub kind: Option<String>,
pub locale: Option<BlogLocale>,
pub name: Option<String>,
pub pages: Option<BlogPages>,
pub posts: Option<BlogPosts>,
pub published: Option<String>,
#[serde(rename = "selfLink")]
pub self_link: Option<String>,
pub status: Option<String>,
pub updated: Option<String>,
pub url: Option<String>,
}
impl common::Resource for Blog {}
impl common::ResponseResult for Blog {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct BlogList {
#[serde(rename = "blogUserInfos")]
pub blog_user_infos: Option<Vec<BlogUserInfo>>,
pub items: Option<Vec<Blog>>,
pub kind: Option<String>,
}
impl common::ResponseResult for BlogList {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct BlogPerUserInfo {
#[serde(rename = "blogId")]
pub blog_id: Option<String>,
#[serde(rename = "hasAdminAccess")]
pub has_admin_access: Option<bool>,
pub kind: Option<String>,
#[serde(rename = "photosAlbumKey")]
pub photos_album_key: Option<String>,
pub role: Option<String>,
#[serde(rename = "userId")]
pub user_id: Option<String>,
}
impl common::Part for BlogPerUserInfo {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct BlogUserInfo {
pub blog: Option<Blog>,
pub blog_user_info: Option<BlogPerUserInfo>,
pub kind: Option<String>,
}
impl common::Resource for BlogUserInfo {}
impl common::ResponseResult for BlogUserInfo {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Comment {
pub author: Option<CommentAuthor>,
pub blog: Option<CommentBlog>,
pub content: Option<String>,
pub id: Option<String>,
#[serde(rename = "inReplyTo")]
pub in_reply_to: Option<CommentInReplyTo>,
pub kind: Option<String>,
pub post: Option<CommentPost>,
pub published: Option<String>,
#[serde(rename = "selfLink")]
pub self_link: Option<String>,
pub status: Option<String>,
pub updated: Option<String>,
}
impl common::Resource for Comment {}
impl common::ResponseResult for Comment {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct CommentList {
pub etag: Option<String>,
pub items: Option<Vec<Comment>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
#[serde(rename = "prevPageToken")]
pub prev_page_token: Option<String>,
}
impl common::ResponseResult for CommentList {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Page {
pub author: Option<PageAuthor>,
pub blog: Option<PageBlog>,
pub content: Option<String>,
pub etag: Option<String>,
pub id: Option<String>,
pub kind: Option<String>,
pub published: Option<String>,
#[serde(rename = "selfLink")]
pub self_link: Option<String>,
pub status: Option<String>,
pub title: Option<String>,
pub trashed: Option<String>,
pub updated: Option<String>,
pub url: Option<String>,
}
impl common::RequestValue for Page {}
impl common::Resource for Page {}
impl common::ResponseResult for Page {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PageList {
pub etag: Option<String>,
pub items: Option<Vec<Page>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
}
impl common::ResponseResult for PageList {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Pageviews {
#[serde(rename = "blogId")]
pub blog_id: Option<String>,
pub counts: Option<Vec<PageviewsCounts>>,
pub kind: Option<String>,
}
impl common::ResponseResult for Pageviews {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Post {
pub author: Option<PostAuthor>,
pub blog: Option<PostBlog>,
pub content: Option<String>,
#[serde(rename = "customMetaData")]
pub custom_meta_data: Option<String>,
pub etag: Option<String>,
pub id: Option<String>,
pub images: Option<Vec<PostImages>>,
pub kind: Option<String>,
pub labels: Option<Vec<String>>,
pub location: Option<PostLocation>,
pub published: Option<String>,
#[serde(rename = "readerComments")]
pub reader_comments: Option<String>,
pub replies: Option<PostReplies>,
#[serde(rename = "selfLink")]
pub self_link: Option<String>,
pub status: Option<String>,
pub title: Option<String>,
#[serde(rename = "titleLink")]
pub title_link: Option<String>,
pub trashed: Option<String>,
pub updated: Option<String>,
pub url: Option<String>,
}
impl common::RequestValue for Post {}
impl common::Resource for Post {}
impl common::ResponseResult for Post {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PostList {
pub etag: Option<String>,
pub items: Option<Vec<Post>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
#[serde(rename = "prevPageToken")]
pub prev_page_token: Option<String>,
}
impl common::ResponseResult for PostList {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PostPerUserInfo {
#[serde(rename = "blogId")]
pub blog_id: Option<String>,
#[serde(rename = "hasEditAccess")]
pub has_edit_access: Option<bool>,
pub kind: Option<String>,
#[serde(rename = "postId")]
pub post_id: Option<String>,
#[serde(rename = "userId")]
pub user_id: Option<String>,
}
impl common::Part for PostPerUserInfo {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PostUserInfo {
pub kind: Option<String>,
pub post: Option<Post>,
pub post_user_info: Option<PostPerUserInfo>,
}
impl common::Resource for PostUserInfo {}
impl common::ResponseResult for PostUserInfo {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PostUserInfosList {
pub items: Option<Vec<PostUserInfo>>,
pub kind: Option<String>,
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
}
impl common::ResponseResult for PostUserInfosList {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct User {
pub about: Option<String>,
pub blogs: Option<UserBlogs>,
pub created: Option<String>,
#[serde(rename = "displayName")]
pub display_name: Option<String>,
pub id: Option<String>,
pub kind: Option<String>,
pub locale: Option<UserLocale>,
#[serde(rename = "selfLink")]
pub self_link: Option<String>,
pub url: Option<String>,
}
impl common::Resource for User {}
impl common::ResponseResult for User {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct BlogLocale {
pub country: Option<String>,
pub language: Option<String>,
pub variant: Option<String>,
}
impl common::NestedType for BlogLocale {}
impl common::Part for BlogLocale {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct BlogPages {
#[serde(rename = "selfLink")]
pub self_link: Option<String>,
#[serde(rename = "totalItems")]
pub total_items: Option<i32>,
}
impl common::NestedType for BlogPages {}
impl common::Part for BlogPages {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct BlogPosts {
pub items: Option<Vec<Post>>,
#[serde(rename = "selfLink")]
pub self_link: Option<String>,
#[serde(rename = "totalItems")]
pub total_items: Option<i32>,
}
impl common::NestedType for BlogPosts {}
impl common::Part for BlogPosts {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct CommentAuthor {
#[serde(rename = "displayName")]
pub display_name: Option<String>,
pub id: Option<String>,
pub image: Option<CommentAuthorImage>,
pub url: Option<String>,
}
impl common::NestedType for CommentAuthor {}
impl common::Part for CommentAuthor {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct CommentAuthorImage {
pub url: Option<String>,
}
impl common::NestedType for CommentAuthorImage {}
impl common::Part for CommentAuthorImage {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct CommentBlog {
pub id: Option<String>,
}
impl common::NestedType for CommentBlog {}
impl common::Part for CommentBlog {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct CommentInReplyTo {
pub id: Option<String>,
}
impl common::NestedType for CommentInReplyTo {}
impl common::Part for CommentInReplyTo {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct CommentPost {
pub id: Option<String>,
}
impl common::NestedType for CommentPost {}
impl common::Part for CommentPost {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PageAuthor {
#[serde(rename = "displayName")]
pub display_name: Option<String>,
pub id: Option<String>,
pub image: Option<PageAuthorImage>,
pub url: Option<String>,
}
impl common::NestedType for PageAuthor {}
impl common::Part for PageAuthor {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PageAuthorImage {
pub url: Option<String>,
}
impl common::NestedType for PageAuthorImage {}
impl common::Part for PageAuthorImage {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PageBlog {
pub id: Option<String>,
}
impl common::NestedType for PageBlog {}
impl common::Part for PageBlog {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PageviewsCounts {
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub count: Option<i64>,
#[serde(rename = "timeRange")]
pub time_range: Option<String>,
}
impl common::NestedType for PageviewsCounts {}
impl common::Part for PageviewsCounts {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PostAuthor {
#[serde(rename = "displayName")]
pub display_name: Option<String>,
pub id: Option<String>,
pub image: Option<PostAuthorImage>,
pub url: Option<String>,
}
impl common::NestedType for PostAuthor {}
impl common::Part for PostAuthor {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PostAuthorImage {
pub url: Option<String>,
}
impl common::NestedType for PostAuthorImage {}
impl common::Part for PostAuthorImage {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PostBlog {
pub id: Option<String>,
}
impl common::NestedType for PostBlog {}
impl common::Part for PostBlog {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PostImages {
pub url: Option<String>,
}
impl common::NestedType for PostImages {}
impl common::Part for PostImages {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PostLocation {
pub lat: Option<f64>,
pub lng: Option<f64>,
pub name: Option<String>,
pub span: Option<String>,
}
impl common::NestedType for PostLocation {}
impl common::Part for PostLocation {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct PostReplies {
pub items: Option<Vec<Comment>>,
#[serde(rename = "selfLink")]
pub self_link: Option<String>,
#[serde(rename = "totalItems")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub total_items: Option<i64>,
}
impl common::NestedType for PostReplies {}
impl common::Part for PostReplies {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct UserBlogs {
#[serde(rename = "selfLink")]
pub self_link: Option<String>,
}
impl common::NestedType for UserBlogs {}
impl common::Part for UserBlogs {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct UserLocale {
pub country: Option<String>,
pub language: Option<String>,
pub variant: Option<String>,
}
impl common::NestedType for UserLocale {}
impl common::Part for UserLocale {}
pub struct BlogUserInfoMethods<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
}
impl<'a, C> common::MethodsBuilder for BlogUserInfoMethods<'a, C> {}
impl<'a, C> BlogUserInfoMethods<'a, C> {
pub fn get(&self, user_id: &str, blog_id: &str) -> BlogUserInfoGetCall<'a, C> {
BlogUserInfoGetCall {
hub: self.hub,
_user_id: user_id.to_string(),
_blog_id: blog_id.to_string(),
_max_posts: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct BlogMethods<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
}
impl<'a, C> common::MethodsBuilder for BlogMethods<'a, C> {}
impl<'a, C> BlogMethods<'a, C> {
pub fn get(&self, blog_id: &str) -> BlogGetCall<'a, C> {
BlogGetCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_view: Default::default(),
_max_posts: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn get_by_url(&self, url: &str) -> BlogGetByUrlCall<'a, C> {
BlogGetByUrlCall {
hub: self.hub,
_url: url.to_string(),
_view: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list_by_user(&self, user_id: &str) -> BlogListByUserCall<'a, C> {
BlogListByUserCall {
hub: self.hub,
_user_id: user_id.to_string(),
_view: Default::default(),
_status: Default::default(),
_role: Default::default(),
_fetch_user_info: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct CommentMethods<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
}
impl<'a, C> common::MethodsBuilder for CommentMethods<'a, C> {}
impl<'a, C> CommentMethods<'a, C> {
pub fn approve(
&self,
blog_id: &str,
post_id: &str,
comment_id: &str,
) -> CommentApproveCall<'a, C> {
CommentApproveCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_post_id: post_id.to_string(),
_comment_id: comment_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn delete(
&self,
blog_id: &str,
post_id: &str,
comment_id: &str,
) -> CommentDeleteCall<'a, C> {
CommentDeleteCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_post_id: post_id.to_string(),
_comment_id: comment_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn get(&self, blog_id: &str, post_id: &str, comment_id: &str) -> CommentGetCall<'a, C> {
CommentGetCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_post_id: post_id.to_string(),
_comment_id: comment_id.to_string(),
_view: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list(&self, blog_id: &str, post_id: &str) -> CommentListCall<'a, C> {
CommentListCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_post_id: post_id.to_string(),
_view: Default::default(),
_status: Default::default(),
_start_date: Default::default(),
_page_token: Default::default(),
_max_results: Default::default(),
_fetch_bodies: Default::default(),
_end_date: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list_by_blog(&self, blog_id: &str) -> CommentListByBlogCall<'a, C> {
CommentListByBlogCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_status: Default::default(),
_start_date: Default::default(),
_page_token: Default::default(),
_max_results: Default::default(),
_fetch_bodies: Default::default(),
_end_date: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn mark_as_spam(
&self,
blog_id: &str,
post_id: &str,
comment_id: &str,
) -> CommentMarkAsSpamCall<'a, C> {
CommentMarkAsSpamCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_post_id: post_id.to_string(),
_comment_id: comment_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn remove_content(
&self,
blog_id: &str,
post_id: &str,
comment_id: &str,
) -> CommentRemoveContentCall<'a, C> {
CommentRemoveContentCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_post_id: post_id.to_string(),
_comment_id: comment_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct PageViewMethods<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
}
impl<'a, C> common::MethodsBuilder for PageViewMethods<'a, C> {}
impl<'a, C> PageViewMethods<'a, C> {
pub fn get(&self, blog_id: &str) -> PageViewGetCall<'a, C> {
PageViewGetCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_range: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct PageMethods<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
}
impl<'a, C> common::MethodsBuilder for PageMethods<'a, C> {}
impl<'a, C> PageMethods<'a, C> {
pub fn delete(&self, blog_id: &str, page_id: &str) -> PageDeleteCall<'a, C> {
PageDeleteCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_page_id: page_id.to_string(),
_use_trash: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn get(&self, blog_id: &str, page_id: &str) -> PageGetCall<'a, C> {
PageGetCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_page_id: page_id.to_string(),
_view: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn insert(&self, request: Page, blog_id: &str) -> PageInsertCall<'a, C> {
PageInsertCall {
hub: self.hub,
_request: request,
_blog_id: blog_id.to_string(),
_is_draft: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list(&self, blog_id: &str) -> PageListCall<'a, C> {
PageListCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_view: Default::default(),
_status: Default::default(),
_page_token: Default::default(),
_max_results: Default::default(),
_fetch_bodies: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn patch(&self, request: Page, blog_id: &str, page_id: &str) -> PagePatchCall<'a, C> {
PagePatchCall {
hub: self.hub,
_request: request,
_blog_id: blog_id.to_string(),
_page_id: page_id.to_string(),
_revert: Default::default(),
_publish: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn publish(&self, blog_id: &str, page_id: &str) -> PagePublishCall<'a, C> {
PagePublishCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_page_id: page_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn revert(&self, blog_id: &str, page_id: &str) -> PageRevertCall<'a, C> {
PageRevertCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_page_id: page_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn update(&self, request: Page, blog_id: &str, page_id: &str) -> PageUpdateCall<'a, C> {
PageUpdateCall {
hub: self.hub,
_request: request,
_blog_id: blog_id.to_string(),
_page_id: page_id.to_string(),
_revert: Default::default(),
_publish: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct PostUserInfoMethods<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
}
impl<'a, C> common::MethodsBuilder for PostUserInfoMethods<'a, C> {}
impl<'a, C> PostUserInfoMethods<'a, C> {
pub fn get(&self, user_id: &str, blog_id: &str, post_id: &str) -> PostUserInfoGetCall<'a, C> {
PostUserInfoGetCall {
hub: self.hub,
_user_id: user_id.to_string(),
_blog_id: blog_id.to_string(),
_post_id: post_id.to_string(),
_max_comments: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list(&self, user_id: &str, blog_id: &str) -> PostUserInfoListCall<'a, C> {
PostUserInfoListCall {
hub: self.hub,
_user_id: user_id.to_string(),
_blog_id: blog_id.to_string(),
_view: Default::default(),
_status: Default::default(),
_start_date: Default::default(),
_page_token: Default::default(),
_order_by: Default::default(),
_max_results: Default::default(),
_labels: Default::default(),
_fetch_bodies: Default::default(),
_end_date: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct PostMethods<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
}
impl<'a, C> common::MethodsBuilder for PostMethods<'a, C> {}
impl<'a, C> PostMethods<'a, C> {
pub fn delete(&self, blog_id: &str, post_id: &str) -> PostDeleteCall<'a, C> {
PostDeleteCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_post_id: post_id.to_string(),
_use_trash: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn get(&self, blog_id: &str, post_id: &str) -> PostGetCall<'a, C> {
PostGetCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_post_id: post_id.to_string(),
_view: Default::default(),
_max_comments: Default::default(),
_fetch_images: Default::default(),
_fetch_body: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn get_by_path(&self, blog_id: &str, path: &str) -> PostGetByPathCall<'a, C> {
PostGetByPathCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_path: path.to_string(),
_view: Default::default(),
_max_comments: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn insert(&self, request: Post, blog_id: &str) -> PostInsertCall<'a, C> {
PostInsertCall {
hub: self.hub,
_request: request,
_blog_id: blog_id.to_string(),
_is_draft: Default::default(),
_fetch_images: Default::default(),
_fetch_body: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list(&self, blog_id: &str) -> PostListCall<'a, C> {
PostListCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_view: Default::default(),
_status: Default::default(),
_start_date: Default::default(),
_sort_option: Default::default(),
_page_token: Default::default(),
_order_by: Default::default(),
_max_results: Default::default(),
_labels: Default::default(),
_fetch_images: Default::default(),
_fetch_bodies: Default::default(),
_end_date: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn patch(&self, request: Post, blog_id: &str, post_id: &str) -> PostPatchCall<'a, C> {
PostPatchCall {
hub: self.hub,
_request: request,
_blog_id: blog_id.to_string(),
_post_id: post_id.to_string(),
_revert: Default::default(),
_publish: Default::default(),
_max_comments: Default::default(),
_fetch_images: Default::default(),
_fetch_body: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn publish(&self, blog_id: &str, post_id: &str) -> PostPublishCall<'a, C> {
PostPublishCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_post_id: post_id.to_string(),
_publish_date: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn revert(&self, blog_id: &str, post_id: &str) -> PostRevertCall<'a, C> {
PostRevertCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_post_id: post_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn search(&self, blog_id: &str, q: &str) -> PostSearchCall<'a, C> {
PostSearchCall {
hub: self.hub,
_blog_id: blog_id.to_string(),
_q: q.to_string(),
_order_by: Default::default(),
_fetch_bodies: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn update(&self, request: Post, blog_id: &str, post_id: &str) -> PostUpdateCall<'a, C> {
PostUpdateCall {
hub: self.hub,
_request: request,
_blog_id: blog_id.to_string(),
_post_id: post_id.to_string(),
_revert: Default::default(),
_publish: Default::default(),
_max_comments: Default::default(),
_fetch_images: Default::default(),
_fetch_body: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct UserMethods<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
}
impl<'a, C> common::MethodsBuilder for UserMethods<'a, C> {}
impl<'a, C> UserMethods<'a, C> {
pub fn get(&self, user_id: &str) -> UserGetCall<'a, C> {
UserGetCall {
hub: self.hub,
_user_id: user_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct BlogUserInfoGetCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_user_id: String,
_blog_id: String,
_max_posts: Option<u32>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for BlogUserInfoGetCall<'a, C> {}
impl<'a, C> BlogUserInfoGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, BlogUserInfo)> {
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: "blogger.blogUserInfos.get",
http_method: hyper::Method::GET,
});
for &field in ["alt", "userId", "blogId", "maxPosts"].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("userId", self._user_id);
params.push("blogId", self._blog_id);
if let Some(value) = self._max_posts.as_ref() {
params.push("maxPosts", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/users/{userId}/blogs/{blogId}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{userId}", "userId"), ("{blogId}", "blogId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["blogId", "userId"];
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 user_id(mut self, new_value: &str) -> BlogUserInfoGetCall<'a, C> {
self._user_id = new_value.to_string();
self
}
pub fn blog_id(mut self, new_value: &str) -> BlogUserInfoGetCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn max_posts(mut self, new_value: u32) -> BlogUserInfoGetCall<'a, C> {
self._max_posts = Some(new_value);
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> BlogUserInfoGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> BlogUserInfoGetCall<'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) -> BlogUserInfoGetCall<'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) -> BlogUserInfoGetCall<'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) -> BlogUserInfoGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct BlogGetCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_view: Option<String>,
_max_posts: Option<u32>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for BlogGetCall<'a, C> {}
impl<'a, C> BlogGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Blog)> {
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: "blogger.blogs.get",
http_method: hyper::Method::GET,
});
for &field in ["alt", "blogId", "view", "maxPosts"].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("blogId", self._blog_id);
if let Some(value) = self._view.as_ref() {
params.push("view", value);
}
if let Some(value) = self._max_posts.as_ref() {
params.push("maxPosts", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{blogId}", "blogId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["blogId"];
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 blog_id(mut self, new_value: &str) -> BlogGetCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn view(mut self, new_value: &str) -> BlogGetCall<'a, C> {
self._view = Some(new_value.to_string());
self
}
pub fn max_posts(mut self, new_value: u32) -> BlogGetCall<'a, C> {
self._max_posts = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> BlogGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> BlogGetCall<'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) -> BlogGetCall<'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) -> BlogGetCall<'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) -> BlogGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct BlogGetByUrlCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_url: String,
_view: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for BlogGetByUrlCall<'a, C> {}
impl<'a, C> BlogGetByUrlCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Blog)> {
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: "blogger.blogs.getByUrl",
http_method: hyper::Method::GET,
});
for &field in ["alt", "url", "view"].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("url", self._url);
if let Some(value) = self._view.as_ref() {
params.push("view", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/byurl";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.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 url(mut self, new_value: &str) -> BlogGetByUrlCall<'a, C> {
self._url = new_value.to_string();
self
}
pub fn view(mut self, new_value: &str) -> BlogGetByUrlCall<'a, C> {
self._view = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> BlogGetByUrlCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> BlogGetByUrlCall<'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) -> BlogGetByUrlCall<'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) -> BlogGetByUrlCall<'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) -> BlogGetByUrlCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct BlogListByUserCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_user_id: String,
_view: Option<String>,
_status: Vec<String>,
_role: Vec<String>,
_fetch_user_info: Option<bool>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for BlogListByUserCall<'a, C> {}
impl<'a, C> BlogListByUserCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, BlogList)> {
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: "blogger.blogs.listByUser",
http_method: hyper::Method::GET,
});
for &field in ["alt", "userId", "view", "status", "role", "fetchUserInfo"].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("userId", self._user_id);
if let Some(value) = self._view.as_ref() {
params.push("view", value);
}
if !self._status.is_empty() {
for f in self._status.iter() {
params.push("status", f);
}
}
if !self._role.is_empty() {
for f in self._role.iter() {
params.push("role", f);
}
}
if let Some(value) = self._fetch_user_info.as_ref() {
params.push("fetchUserInfo", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/users/{userId}/blogs";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{userId}", "userId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["userId"];
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 user_id(mut self, new_value: &str) -> BlogListByUserCall<'a, C> {
self._user_id = new_value.to_string();
self
}
pub fn view(mut self, new_value: &str) -> BlogListByUserCall<'a, C> {
self._view = Some(new_value.to_string());
self
}
pub fn add_status(mut self, new_value: &str) -> BlogListByUserCall<'a, C> {
self._status.push(new_value.to_string());
self
}
pub fn add_role(mut self, new_value: &str) -> BlogListByUserCall<'a, C> {
self._role.push(new_value.to_string());
self
}
pub fn fetch_user_info(mut self, new_value: bool) -> BlogListByUserCall<'a, C> {
self._fetch_user_info = Some(new_value);
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> BlogListByUserCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> BlogListByUserCall<'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) -> BlogListByUserCall<'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) -> BlogListByUserCall<'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) -> BlogListByUserCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct CommentApproveCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_post_id: String,
_comment_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for CommentApproveCall<'a, C> {}
impl<'a, C> CommentApproveCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Comment)> {
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: "blogger.comments.approve",
http_method: hyper::Method::POST,
});
for &field in ["alt", "blogId", "postId", "commentId"].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("blogId", self._blog_id);
params.push("postId", self._post_id);
params.push("commentId", self._comment_id);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone()
+ "v3/blogs/{blogId}/posts/{postId}/comments/{commentId}/approve";
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 [
("{blogId}", "blogId"),
("{postId}", "postId"),
("{commentId}", "commentId"),
]
.iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["commentId", "postId", "blogId"];
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 blog_id(mut self, new_value: &str) -> CommentApproveCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn post_id(mut self, new_value: &str) -> CommentApproveCall<'a, C> {
self._post_id = new_value.to_string();
self
}
pub fn comment_id(mut self, new_value: &str) -> CommentApproveCall<'a, C> {
self._comment_id = new_value.to_string();
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> CommentApproveCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> CommentApproveCall<'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) -> CommentApproveCall<'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) -> CommentApproveCall<'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) -> CommentApproveCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct CommentDeleteCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_post_id: String,
_comment_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for CommentDeleteCall<'a, C> {}
impl<'a, C> CommentDeleteCall<'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: "blogger.comments.delete",
http_method: hyper::Method::DELETE,
});
for &field in ["blogId", "postId", "commentId"].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("blogId", self._blog_id);
params.push("postId", self._post_id);
params.push("commentId", self._comment_id);
params.extend(self._additional_params.iter());
let mut url =
self.hub._base_url.clone() + "v3/blogs/{blogId}/posts/{postId}/comments/{commentId}";
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 [
("{blogId}", "blogId"),
("{postId}", "postId"),
("{commentId}", "commentId"),
]
.iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["commentId", "postId", "blogId"];
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::DELETE)
.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 blog_id(mut self, new_value: &str) -> CommentDeleteCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn post_id(mut self, new_value: &str) -> CommentDeleteCall<'a, C> {
self._post_id = new_value.to_string();
self
}
pub fn comment_id(mut self, new_value: &str) -> CommentDeleteCall<'a, C> {
self._comment_id = new_value.to_string();
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> CommentDeleteCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> CommentDeleteCall<'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) -> CommentDeleteCall<'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) -> CommentDeleteCall<'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) -> CommentDeleteCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct CommentGetCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_post_id: String,
_comment_id: String,
_view: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for CommentGetCall<'a, C> {}
impl<'a, C> CommentGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Comment)> {
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: "blogger.comments.get",
http_method: hyper::Method::GET,
});
for &field in ["alt", "blogId", "postId", "commentId", "view"].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("blogId", self._blog_id);
params.push("postId", self._post_id);
params.push("commentId", self._comment_id);
if let Some(value) = self._view.as_ref() {
params.push("view", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url =
self.hub._base_url.clone() + "v3/blogs/{blogId}/posts/{postId}/comments/{commentId}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [
("{blogId}", "blogId"),
("{postId}", "postId"),
("{commentId}", "commentId"),
]
.iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["commentId", "postId", "blogId"];
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 blog_id(mut self, new_value: &str) -> CommentGetCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn post_id(mut self, new_value: &str) -> CommentGetCall<'a, C> {
self._post_id = new_value.to_string();
self
}
pub fn comment_id(mut self, new_value: &str) -> CommentGetCall<'a, C> {
self._comment_id = new_value.to_string();
self
}
pub fn view(mut self, new_value: &str) -> CommentGetCall<'a, C> {
self._view = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> CommentGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> CommentGetCall<'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) -> CommentGetCall<'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) -> CommentGetCall<'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) -> CommentGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct CommentListCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_post_id: String,
_view: Option<String>,
_status: Option<String>,
_start_date: Option<String>,
_page_token: Option<String>,
_max_results: Option<u32>,
_fetch_bodies: Option<bool>,
_end_date: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for CommentListCall<'a, C> {}
impl<'a, C> CommentListCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, CommentList)> {
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: "blogger.comments.list",
http_method: hyper::Method::GET,
});
for &field in [
"alt",
"blogId",
"postId",
"view",
"status",
"startDate",
"pageToken",
"maxResults",
"fetchBodies",
"endDate",
]
.iter()
{
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(11 + self._additional_params.len());
params.push("blogId", self._blog_id);
params.push("postId", self._post_id);
if let Some(value) = self._view.as_ref() {
params.push("view", value);
}
if let Some(value) = self._status.as_ref() {
params.push("status", value);
}
if let Some(value) = self._start_date.as_ref() {
params.push("startDate", 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._fetch_bodies.as_ref() {
params.push("fetchBodies", value.to_string());
}
if let Some(value) = self._end_date.as_ref() {
params.push("endDate", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/posts/{postId}/comments";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{blogId}", "blogId"), ("{postId}", "postId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["postId", "blogId"];
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 blog_id(mut self, new_value: &str) -> CommentListCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn post_id(mut self, new_value: &str) -> CommentListCall<'a, C> {
self._post_id = new_value.to_string();
self
}
pub fn view(mut self, new_value: &str) -> CommentListCall<'a, C> {
self._view = Some(new_value.to_string());
self
}
pub fn status(mut self, new_value: &str) -> CommentListCall<'a, C> {
self._status = Some(new_value.to_string());
self
}
pub fn start_date(mut self, new_value: &str) -> CommentListCall<'a, C> {
self._start_date = Some(new_value.to_string());
self
}
pub fn page_token(mut self, new_value: &str) -> CommentListCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: u32) -> CommentListCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn fetch_bodies(mut self, new_value: bool) -> CommentListCall<'a, C> {
self._fetch_bodies = Some(new_value);
self
}
pub fn end_date(mut self, new_value: &str) -> CommentListCall<'a, C> {
self._end_date = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> CommentListCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> CommentListCall<'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) -> CommentListCall<'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) -> CommentListCall<'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) -> CommentListCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct CommentListByBlogCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_status: Vec<String>,
_start_date: Option<String>,
_page_token: Option<String>,
_max_results: Option<u32>,
_fetch_bodies: Option<bool>,
_end_date: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for CommentListByBlogCall<'a, C> {}
impl<'a, C> CommentListByBlogCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, CommentList)> {
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: "blogger.comments.listByBlog",
http_method: hyper::Method::GET,
});
for &field in [
"alt",
"blogId",
"status",
"startDate",
"pageToken",
"maxResults",
"fetchBodies",
"endDate",
]
.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("blogId", self._blog_id);
if !self._status.is_empty() {
for f in self._status.iter() {
params.push("status", f);
}
}
if let Some(value) = self._start_date.as_ref() {
params.push("startDate", 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._fetch_bodies.as_ref() {
params.push("fetchBodies", value.to_string());
}
if let Some(value) = self._end_date.as_ref() {
params.push("endDate", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/comments";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{blogId}", "blogId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["blogId"];
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 blog_id(mut self, new_value: &str) -> CommentListByBlogCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn add_status(mut self, new_value: &str) -> CommentListByBlogCall<'a, C> {
self._status.push(new_value.to_string());
self
}
pub fn start_date(mut self, new_value: &str) -> CommentListByBlogCall<'a, C> {
self._start_date = Some(new_value.to_string());
self
}
pub fn page_token(mut self, new_value: &str) -> CommentListByBlogCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: u32) -> CommentListByBlogCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn fetch_bodies(mut self, new_value: bool) -> CommentListByBlogCall<'a, C> {
self._fetch_bodies = Some(new_value);
self
}
pub fn end_date(mut self, new_value: &str) -> CommentListByBlogCall<'a, C> {
self._end_date = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> CommentListByBlogCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> CommentListByBlogCall<'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) -> CommentListByBlogCall<'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) -> CommentListByBlogCall<'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) -> CommentListByBlogCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct CommentMarkAsSpamCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_post_id: String,
_comment_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for CommentMarkAsSpamCall<'a, C> {}
impl<'a, C> CommentMarkAsSpamCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Comment)> {
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: "blogger.comments.markAsSpam",
http_method: hyper::Method::POST,
});
for &field in ["alt", "blogId", "postId", "commentId"].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("blogId", self._blog_id);
params.push("postId", self._post_id);
params.push("commentId", self._comment_id);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone()
+ "v3/blogs/{blogId}/posts/{postId}/comments/{commentId}/spam";
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 [
("{blogId}", "blogId"),
("{postId}", "postId"),
("{commentId}", "commentId"),
]
.iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["commentId", "postId", "blogId"];
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 blog_id(mut self, new_value: &str) -> CommentMarkAsSpamCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn post_id(mut self, new_value: &str) -> CommentMarkAsSpamCall<'a, C> {
self._post_id = new_value.to_string();
self
}
pub fn comment_id(mut self, new_value: &str) -> CommentMarkAsSpamCall<'a, C> {
self._comment_id = new_value.to_string();
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> CommentMarkAsSpamCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> CommentMarkAsSpamCall<'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) -> CommentMarkAsSpamCall<'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) -> CommentMarkAsSpamCall<'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) -> CommentMarkAsSpamCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct CommentRemoveContentCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_post_id: String,
_comment_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for CommentRemoveContentCall<'a, C> {}
impl<'a, C> CommentRemoveContentCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Comment)> {
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: "blogger.comments.removeContent",
http_method: hyper::Method::POST,
});
for &field in ["alt", "blogId", "postId", "commentId"].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("blogId", self._blog_id);
params.push("postId", self._post_id);
params.push("commentId", self._comment_id);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone()
+ "v3/blogs/{blogId}/posts/{postId}/comments/{commentId}/removecontent";
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 [
("{blogId}", "blogId"),
("{postId}", "postId"),
("{commentId}", "commentId"),
]
.iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["commentId", "postId", "blogId"];
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 blog_id(mut self, new_value: &str) -> CommentRemoveContentCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn post_id(mut self, new_value: &str) -> CommentRemoveContentCall<'a, C> {
self._post_id = new_value.to_string();
self
}
pub fn comment_id(mut self, new_value: &str) -> CommentRemoveContentCall<'a, C> {
self._comment_id = new_value.to_string();
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> CommentRemoveContentCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> CommentRemoveContentCall<'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) -> CommentRemoveContentCall<'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) -> CommentRemoveContentCall<'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) -> CommentRemoveContentCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PageViewGetCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_range: Vec<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PageViewGetCall<'a, C> {}
impl<'a, C> PageViewGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Pageviews)> {
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: "blogger.pageViews.get",
http_method: hyper::Method::GET,
});
for &field in ["alt", "blogId", "range"].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("blogId", self._blog_id);
if !self._range.is_empty() {
for f in self._range.iter() {
params.push("range", f);
}
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/pageviews";
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 [("{blogId}", "blogId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["blogId"];
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 blog_id(mut self, new_value: &str) -> PageViewGetCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn add_range(mut self, new_value: &str) -> PageViewGetCall<'a, C> {
self._range.push(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PageViewGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PageViewGetCall<'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) -> PageViewGetCall<'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) -> PageViewGetCall<'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) -> PageViewGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PageDeleteCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_page_id: String,
_use_trash: Option<bool>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PageDeleteCall<'a, C> {}
impl<'a, C> PageDeleteCall<'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: "blogger.pages.delete",
http_method: hyper::Method::DELETE,
});
for &field in ["blogId", "pageId", "useTrash"].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("blogId", self._blog_id);
params.push("pageId", self._page_id);
if let Some(value) = self._use_trash.as_ref() {
params.push("useTrash", value.to_string());
}
params.extend(self._additional_params.iter());
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/pages/{pageId}";
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 [("{blogId}", "blogId"), ("{pageId}", "pageId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["pageId", "blogId"];
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::DELETE)
.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 blog_id(mut self, new_value: &str) -> PageDeleteCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn page_id(mut self, new_value: &str) -> PageDeleteCall<'a, C> {
self._page_id = new_value.to_string();
self
}
pub fn use_trash(mut self, new_value: bool) -> PageDeleteCall<'a, C> {
self._use_trash = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PageDeleteCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PageDeleteCall<'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) -> PageDeleteCall<'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) -> PageDeleteCall<'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) -> PageDeleteCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PageGetCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_page_id: String,
_view: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PageGetCall<'a, C> {}
impl<'a, C> PageGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Page)> {
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: "blogger.pages.get",
http_method: hyper::Method::GET,
});
for &field in ["alt", "blogId", "pageId", "view"].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("blogId", self._blog_id);
params.push("pageId", self._page_id);
if let Some(value) = self._view.as_ref() {
params.push("view", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/pages/{pageId}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{blogId}", "blogId"), ("{pageId}", "pageId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["pageId", "blogId"];
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 blog_id(mut self, new_value: &str) -> PageGetCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn page_id(mut self, new_value: &str) -> PageGetCall<'a, C> {
self._page_id = new_value.to_string();
self
}
pub fn view(mut self, new_value: &str) -> PageGetCall<'a, C> {
self._view = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PageGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PageGetCall<'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) -> PageGetCall<'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) -> PageGetCall<'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) -> PageGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PageInsertCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_request: Page,
_blog_id: String,
_is_draft: Option<bool>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PageInsertCall<'a, C> {}
impl<'a, C> PageInsertCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Page)> {
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: "blogger.pages.insert",
http_method: hyper::Method::POST,
});
for &field in ["alt", "blogId", "isDraft"].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("blogId", self._blog_id);
if let Some(value) = self._is_draft.as_ref() {
params.push("isDraft", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/pages";
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 [("{blogId}", "blogId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["blogId"];
params.remove_params(&to_remove);
}
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: Page) -> PageInsertCall<'a, C> {
self._request = new_value;
self
}
pub fn blog_id(mut self, new_value: &str) -> PageInsertCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn is_draft(mut self, new_value: bool) -> PageInsertCall<'a, C> {
self._is_draft = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PageInsertCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PageInsertCall<'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) -> PageInsertCall<'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) -> PageInsertCall<'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) -> PageInsertCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PageListCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_view: Option<String>,
_status: Vec<String>,
_page_token: Option<String>,
_max_results: Option<u32>,
_fetch_bodies: Option<bool>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PageListCall<'a, C> {}
impl<'a, C> PageListCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, PageList)> {
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: "blogger.pages.list",
http_method: hyper::Method::GET,
});
for &field in [
"alt",
"blogId",
"view",
"status",
"pageToken",
"maxResults",
"fetchBodies",
]
.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("blogId", self._blog_id);
if let Some(value) = self._view.as_ref() {
params.push("view", value);
}
if !self._status.is_empty() {
for f in self._status.iter() {
params.push("status", f);
}
}
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._fetch_bodies.as_ref() {
params.push("fetchBodies", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/pages";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{blogId}", "blogId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["blogId"];
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 blog_id(mut self, new_value: &str) -> PageListCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn view(mut self, new_value: &str) -> PageListCall<'a, C> {
self._view = Some(new_value.to_string());
self
}
pub fn add_status(mut self, new_value: &str) -> PageListCall<'a, C> {
self._status.push(new_value.to_string());
self
}
pub fn page_token(mut self, new_value: &str) -> PageListCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: u32) -> PageListCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn fetch_bodies(mut self, new_value: bool) -> PageListCall<'a, C> {
self._fetch_bodies = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PageListCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PageListCall<'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) -> PageListCall<'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) -> PageListCall<'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) -> PageListCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PagePatchCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_request: Page,
_blog_id: String,
_page_id: String,
_revert: Option<bool>,
_publish: Option<bool>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PagePatchCall<'a, C> {}
impl<'a, C> PagePatchCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Page)> {
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: "blogger.pages.patch",
http_method: hyper::Method::PATCH,
});
for &field in ["alt", "blogId", "pageId", "revert", "publish"].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("blogId", self._blog_id);
params.push("pageId", self._page_id);
if let Some(value) = self._revert.as_ref() {
params.push("revert", value.to_string());
}
if let Some(value) = self._publish.as_ref() {
params.push("publish", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/pages/{pageId}";
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 [("{blogId}", "blogId"), ("{pageId}", "pageId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["pageId", "blogId"];
params.remove_params(&to_remove);
}
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::PATCH)
.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: Page) -> PagePatchCall<'a, C> {
self._request = new_value;
self
}
pub fn blog_id(mut self, new_value: &str) -> PagePatchCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn page_id(mut self, new_value: &str) -> PagePatchCall<'a, C> {
self._page_id = new_value.to_string();
self
}
pub fn revert(mut self, new_value: bool) -> PagePatchCall<'a, C> {
self._revert = Some(new_value);
self
}
pub fn publish(mut self, new_value: bool) -> PagePatchCall<'a, C> {
self._publish = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PagePatchCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PagePatchCall<'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) -> PagePatchCall<'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) -> PagePatchCall<'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) -> PagePatchCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PagePublishCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_page_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PagePublishCall<'a, C> {}
impl<'a, C> PagePublishCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Page)> {
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: "blogger.pages.publish",
http_method: hyper::Method::POST,
});
for &field in ["alt", "blogId", "pageId"].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("blogId", self._blog_id);
params.push("pageId", self._page_id);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/pages/{pageId}/publish";
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 [("{blogId}", "blogId"), ("{pageId}", "pageId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["pageId", "blogId"];
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 blog_id(mut self, new_value: &str) -> PagePublishCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn page_id(mut self, new_value: &str) -> PagePublishCall<'a, C> {
self._page_id = new_value.to_string();
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PagePublishCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PagePublishCall<'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) -> PagePublishCall<'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) -> PagePublishCall<'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) -> PagePublishCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PageRevertCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_page_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PageRevertCall<'a, C> {}
impl<'a, C> PageRevertCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Page)> {
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: "blogger.pages.revert",
http_method: hyper::Method::POST,
});
for &field in ["alt", "blogId", "pageId"].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("blogId", self._blog_id);
params.push("pageId", self._page_id);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/pages/{pageId}/revert";
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 [("{blogId}", "blogId"), ("{pageId}", "pageId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["pageId", "blogId"];
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 blog_id(mut self, new_value: &str) -> PageRevertCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn page_id(mut self, new_value: &str) -> PageRevertCall<'a, C> {
self._page_id = new_value.to_string();
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PageRevertCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PageRevertCall<'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) -> PageRevertCall<'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) -> PageRevertCall<'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) -> PageRevertCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PageUpdateCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_request: Page,
_blog_id: String,
_page_id: String,
_revert: Option<bool>,
_publish: Option<bool>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PageUpdateCall<'a, C> {}
impl<'a, C> PageUpdateCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Page)> {
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: "blogger.pages.update",
http_method: hyper::Method::PUT,
});
for &field in ["alt", "blogId", "pageId", "revert", "publish"].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("blogId", self._blog_id);
params.push("pageId", self._page_id);
if let Some(value) = self._revert.as_ref() {
params.push("revert", value.to_string());
}
if let Some(value) = self._publish.as_ref() {
params.push("publish", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/pages/{pageId}";
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 [("{blogId}", "blogId"), ("{pageId}", "pageId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["pageId", "blogId"];
params.remove_params(&to_remove);
}
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::PUT)
.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: Page) -> PageUpdateCall<'a, C> {
self._request = new_value;
self
}
pub fn blog_id(mut self, new_value: &str) -> PageUpdateCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn page_id(mut self, new_value: &str) -> PageUpdateCall<'a, C> {
self._page_id = new_value.to_string();
self
}
pub fn revert(mut self, new_value: bool) -> PageUpdateCall<'a, C> {
self._revert = Some(new_value);
self
}
pub fn publish(mut self, new_value: bool) -> PageUpdateCall<'a, C> {
self._publish = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PageUpdateCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PageUpdateCall<'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) -> PageUpdateCall<'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) -> PageUpdateCall<'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) -> PageUpdateCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PostUserInfoGetCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_user_id: String,
_blog_id: String,
_post_id: String,
_max_comments: Option<u32>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PostUserInfoGetCall<'a, C> {}
impl<'a, C> PostUserInfoGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, PostUserInfo)> {
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: "blogger.postUserInfos.get",
http_method: hyper::Method::GET,
});
for &field in ["alt", "userId", "blogId", "postId", "maxComments"].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("userId", self._user_id);
params.push("blogId", self._blog_id);
params.push("postId", self._post_id);
if let Some(value) = self._max_comments.as_ref() {
params.push("maxComments", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url =
self.hub._base_url.clone() + "v3/users/{userId}/blogs/{blogId}/posts/{postId}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [
("{userId}", "userId"),
("{blogId}", "blogId"),
("{postId}", "postId"),
]
.iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["postId", "blogId", "userId"];
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 user_id(mut self, new_value: &str) -> PostUserInfoGetCall<'a, C> {
self._user_id = new_value.to_string();
self
}
pub fn blog_id(mut self, new_value: &str) -> PostUserInfoGetCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn post_id(mut self, new_value: &str) -> PostUserInfoGetCall<'a, C> {
self._post_id = new_value.to_string();
self
}
pub fn max_comments(mut self, new_value: u32) -> PostUserInfoGetCall<'a, C> {
self._max_comments = Some(new_value);
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> PostUserInfoGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PostUserInfoGetCall<'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) -> PostUserInfoGetCall<'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) -> PostUserInfoGetCall<'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) -> PostUserInfoGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PostUserInfoListCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_user_id: String,
_blog_id: String,
_view: Option<String>,
_status: Vec<String>,
_start_date: Option<String>,
_page_token: Option<String>,
_order_by: Option<String>,
_max_results: Option<u32>,
_labels: Option<String>,
_fetch_bodies: Option<bool>,
_end_date: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PostUserInfoListCall<'a, C> {}
impl<'a, C> PostUserInfoListCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, PostUserInfosList)> {
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: "blogger.postUserInfos.list",
http_method: hyper::Method::GET,
});
for &field in [
"alt",
"userId",
"blogId",
"view",
"status",
"startDate",
"pageToken",
"orderBy",
"maxResults",
"labels",
"fetchBodies",
"endDate",
]
.iter()
{
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(13 + self._additional_params.len());
params.push("userId", self._user_id);
params.push("blogId", self._blog_id);
if let Some(value) = self._view.as_ref() {
params.push("view", value);
}
if !self._status.is_empty() {
for f in self._status.iter() {
params.push("status", f);
}
}
if let Some(value) = self._start_date.as_ref() {
params.push("startDate", value);
}
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._order_by.as_ref() {
params.push("orderBy", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
if let Some(value) = self._labels.as_ref() {
params.push("labels", value);
}
if let Some(value) = self._fetch_bodies.as_ref() {
params.push("fetchBodies", value.to_string());
}
if let Some(value) = self._end_date.as_ref() {
params.push("endDate", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/users/{userId}/blogs/{blogId}/posts";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{userId}", "userId"), ("{blogId}", "blogId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["blogId", "userId"];
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 user_id(mut self, new_value: &str) -> PostUserInfoListCall<'a, C> {
self._user_id = new_value.to_string();
self
}
pub fn blog_id(mut self, new_value: &str) -> PostUserInfoListCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn view(mut self, new_value: &str) -> PostUserInfoListCall<'a, C> {
self._view = Some(new_value.to_string());
self
}
pub fn add_status(mut self, new_value: &str) -> PostUserInfoListCall<'a, C> {
self._status.push(new_value.to_string());
self
}
pub fn start_date(mut self, new_value: &str) -> PostUserInfoListCall<'a, C> {
self._start_date = Some(new_value.to_string());
self
}
pub fn page_token(mut self, new_value: &str) -> PostUserInfoListCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn order_by(mut self, new_value: &str) -> PostUserInfoListCall<'a, C> {
self._order_by = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: u32) -> PostUserInfoListCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn labels(mut self, new_value: &str) -> PostUserInfoListCall<'a, C> {
self._labels = Some(new_value.to_string());
self
}
pub fn fetch_bodies(mut self, new_value: bool) -> PostUserInfoListCall<'a, C> {
self._fetch_bodies = Some(new_value);
self
}
pub fn end_date(mut self, new_value: &str) -> PostUserInfoListCall<'a, C> {
self._end_date = Some(new_value.to_string());
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> PostUserInfoListCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PostUserInfoListCall<'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) -> PostUserInfoListCall<'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) -> PostUserInfoListCall<'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) -> PostUserInfoListCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PostDeleteCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_post_id: String,
_use_trash: Option<bool>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PostDeleteCall<'a, C> {}
impl<'a, C> PostDeleteCall<'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: "blogger.posts.delete",
http_method: hyper::Method::DELETE,
});
for &field in ["blogId", "postId", "useTrash"].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("blogId", self._blog_id);
params.push("postId", self._post_id);
if let Some(value) = self._use_trash.as_ref() {
params.push("useTrash", value.to_string());
}
params.extend(self._additional_params.iter());
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/posts/{postId}";
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 [("{blogId}", "blogId"), ("{postId}", "postId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["postId", "blogId"];
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::DELETE)
.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 blog_id(mut self, new_value: &str) -> PostDeleteCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn post_id(mut self, new_value: &str) -> PostDeleteCall<'a, C> {
self._post_id = new_value.to_string();
self
}
pub fn use_trash(mut self, new_value: bool) -> PostDeleteCall<'a, C> {
self._use_trash = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PostDeleteCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PostDeleteCall<'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) -> PostDeleteCall<'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) -> PostDeleteCall<'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) -> PostDeleteCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PostGetCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_post_id: String,
_view: Option<String>,
_max_comments: Option<u32>,
_fetch_images: Option<bool>,
_fetch_body: Option<bool>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PostGetCall<'a, C> {}
impl<'a, C> PostGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Post)> {
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: "blogger.posts.get",
http_method: hyper::Method::GET,
});
for &field in [
"alt",
"blogId",
"postId",
"view",
"maxComments",
"fetchImages",
"fetchBody",
]
.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("blogId", self._blog_id);
params.push("postId", self._post_id);
if let Some(value) = self._view.as_ref() {
params.push("view", value);
}
if let Some(value) = self._max_comments.as_ref() {
params.push("maxComments", value.to_string());
}
if let Some(value) = self._fetch_images.as_ref() {
params.push("fetchImages", value.to_string());
}
if let Some(value) = self._fetch_body.as_ref() {
params.push("fetchBody", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/posts/{postId}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{blogId}", "blogId"), ("{postId}", "postId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["postId", "blogId"];
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 blog_id(mut self, new_value: &str) -> PostGetCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn post_id(mut self, new_value: &str) -> PostGetCall<'a, C> {
self._post_id = new_value.to_string();
self
}
pub fn view(mut self, new_value: &str) -> PostGetCall<'a, C> {
self._view = Some(new_value.to_string());
self
}
pub fn max_comments(mut self, new_value: u32) -> PostGetCall<'a, C> {
self._max_comments = Some(new_value);
self
}
pub fn fetch_images(mut self, new_value: bool) -> PostGetCall<'a, C> {
self._fetch_images = Some(new_value);
self
}
pub fn fetch_body(mut self, new_value: bool) -> PostGetCall<'a, C> {
self._fetch_body = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PostGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PostGetCall<'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) -> PostGetCall<'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) -> PostGetCall<'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) -> PostGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PostGetByPathCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_path: String,
_view: Option<String>,
_max_comments: Option<u32>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PostGetByPathCall<'a, C> {}
impl<'a, C> PostGetByPathCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Post)> {
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: "blogger.posts.getByPath",
http_method: hyper::Method::GET,
});
for &field in ["alt", "blogId", "path", "view", "maxComments"].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("blogId", self._blog_id);
params.push("path", self._path);
if let Some(value) = self._view.as_ref() {
params.push("view", value);
}
if let Some(value) = self._max_comments.as_ref() {
params.push("maxComments", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/posts/bypath";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{blogId}", "blogId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["blogId"];
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 blog_id(mut self, new_value: &str) -> PostGetByPathCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn path(mut self, new_value: &str) -> PostGetByPathCall<'a, C> {
self._path = new_value.to_string();
self
}
pub fn view(mut self, new_value: &str) -> PostGetByPathCall<'a, C> {
self._view = Some(new_value.to_string());
self
}
pub fn max_comments(mut self, new_value: u32) -> PostGetByPathCall<'a, C> {
self._max_comments = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PostGetByPathCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PostGetByPathCall<'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) -> PostGetByPathCall<'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) -> PostGetByPathCall<'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) -> PostGetByPathCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PostInsertCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_request: Post,
_blog_id: String,
_is_draft: Option<bool>,
_fetch_images: Option<bool>,
_fetch_body: Option<bool>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PostInsertCall<'a, C> {}
impl<'a, C> PostInsertCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Post)> {
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: "blogger.posts.insert",
http_method: hyper::Method::POST,
});
for &field in ["alt", "blogId", "isDraft", "fetchImages", "fetchBody"].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("blogId", self._blog_id);
if let Some(value) = self._is_draft.as_ref() {
params.push("isDraft", value.to_string());
}
if let Some(value) = self._fetch_images.as_ref() {
params.push("fetchImages", value.to_string());
}
if let Some(value) = self._fetch_body.as_ref() {
params.push("fetchBody", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/posts";
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 [("{blogId}", "blogId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["blogId"];
params.remove_params(&to_remove);
}
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: Post) -> PostInsertCall<'a, C> {
self._request = new_value;
self
}
pub fn blog_id(mut self, new_value: &str) -> PostInsertCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn is_draft(mut self, new_value: bool) -> PostInsertCall<'a, C> {
self._is_draft = Some(new_value);
self
}
pub fn fetch_images(mut self, new_value: bool) -> PostInsertCall<'a, C> {
self._fetch_images = Some(new_value);
self
}
pub fn fetch_body(mut self, new_value: bool) -> PostInsertCall<'a, C> {
self._fetch_body = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PostInsertCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PostInsertCall<'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) -> PostInsertCall<'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) -> PostInsertCall<'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) -> PostInsertCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PostListCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_view: Option<String>,
_status: Vec<String>,
_start_date: Option<String>,
_sort_option: Option<String>,
_page_token: Option<String>,
_order_by: Option<String>,
_max_results: Option<u32>,
_labels: Option<String>,
_fetch_images: Option<bool>,
_fetch_bodies: Option<bool>,
_end_date: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PostListCall<'a, C> {}
impl<'a, C> PostListCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, PostList)> {
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: "blogger.posts.list",
http_method: hyper::Method::GET,
});
for &field in [
"alt",
"blogId",
"view",
"status",
"startDate",
"sortOption",
"pageToken",
"orderBy",
"maxResults",
"labels",
"fetchImages",
"fetchBodies",
"endDate",
]
.iter()
{
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(14 + self._additional_params.len());
params.push("blogId", self._blog_id);
if let Some(value) = self._view.as_ref() {
params.push("view", value);
}
if !self._status.is_empty() {
for f in self._status.iter() {
params.push("status", f);
}
}
if let Some(value) = self._start_date.as_ref() {
params.push("startDate", value);
}
if let Some(value) = self._sort_option.as_ref() {
params.push("sortOption", value);
}
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._order_by.as_ref() {
params.push("orderBy", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
if let Some(value) = self._labels.as_ref() {
params.push("labels", value);
}
if let Some(value) = self._fetch_images.as_ref() {
params.push("fetchImages", value.to_string());
}
if let Some(value) = self._fetch_bodies.as_ref() {
params.push("fetchBodies", value.to_string());
}
if let Some(value) = self._end_date.as_ref() {
params.push("endDate", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/posts";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{blogId}", "blogId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["blogId"];
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 blog_id(mut self, new_value: &str) -> PostListCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn view(mut self, new_value: &str) -> PostListCall<'a, C> {
self._view = Some(new_value.to_string());
self
}
pub fn add_status(mut self, new_value: &str) -> PostListCall<'a, C> {
self._status.push(new_value.to_string());
self
}
pub fn start_date(mut self, new_value: &str) -> PostListCall<'a, C> {
self._start_date = Some(new_value.to_string());
self
}
pub fn sort_option(mut self, new_value: &str) -> PostListCall<'a, C> {
self._sort_option = Some(new_value.to_string());
self
}
pub fn page_token(mut self, new_value: &str) -> PostListCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn order_by(mut self, new_value: &str) -> PostListCall<'a, C> {
self._order_by = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: u32) -> PostListCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn labels(mut self, new_value: &str) -> PostListCall<'a, C> {
self._labels = Some(new_value.to_string());
self
}
pub fn fetch_images(mut self, new_value: bool) -> PostListCall<'a, C> {
self._fetch_images = Some(new_value);
self
}
pub fn fetch_bodies(mut self, new_value: bool) -> PostListCall<'a, C> {
self._fetch_bodies = Some(new_value);
self
}
pub fn end_date(mut self, new_value: &str) -> PostListCall<'a, C> {
self._end_date = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PostListCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PostListCall<'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) -> PostListCall<'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) -> PostListCall<'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) -> PostListCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PostPatchCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_request: Post,
_blog_id: String,
_post_id: String,
_revert: Option<bool>,
_publish: Option<bool>,
_max_comments: Option<u32>,
_fetch_images: Option<bool>,
_fetch_body: Option<bool>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PostPatchCall<'a, C> {}
impl<'a, C> PostPatchCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Post)> {
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: "blogger.posts.patch",
http_method: hyper::Method::PATCH,
});
for &field in [
"alt",
"blogId",
"postId",
"revert",
"publish",
"maxComments",
"fetchImages",
"fetchBody",
]
.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("blogId", self._blog_id);
params.push("postId", self._post_id);
if let Some(value) = self._revert.as_ref() {
params.push("revert", value.to_string());
}
if let Some(value) = self._publish.as_ref() {
params.push("publish", value.to_string());
}
if let Some(value) = self._max_comments.as_ref() {
params.push("maxComments", value.to_string());
}
if let Some(value) = self._fetch_images.as_ref() {
params.push("fetchImages", value.to_string());
}
if let Some(value) = self._fetch_body.as_ref() {
params.push("fetchBody", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/posts/{postId}";
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 [("{blogId}", "blogId"), ("{postId}", "postId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["postId", "blogId"];
params.remove_params(&to_remove);
}
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::PATCH)
.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: Post) -> PostPatchCall<'a, C> {
self._request = new_value;
self
}
pub fn blog_id(mut self, new_value: &str) -> PostPatchCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn post_id(mut self, new_value: &str) -> PostPatchCall<'a, C> {
self._post_id = new_value.to_string();
self
}
pub fn revert(mut self, new_value: bool) -> PostPatchCall<'a, C> {
self._revert = Some(new_value);
self
}
pub fn publish(mut self, new_value: bool) -> PostPatchCall<'a, C> {
self._publish = Some(new_value);
self
}
pub fn max_comments(mut self, new_value: u32) -> PostPatchCall<'a, C> {
self._max_comments = Some(new_value);
self
}
pub fn fetch_images(mut self, new_value: bool) -> PostPatchCall<'a, C> {
self._fetch_images = Some(new_value);
self
}
pub fn fetch_body(mut self, new_value: bool) -> PostPatchCall<'a, C> {
self._fetch_body = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PostPatchCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PostPatchCall<'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) -> PostPatchCall<'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) -> PostPatchCall<'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) -> PostPatchCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PostPublishCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_post_id: String,
_publish_date: Option<String>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PostPublishCall<'a, C> {}
impl<'a, C> PostPublishCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Post)> {
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: "blogger.posts.publish",
http_method: hyper::Method::POST,
});
for &field in ["alt", "blogId", "postId", "publishDate"].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("blogId", self._blog_id);
params.push("postId", self._post_id);
if let Some(value) = self._publish_date.as_ref() {
params.push("publishDate", value);
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/posts/{postId}/publish";
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 [("{blogId}", "blogId"), ("{postId}", "postId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["postId", "blogId"];
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 blog_id(mut self, new_value: &str) -> PostPublishCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn post_id(mut self, new_value: &str) -> PostPublishCall<'a, C> {
self._post_id = new_value.to_string();
self
}
pub fn publish_date(mut self, new_value: &str) -> PostPublishCall<'a, C> {
self._publish_date = Some(new_value.to_string());
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PostPublishCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PostPublishCall<'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) -> PostPublishCall<'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) -> PostPublishCall<'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) -> PostPublishCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PostRevertCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_post_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PostRevertCall<'a, C> {}
impl<'a, C> PostRevertCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Post)> {
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: "blogger.posts.revert",
http_method: hyper::Method::POST,
});
for &field in ["alt", "blogId", "postId"].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("blogId", self._blog_id);
params.push("postId", self._post_id);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/posts/{postId}/revert";
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 [("{blogId}", "blogId"), ("{postId}", "postId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["postId", "blogId"];
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 blog_id(mut self, new_value: &str) -> PostRevertCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn post_id(mut self, new_value: &str) -> PostRevertCall<'a, C> {
self._post_id = new_value.to_string();
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PostRevertCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PostRevertCall<'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) -> PostRevertCall<'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) -> PostRevertCall<'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) -> PostRevertCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PostSearchCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_blog_id: String,
_q: String,
_order_by: Option<String>,
_fetch_bodies: Option<bool>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PostSearchCall<'a, C> {}
impl<'a, C> PostSearchCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, PostList)> {
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: "blogger.posts.search",
http_method: hyper::Method::GET,
});
for &field in ["alt", "blogId", "q", "orderBy", "fetchBodies"].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("blogId", self._blog_id);
params.push("q", self._q);
if let Some(value) = self._order_by.as_ref() {
params.push("orderBy", value);
}
if let Some(value) = self._fetch_bodies.as_ref() {
params.push("fetchBodies", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/posts/search";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{blogId}", "blogId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["blogId"];
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 blog_id(mut self, new_value: &str) -> PostSearchCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn q(mut self, new_value: &str) -> PostSearchCall<'a, C> {
self._q = new_value.to_string();
self
}
pub fn order_by(mut self, new_value: &str) -> PostSearchCall<'a, C> {
self._order_by = Some(new_value.to_string());
self
}
pub fn fetch_bodies(mut self, new_value: bool) -> PostSearchCall<'a, C> {
self._fetch_bodies = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PostSearchCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PostSearchCall<'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) -> PostSearchCall<'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) -> PostSearchCall<'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) -> PostSearchCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct PostUpdateCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_request: Post,
_blog_id: String,
_post_id: String,
_revert: Option<bool>,
_publish: Option<bool>,
_max_comments: Option<u32>,
_fetch_images: Option<bool>,
_fetch_body: Option<bool>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for PostUpdateCall<'a, C> {}
impl<'a, C> PostUpdateCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Post)> {
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: "blogger.posts.update",
http_method: hyper::Method::PUT,
});
for &field in [
"alt",
"blogId",
"postId",
"revert",
"publish",
"maxComments",
"fetchImages",
"fetchBody",
]
.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("blogId", self._blog_id);
params.push("postId", self._post_id);
if let Some(value) = self._revert.as_ref() {
params.push("revert", value.to_string());
}
if let Some(value) = self._publish.as_ref() {
params.push("publish", value.to_string());
}
if let Some(value) = self._max_comments.as_ref() {
params.push("maxComments", value.to_string());
}
if let Some(value) = self._fetch_images.as_ref() {
params.push("fetchImages", value.to_string());
}
if let Some(value) = self._fetch_body.as_ref() {
params.push("fetchBody", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/blogs/{blogId}/posts/{postId}";
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 [("{blogId}", "blogId"), ("{postId}", "postId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["postId", "blogId"];
params.remove_params(&to_remove);
}
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::PUT)
.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: Post) -> PostUpdateCall<'a, C> {
self._request = new_value;
self
}
pub fn blog_id(mut self, new_value: &str) -> PostUpdateCall<'a, C> {
self._blog_id = new_value.to_string();
self
}
pub fn post_id(mut self, new_value: &str) -> PostUpdateCall<'a, C> {
self._post_id = new_value.to_string();
self
}
pub fn revert(mut self, new_value: bool) -> PostUpdateCall<'a, C> {
self._revert = Some(new_value);
self
}
pub fn publish(mut self, new_value: bool) -> PostUpdateCall<'a, C> {
self._publish = Some(new_value);
self
}
pub fn max_comments(mut self, new_value: u32) -> PostUpdateCall<'a, C> {
self._max_comments = Some(new_value);
self
}
pub fn fetch_images(mut self, new_value: bool) -> PostUpdateCall<'a, C> {
self._fetch_images = Some(new_value);
self
}
pub fn fetch_body(mut self, new_value: bool) -> PostUpdateCall<'a, C> {
self._fetch_body = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> PostUpdateCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> PostUpdateCall<'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) -> PostUpdateCall<'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) -> PostUpdateCall<'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) -> PostUpdateCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct UserGetCall<'a, C>
where
C: 'a,
{
hub: &'a Blogger<C>,
_user_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for UserGetCall<'a, C> {}
impl<'a, C> UserGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, User)> {
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: "blogger.users.get",
http_method: hyper::Method::GET,
});
for &field in ["alt", "userId"].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("userId", self._user_id);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "v3/users/{userId}";
if self._scopes.is_empty() {
self._scopes.insert(Scope::Readonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{userId}", "userId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["userId"];
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 user_id(mut self, new_value: &str) -> UserGetCall<'a, C> {
self._user_id = new_value.to_string();
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> UserGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> UserGetCall<'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) -> UserGetCall<'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) -> UserGetCall<'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) -> UserGetCall<'a, C> {
self._scopes.clear();
self
}
}