Mercurial > lbo > hg > async-google-apis
changeset 130:3db9fcf07b0a
drive_example: Update to new Download API
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Mon, 26 Oct 2020 10:44:34 +0100 |
parents | 0c1e788bda0c |
children | 44f33160f884 |
files | drive_example/src/drive_v3_types.rs drive_example/src/main.rs |
diffstat | 2 files changed, 79 insertions(+), 86 deletions(-) [+] |
line wrap: on
line diff
--- a/drive_example/src/drive_v3_types.rs Mon Oct 26 10:44:20 2020 +0100 +++ b/drive_example/src/drive_v3_types.rs Mon Oct 26 10:44:34 2020 +0100 @@ -3901,7 +3901,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -3971,7 +3971,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -4003,7 +4003,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -4035,7 +4035,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -4103,7 +4103,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -4178,7 +4178,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -4215,7 +4215,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -4251,7 +4251,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -4286,7 +4286,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -4326,7 +4326,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -4394,7 +4394,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -4430,7 +4430,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -4465,7 +4465,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -4500,7 +4500,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -4532,7 +4532,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -4567,7 +4567,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -4602,7 +4602,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -4673,7 +4673,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -4706,7 +4706,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -4747,7 +4747,7 @@ } let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_upload_multipart( @@ -4791,7 +4791,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); let (_resp, headers): (EmptyResponse, hyper::HeaderMap) = do_request_with_headers( &self.client, @@ -4841,7 +4841,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -4873,7 +4873,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -4893,11 +4893,10 @@ /// or a non-JSON type, the returned value indicates if a download took place or data was written to /// `dst`. If `dst` is `None` despite data being available for download, `ApiError::DataAvailableError` /// is returned. - pub async fn export( - &mut self, + pub async fn export<'a>( + &'a mut self, params: &FilesExportParams, - dst: Option<&mut (dyn tokio::io::AsyncWrite + std::marker::Unpin)>, - ) -> Result<DownloadResponse<()>> { + ) -> Result<Download<'a, EmptyRequest, ()>> { let rel_path = format!( "files/{fileId}/export", fileId = percent_encode(params.file_id.as_bytes(), NON_ALPHANUMERIC) @@ -4917,18 +4916,17 @@ } let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_download( &self.client, &full_uri, - &[( + vec![( hyper::header::AUTHORIZATION, format!("Bearer {token}", token = tok.as_str()), )], - "GET", + "GET".into(), opt_request, - dst, ) .await } @@ -4951,7 +4949,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -4971,11 +4969,10 @@ /// or a non-JSON type, the returned value indicates if a download took place or data was written to /// `dst`. If `dst` is `None` despite data being available for download, `ApiError::DataAvailableError` /// is returned. - pub async fn get( - &mut self, + pub async fn get<'a>( + &'a mut self, params: &FilesGetParams, - dst: Option<&mut (dyn tokio::io::AsyncWrite + std::marker::Unpin)>, - ) -> Result<DownloadResponse<File>> { + ) -> Result<Download<'a, EmptyRequest, File>> { let rel_path = format!( "files/{fileId}", fileId = percent_encode(params.file_id.as_bytes(), NON_ALPHANUMERIC) @@ -4995,18 +4992,17 @@ } let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_download( &self.client, &full_uri, - &[( + vec![( hyper::header::AUTHORIZATION, format!("Bearer {token}", token = tok.as_str()), )], - "GET", + "GET".into(), opt_request, - dst, ) .await } @@ -5029,7 +5025,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -5064,7 +5060,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -5108,7 +5104,7 @@ } let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_upload_multipart( @@ -5155,7 +5151,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); let (_resp, headers): (EmptyResponse, hyper::HeaderMap) = do_request_with_headers( &self.client, @@ -5190,12 +5186,11 @@ /// or a non-JSON type, the returned value indicates if a download took place or data was written to /// `dst`. If `dst` is `None` despite data being available for download, `ApiError::DataAvailableError` /// is returned. - pub async fn watch( - &mut self, + pub async fn watch<'a>( + &'a mut self, params: &FilesWatchParams, - req: &Channel, - dst: Option<&mut (dyn tokio::io::AsyncWrite + std::marker::Unpin)>, - ) -> Result<DownloadResponse<Channel>> { + req: &'a Channel, + ) -> Result<Download<'a, Channel, Channel>> { let rel_path = format!( "files/{fileId}/watch", fileId = percent_encode(params.file_id.as_bytes(), NON_ALPHANUMERIC) @@ -5215,19 +5210,18 @@ } let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_download( &self.client, &full_uri, - &[( + vec![( hyper::header::AUTHORIZATION, format!("Bearer {token}", token = tok.as_str()), )], - "POST", + "POST".into(), opt_request, - dst, ) .await } @@ -5292,7 +5286,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -5329,7 +5323,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -5365,7 +5359,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -5400,7 +5394,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -5440,7 +5434,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -5512,7 +5506,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -5550,7 +5544,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -5587,7 +5581,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -5623,7 +5617,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -5660,7 +5654,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -5732,7 +5726,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -5752,11 +5746,10 @@ /// or a non-JSON type, the returned value indicates if a download took place or data was written to /// `dst`. If `dst` is `None` despite data being available for download, `ApiError::DataAvailableError` /// is returned. - pub async fn get( - &mut self, + pub async fn get<'a>( + &'a mut self, params: &RevisionsGetParams, - dst: Option<&mut (dyn tokio::io::AsyncWrite + std::marker::Unpin)>, - ) -> Result<DownloadResponse<Revision>> { + ) -> Result<Download<'a, EmptyRequest, Revision>> { let rel_path = format!( "files/{fileId}/revisions/{revisionId}", fileId = percent_encode(params.file_id.as_bytes(), NON_ALPHANUMERIC), @@ -5777,18 +5770,17 @@ } let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_download( &self.client, &full_uri, - &[( + vec![( hyper::header::AUTHORIZATION, format!("Bearer {token}", token = tok.as_str()), )], - "GET", + "GET".into(), opt_request, - dst, ) .await } @@ -5814,7 +5806,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -5854,7 +5846,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -5926,7 +5918,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client, @@ -5962,7 +5954,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -5997,7 +5989,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -6029,7 +6021,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; do_request( &self.client, &full_uri, @@ -6068,7 +6060,7 @@ let full_uri = path + &url_params; - let opt_request: Option<EmptyRequest> = None; + let opt_request: Option<&EmptyRequest> = None; let opt_request = Some(req); do_request( &self.client,
--- a/drive_example/src/main.rs Mon Oct 26 10:44:20 2020 +0100 +++ b/drive_example/src/main.rs Mon Oct 26 10:44:34 2020 +0100 @@ -59,37 +59,38 @@ let mut params = drive::FilesGetParams::default(); params.file_id = file_id.clone(); params.drive_params = Some(general_params.clone()); + // This parameter will trigger the download. params.drive_params.as_mut().unwrap().alt = Some("media".into()); let mut dest = vec![0 as u8; 128]; // Get file contents. - let get_file = cl.get(¶ms, Some(&mut dest)).await?; + let get_file = cl.get(¶ms).await?.do_it_to_buf(&mut dest).await?; println!("{:?}", get_file); // get() returns a response type (Response(...)) if the server returned an application/json // response, otherwise it will download to a Writer. If you don't supply a Writer and there is // data to download, an error is returned (ApiError::DataAvailableError). match get_file { - common::DownloadResponse::Response(_) => { + common::DownloadResult::Response(_) => { // We want download! No metadata. assert!(false); } - common::DownloadResponse::Downloaded => println!("Download success."), + common::DownloadResult::Downloaded => println!("Download success."), } - // Get file metadata. + // Get file metadata. We don't specify &alt=media, so no download will take place. let mut params = drive::FilesGetParams::default(); params.file_id = file_id.clone(); - let get_file = cl.get(¶ms, None).await?; + let get_file = cl.get(¶ms).await?.do_it(None).await?; println!("{:?}", get_file); match get_file { - common::DownloadResponse::Response(gf) => { + common::DownloadResult::Response(gf) => { println!("Metadata success."); assert!(gf.name == Some(fname.to_string())); } // We want metadata! No download. - common::DownloadResponse::Downloaded => assert!(false), + common::DownloadResult::Downloaded => assert!(false), } Ok(()) }