* CallType now represents either Upload or Standard calls, whereas
the Upload variant is represented by the UploadProtocol enum.
That way it's clear what happens, and we don't mix orthogonal concepts
in one enumeration just for convenience.
All tested APIs seem to build, verified
* upload
* download
* request structures
* parameters
* scopes
* config-dir
* debug[-auth]
Fixes#81
* mkdoc docs grammar is now hierarchical, making the command structure
more obvious and easier to understand. It's a nice addition to the
auto-generated, hierachical usage of clap.
* UploadProtocol enum is now CallType, to ease handling the different
ways the Call has to be executed. It looks quite clean, even though
combining upload protocols and the calltype is a bit hacky.
* `--version` now includes the API revision we embody
(using crate_version())
* Allow multiple scopes to be specified, instead of just one. Previously
this was problemantic due to argument parsing of docopt being greedy.
However, this also means we have to specify the `-r` flag for each
invocation. See https://github.com/kbknapp/clap-rs/issues/89 .
* Adapted to new signature of `Arg::possible_values()` and used the
previously orphaned `UploadProtocol` enum.
* Deduplicated code a little by adding the new `opt_values()` generator
function.
Related to #81
As IntoIter is only implemented for slices up a sice of 32.
DFAReporting though will reach 55, at least.
Also added dfareporting-cli code to show how stackoverflow issues can be
circumvented efficiently.
We will try to wait for https://github.com/kbknapp/clap-rs/issues/87
to allow us to use the enumeration instead of strings, as well as
an iterator, which will look more idiomatic in the end.
We are currently setting everything up at runtime, and manage to get
nearly all information into it, except for the more complex
`-u (simple|resumable) <file> <mime>` flag.
Fixes#87
Related to #81
We do this in the hopes to circumvent a stack overflow.
This means we will setup the parser entirely at runtime, which actually
saves a little bit of code.
We get a stack-overflow when trying to run the dfa-reporting program,
and right now I don't know how to workaround it.
This could be preventing us from using clap.
This is known to work with the master of hyper. It's probably OK
to keep it, preparing for the next release and under the assupmtion
that I will not be releasing binaries for a while.
Previously, the space was barely visible, confusing even myself :).
Now it's clear, using 4 spaces, that there is a cursor invocation
followed by a key-value pair.
* added simple script to build tar archive with all debug/release
binaries.
* slightly improved docker script, even though it would need additional
work. For now, I use the cloud VM anyway
* now the cursor will only be set permanently if the -r flag is used in
'cursor' mode. In 'cursor=value' mode, the cursor change doesn't
persist among the flags. That way, one can easily distinguish
between setting the cursor, and setting a field. However,
'...sublevel.level=value' will still work as it did previously, yet
the cursor change will not persist.
* Documentation was adjusted to represent the new cursor style.
Fixes#86
* fixed boundary syntax of multi-part message. Was --BOUNDARY, now is
--BOUNDARY--
* Fixed ContentRange parsing and serialization. We actually managed
to break it last time we tried to update it to match the Go
implementation.
* fixed uploadType header parameter. It's based on chosen protocol and
whether or not the method supports multipart operation for the given
protocol.
Related to #76
Previously, even though the request was passed by reference, it was
copied and thus our changes never arrived in the call.
Now the API makes this clear by taking ownership, and the CLI code
sets the Request value lateron, explicitly.
Related to #76
* implement custom scopes - previously they could be set, but were
ignored during the API call
* api-overrides are not yaml files for convenience. Existing ones were
updated as needed.
Fixes#75
We are now able to decode detailed errors and pass them on. This allows
the CLI to provide more useful error responses.
Additionally, the CLI will only print debug responses in --debug mode.
Fixes#82
* updated all json API descriptions
* enabled 'pretty' printing of response structures. However, currently
there is no way to get rid of all the NULL fields without external
filtering
* all structure fields are now optional - there seems to be no way
around it.
Fixes#73
That way, we can provide better service, as CLIs that consume a lot of
quota can easily have their own app credentials, and with it, their
own quota.
The fallback will be a project that allows to use all possible
google APIs.
The user can always put in his own application secret to use his own
quota or even paid services.
Fixes#80
Previously this case was entirely uncovered.
Interesting note: when a token is revoked, existing auth-tokens will
still work. However, you may not refresh them in case permissions
have been revoked. It's good as there is only one code-path to deal
with (and we verified it to be working), and bad for the user as
malicious software can keep using an account for certain time until
the token expires.
Fixes#79
* with native support for type conversion and error handling
* improved hash-map key-value parsing to at least state that it knows
it's dealing with a hashmap. Error text is still not what it should
be because we don't know at runtime (initially) what type we handle.
Fixes#68
Related to #77
* Seem to work for docopt, mkdocs and code itself
* mkdocs now show type of required params
* some code which deals with converting elements to their
target types is totally untested right now.
Related to #77
* Allow to see all authentication related communication, similar to
--debug flag otherwise.
* fixed broken generator when handling request value parsing.
Fixes#70
* If `--debug` is set, we will output all server communication to
stderr. That way, we can compare our requests to what is expected by
ush based on official docs.
* `discovery` now doesn't use the API key anymore - this is specified
using a custom override.
Nice, we are totally ready to test and fix all API features.
Related to #70
* Default::default() optimized to use T::default() if possible
* deduplicated special type handling ('Count' strings -> int64)
* put request value parsing into own private function
Fixes#69
[skip ci]