-
-
Notifications
You must be signed in to change notification settings - Fork 135
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(cargo): crate version +<revision>
That way, crate names reveal exact inforamtion about the contained API revision. * crate version: code gen version * +<revision> (build-metadata): exact version of API schema Fixes #38
- Loading branch information
Showing
13 changed files
with
1,683 additions
and
290 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# DO NOT EDIT ! | ||
# This file was generated automatically from 'src/mako/Cargo.toml.mako' | ||
# DO NOT EDIT ! | ||
[package] | ||
|
||
name = "google-groupsmigration1" | ||
version = "0.0.1+20140416" | ||
authors = ["Sebastian Thiel <byronimo@gmail>"] | ||
description = "A complete library to interact with Groups Migration (protocol v1)" | ||
repository = "https://github.com/Byron/google-apis-rs/gen/groupsmigration1/.timestamp" | ||
homepage = "https://developers.google.com/google-apps/groups-migration/" | ||
documentation = "http://byron.github.io/google-apis-rs/google-groupsmigration1" | ||
license = "MIT" | ||
keywords = ["groupsmigration", "google", "protocol", "web", "api"] | ||
|
||
[dependencies] | ||
hyper = "*" | ||
mime = "*" | ||
url = "*" | ||
serde = "*" | ||
serde_macros = "*" | ||
yup-oauth2 = "*" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
<!--- | ||
DO NOT EDIT ! | ||
This file was generated automatically from 'src/mako/LICENSE.md.mako' | ||
DO NOT EDIT ! | ||
--> | ||
The MIT License (MIT) | ||
===================== | ||
|
||
Copyright © `2015` `Sebastian Thiel` | ||
|
||
Permission is hereby granted, free of charge, to any person | ||
obtaining a copy of this software and associated documentation | ||
files (the “Software”), to deal in the Software without | ||
restriction, including without limitation the rights to use, | ||
copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the | ||
Software is furnished to do so, subject to the following | ||
conditions: | ||
|
||
The above copyright notice and this permission notice shall be | ||
included in all copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, | ||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
OTHER DEALINGS IN THE SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,165 @@ | ||
<!--- | ||
DO NOT EDIT ! | ||
This file was generated automatically from 'src/mako/README.md.mako' | ||
DO NOT EDIT ! | ||
--> | ||
The `groupsmigration1` library allows access to all features of *Groups Migration*. | ||
|
||
# Features | ||
|
||
It seems there is nothing you can do here ... . | ||
|
||
* archive | ||
* [*insert*](http://byron.github.io/google-apis-rs/google-groupsmigration1/struct.ArchiveInsertCall.html) | ||
|
||
|
||
Upload supported by ... | ||
|
||
* [*insert archive*](http://byron.github.io/google-apis-rs/google-groupsmigration1/struct.ArchiveInsertCall.html) | ||
|
||
|
||
Everything else about the *Groups Migration* *v1* API can be found at the | ||
[official documentation site](https://developers.google.com/google-apps/groups-migration/). | ||
|
||
# Structure of this Library | ||
|
||
The API is structured into the following primary items: | ||
|
||
* **[Hub](http://byron.github.io/google-apis-rs/google-groupsmigration1/struct.GroupsMigration.html)** | ||
* a central object to maintain state and allow accessing all *Activities* | ||
* **[Resources](http://byron.github.io/google-apis-rs/google-groupsmigration1/trait.Resource.html)** | ||
* primary types that you can apply *Activities* to | ||
* a collection of properties and *Parts* | ||
* **[Parts](http://byron.github.io/google-apis-rs/google-groupsmigration1/trait.Part.html)** | ||
* a collection of properties | ||
* never directly used in *Activities* | ||
* **[Activities](http://byron.github.io/google-apis-rs/google-groupsmigration1/trait.CallBuilder.html)** | ||
* operations to apply to *Resources* | ||
|
||
Generally speaking, you can invoke *Activities* like this: | ||
|
||
```Rust,ignore | ||
let r = hub.resource().activity(...).doit() | ||
``` | ||
|
||
Or specifically ... | ||
|
||
```ignore | ||
let r = hub.archive().insert(...).doit() | ||
``` | ||
|
||
The `resource()` and `activity(...)` calls create [builders][builder-pattern]. The second one dealing with `Activities` | ||
supports various methods to configure the impending operation (not shown here). It is made such that all required arguments have to be | ||
specified right away (i.e. `(...)`), whereas all optional ones can be [build up][builder-pattern] as desired. | ||
The `doit()` method performs the actual communication with the server and returns the respective result. | ||
|
||
# Usage | ||
|
||
## Setting up your Project | ||
|
||
To use this library, you would put the following lines into your `Cargo.toml` file: | ||
|
||
```toml | ||
[dependencies] | ||
google-groupsmigration1 = "*" | ||
``` | ||
|
||
## A complete example | ||
|
||
```Rust | ||
extern crate hyper; | ||
extern crate "yup-oauth2" as oauth2; | ||
extern crate "google-groupsmigration1" as groupsmigration1; | ||
use groupsmigration1::Result; | ||
use std::fs; | ||
use std::default::Default; | ||
use oauth2::{Authenticator, DefaultAuthenticatorDelegate, ApplicationSecret, MemoryStorage}; | ||
use groupsmigration1::GroupsMigration; | ||
|
||
// Get an ApplicationSecret instance by some means. It contains the `client_id` and | ||
// `client_secret`, among other things. | ||
let secret: ApplicationSecret = Default::default(); | ||
// Instantiate the authenticator. It will choose a suitable authentication flow for you, | ||
// unless you replace `None` with the desired Flow. | ||
// Provide your own `AuthenticatorDelegate` to adjust the way it operates and get feedback about | ||
// what's going on. You probably want to bring in your own `TokenStorage` to persist tokens and | ||
// retrieve them from storage. | ||
let auth = Authenticator::new(&secret, DefaultAuthenticatorDelegate, | ||
hyper::Client::new(), | ||
<MemoryStorage as Default>::default(), None); | ||
let mut hub = GroupsMigration::new(hyper::Client::new(), auth); | ||
// You can configure optional parameters by calling the respective setters at will, and | ||
// execute the final call using `upload(...)`. | ||
// Values shown here are possibly random and not representative ! | ||
let result = hub.archive().insert("groupId") | ||
.upload(fs::File::open("file.ext").unwrap(), "application/octet-stream".parse().unwrap()); | ||
|
||
match result { | ||
Result::HttpError(err) => println!("HTTPERROR: {:?}", err), | ||
Result::MissingAPIKey => println!("Auth: Missing API Key - used if there are no scopes"), | ||
Result::MissingToken => println!("OAuth2: Missing Token"), | ||
Result::UploadSizeLimitExceeded(size, max_size) => println!("Upload size too big: {} of {}", size, max_size), | ||
Result::Failure(_) => println!("General Failure (hyper::client::Response doesn't print)"), | ||
Result::FieldClash(clashed_field) => println!("You added custom parameter which is part of builder: {:?}", clashed_field), | ||
Result::JsonDecodeError(err) => println!("Couldn't understand server reply - maybe API needs update: {:?}", err), | ||
Result::Success(_) => println!("Success (value doesn't print)"), | ||
} | ||
|
||
``` | ||
## Handling Errors | ||
|
||
All errors produced by the system are provided either as [Result](http://byron.github.io/google-apis-rs/google-groupsmigration1/enum.Result.html) enumeration as return value of | ||
the doit() methods, or handed as possibly intermediate results to either the | ||
[Hub Delegate](http://byron.github.io/google-apis-rs/google-groupsmigration1/trait.Delegate.html), or the [Authenticator Delegate](http://byron.github.io/google-apis-rs/google-groupsmigration1/../yup-oauth2/trait.AuthenticatorDelegate.html). | ||
|
||
When delegates handle errors or intermediate values, they may have a chance to instruct the system to retry. This | ||
makes the system potentially resilient to all kinds of errors. | ||
|
||
## Uploads and Downlods | ||
If a method supports downloads, the response body, which is part of the [Result](http://byron.github.io/google-apis-rs/google-groupsmigration1/enum.Result.html), should be | ||
read by you to obtain the media. | ||
If such a method also supports a [Response Result](http://byron.github.io/google-apis-rs/google-groupsmigration1/trait.ResponseResult.html), it will return that by default. | ||
You can see it as meta-data for the actual media. To trigger a media download, you will have to set up the builder by making | ||
this call: `.param("alt", "media")`. | ||
|
||
Methods supporting uploads can do so using up to 2 different protocols: | ||
*simple* and *resumable*. The distinctiveness of each is represented by customized | ||
`doit(...)` methods, which are then named `upload(...)` and `upload_resumable(...)` respectively. | ||
|
||
## Customization and Callbacks | ||
|
||
You may alter the way an `doit()` method is called by providing a [delegate](http://byron.github.io/google-apis-rs/google-groupsmigration1/trait.Delegate.html) to the | ||
[Method Builder](http://byron.github.io/google-apis-rs/google-groupsmigration1/trait.CallBuilder.html) before making the final `doit()` call. | ||
Respective methods will be called to provide progress information, as well as determine whether the system should | ||
retry on failure. | ||
|
||
The [delegate trait](http://byron.github.io/google-apis-rs/google-groupsmigration1/trait.Delegate.html) is default-implemented, allowing you to customize it with minimal effort. | ||
|
||
## Optional Parts in Server-Requests | ||
|
||
All structures provided by this library are made to be [enocodable](http://byron.github.io/google-apis-rs/google-groupsmigration1/trait.RequestValue.html) and | ||
[decodable](http://byron.github.io/google-apis-rs/google-groupsmigration1/trait.ResponseResult.html) via json. Optionals are used to indicate that partial requests are responses are valid. | ||
Most optionals are are considered [Parts](http://byron.github.io/google-apis-rs/google-groupsmigration1/trait.Part.html) which are identifyable by name, which will be sent to | ||
the server to indicate either the set parts of the request or the desired parts in the response. | ||
|
||
## Builder Arguments | ||
|
||
Using [method builders](http://byron.github.io/google-apis-rs/google-groupsmigration1/trait.CallBuilder.html), you are able to prepare an action call by repeatedly calling it's methods. | ||
These will always take a single argument, for which the following statements are true. | ||
|
||
* [PODs][wiki-pod] are handed by copy | ||
* strings are passed as `&str` | ||
* [request values](http://byron.github.io/google-apis-rs/google-groupsmigration1/trait.RequestValue.html) are borrowed | ||
|
||
Arguments will always be copied or cloned into the builder, to make them independent of their original life times. | ||
|
||
[wiki-pod]: http://en.wikipedia.org/wiki/Plain_old_data_structure | ||
[builder-pattern]: http://en.wikipedia.org/wiki/Builder_pattern | ||
[google-go-api]: https://github.com/google/google-api-go-client | ||
|
||
# License | ||
The **groupsmigration1** library was generated by Sebastian Thiel, and is placed | ||
under the *MIT* license. | ||
You can read the full text at the repository's [license file][repo-license]. | ||
|
||
[repo-license]: https://github.com/Byron/google-apis-rs/LICENSE.md |
Oops, something went wrong.