Commit Graph

194 Commits

Author SHA1 Message Date
Sebastian Thiel
cb5a0a35bc feat(hub): allow to set user-agent
Fixes #24
2015-03-19 07:54:15 +01:00
Sebastian Thiel
9d401f5486 feat(doit): optimizations and simplification; seek
* MultiPartReader is using match to handle state, reducing unnecessary
  calls to 0 in that regard.
* Fixed seek() calls on readers, assuring they are reset to start each
  time the loop is done.
* both media-parameters now use `ReadSeek` streams.
* Use `seek()` to figure out size, simplifying the interface.

Closes #17
2015-03-19 07:30:43 +01:00
Sebastian Thiel
6b2301351f fix(common): MultiPartReader test case
Simple fixes, required as its API changed
2015-03-18 22:18:17 +01:00
Sebastian Thiel
224af64068 feat(doit):optimized memory allocation and options
* reserve_exact(X) where possible (params, multi-part-reader)
* `if let` used whereever possible to prevent duplicate checks

This increases the possible performance, and makes for more readable,
concise code.
2015-03-18 22:03:52 +01:00
Sebastian Thiel
e53e23a893 fix(common): MultiPartReader now works correctly
The state-handling was incorrect, causing it to not handle small reads
correctly.
However, this is working nicely now.
2015-03-18 21:09:48 +01:00
Sebastian Thiel
b127df17b0 feat(common): multibytereader single byte test
It shows that we actually don't handle our state correctly.
The first test which reads to string obviously uses a big-enough buffer.
2015-03-18 19:05:07 +01:00
Sebastian Thiel
8db346b8b0 feat(common): MultiPartReader is working.
Something that is missing is a single-byte read test
2015-03-18 18:48:03 +01:00
Sebastian Thiel
71c827b306 feat(doit): initial part writing
We are a state-machine, and handle parts of it correctly.
However, we don't yet write the boundary at all, and could improve
our use of match.
2015-03-18 17:53:39 +01:00
Sebastian Thiel
fc589cb965 feat(doit): multi-part mime-type and add_parts()
Next we will implement the actual Read method
2015-03-18 16:15:51 +01:00
Sebastian Thiel
3ea5e19485 feat(doit): handle 'alt' param
It's conditionally set to json, if we expect a response value.

Fixes #20
2015-03-18 15:41:23 +01:00
Sebastian Thiel
29d9e45c9f fix(doit): fix lifetime issues
Those were totally real, actually, and I am happy the borrow checker
exists !

Only one weirdness happened with RefCell<BorrowMut<C>>, but it could be
fixed by checking actual types using `let foo: () = something_nasty()`.
2015-03-18 15:05:01 +01:00
Sebastian Thiel
b0a1f518e9 feat(doit): more multipart infrastructure
* outer frame of `MultiPartReader` to allow using it in `doit()`
* restructured `doit()` to get content-types right

There is more work to do, as it currently doesn't compile, nor
do we deal with our streams correctly.

But we are on a good way.
2015-03-18 12:40:18 +01:00
Sebastian Thiel
7cfb5afd39 feat(doit): improve body infrastructure
This will support choosing custom readers at runtime, depending on
whether we have a resumable or simple media upload.
2015-03-18 08:50:22 +01:00
Sebastian Thiel
76827ff665 refactor(mbuild+lib): remove map!, better dlg call
* map! wasn't used.
* improved delegate calls, using `match` or `delegate.is_some()` to
  get the nicest looking, shortest-possible code
2015-03-17 21:56:34 +01:00
Sebastian Thiel
b90a191688 fix(doit): repeated params string addition
It seems odd that String + &str is required.
In any way, previously it would try to add i32 to a string.
2015-03-17 19:59:04 +01:00
Sebastian Thiel
d2bf24ca85 feat(doit): simplify URL_ENCODE handling
More maintainable template code, with less redundancy.
2015-03-17 19:21:12 +01:00
Sebastian Thiel
1fee21de24 feat(doit): uri-template handling complete
We now handle url-encoding for the parameters that would require it,
and can deal with repeated params that will match '/param*'.
2015-03-17 19:12:44 +01:00
Sebastian Thiel
54eb784a55 feat(doit): uri-template generation works
This doesn't mean it's correctly implemented, but we are on our way.
It does compile, at least
2015-03-17 18:27:25 +01:00
Sebastian Thiel
863a98c0d7 fix(docs): repeated parameters docs improvement
Previously, it said it would 'set' the property, which is not the case
after all.
2015-03-17 17:34:33 +01:00
Sebastian Thiel
64219e7e7e feat(doit): repeated types in examples
Made sure usage examples know how to use repeated types.
2015-03-17 17:28:03 +01:00
Sebastian Thiel
d758f410f6 feat(doit): repeatable parameters working
The code dealing with them currently assumes they are "/" separated.
2015-03-17 17:16:27 +01:00
Sebastian Thiel
63997910de fix(makefile): regenerate .api.deps less often
It took too long to do it, so the 'MAKO_LIB_FILES' dependency was
removed. It can be re-added if needed.
2015-03-17 16:32:51 +01:00
Sebastian Thiel
79879daf1b fix(methods): decent solution for free methods
Now I just add a 'virtual' resource, which is called 'methods'.
The good thing about this is that it works well standalone, or
in conjunction with actual resources.

Also the system works with it just with minimal changes

Fixes #19
2015-03-17 16:31:22 +01:00
Sebastian Thiel
60d953a342 feat(methods): intermed. support for 'methods'
These 'methods' have no resources, and need slightly special handling.
This version at least makes the generator work, even though
it produces duplicates.

However, as it is so ugly, I'd rather consider to change it
substantially ... this feature should just come naturally.
2015-03-17 15:48:07 +01:00
Sebastian Thiel
354370705d feat(doit): partial implementation of url expr
URL expressions allow to substitute values within the URL with
parameters. However, this is not only a simple key-value replacement,
but supports expressions that need a parser.

This one will have to be implemented next.
2015-03-17 11:41:51 +01:00
Sebastian Thiel
33e85ddd29 feat(doit): set upload media type
Related to #17
2015-03-17 10:39:11 +01:00
Sebastian Thiel
91f69ffd6e fix(test): unit-tests work once again
Added missing Result cases to make match exhaustive
2015-03-17 09:30:20 +01:00
Sebastian Thiel
79cbf3ee3f feat(docs): add more obvious crate and api version
Fixes #16
2015-03-17 09:21:53 +01:00
Sebastian Thiel
60adacf8d4 feat(doit): pre-request delegate call.
This one is likely to change the further we advance in the upload-media
implementation.
2015-03-17 09:21:18 +01:00
Sebastian Thiel
eef1471357 feat(doit): json decode and delegation
Now json errors are handled and delegated with the option to retry,
and all other values are just decoded according to plan.

For now, I brutally unwrap json values assuming this will work, because
it really should work.
2015-03-16 17:14:04 +01:00
Sebastian Thiel
2c79f6e3cf feat(doit): authentication with and without scopes
It's quite rough around the edges, but has a slight chance to work.
Will still to handle return values accordingly.
2015-03-16 15:23:38 +01:00
Sebastian Thiel
1349c786b7 fix(doit): remove BorrowMut until it's cleared
See stackoverflow at http://goo.gl/f27zJkj.

Now we can actually call out client and move on with handling the result
2015-03-16 11:51:12 +01:00
Sebastian Thiel
9a58b0badd feat(doit): attempt to send json-encoded request
This doesn't work yet, as I am unable to unwrap the client properly.
It's a refcell that contains a BorrowMut to a hyper::Client, and
lets just, it's complicated.
2015-03-16 10:35:26 +01:00
Sebastian Thiel
814c9c9ffa fix(lib-name):user lower-case library names,always
fixes #14
2015-03-16 08:50:23 +01:00
Sebastian Thiel
881c9dd3d2 Merge pull request #13 from MrFloya/master
fix(Makefile): force python2.7 in virtualenv
2015-03-15 12:55:22 +01:00
Florian Wilkens
876772cf22 fix(Makefile): force python2.7 in virtualenv
force the usage of python2.7 on systems where /usr/bin/python points to python3.x

fixes issue #12
2015-03-15 12:51:19 +01:00
Sebastian Thiel
31efbf4fb0 fix(travis): incorrectly capitalized cargo.toml
This caused cargo on a case-sensitive file-system not to find the
cargo file, which made it to look upwards in the directory structure
to find the correctly named Cargo.toml fo the 'cmn' development
project.
2015-03-15 11:51:24 +01:00
Sebastian Thiel
7f33cf22a5 feat(docs): add cargo.toml dependency information
Fixes #10
2015-03-15 11:37:19 +01:00
Sebastian Thiel
bec5cd5e5c docs(README): add build instructions
These should help people to get started on their own.

Fixes #9
2015-03-14 14:11:07 +01:00
Sebastian Thiel
4c657ac9d1 fix(travis): explicit subshell for cargo-doc
Previously, it was only executing for cargo $(ARGS)
2015-03-14 13:29:01 +01:00
Sebastian Thiel
a87fbdf0a8 fix(travis): try using a subshell for cargo cmd
Apparently travis doesn't execute cargo in the right sub-directory.
Might be a difference in the way make works

Related to #8
2015-03-14 13:28:01 +01:00
Sebastian Thiel
51d05d6db0 fix(deps): fixed dependency to wrong target
Which caused the cmn.rs to be missing, and the build to fail.
2015-03-14 12:58:57 +01:00
Sebastian Thiel
5fd7cb5114 fix(travis): install virtualenv automatically
The only dependency we really have is python, and wget.
Pip is not needed !
2015-03-14 12:45:32 +01:00
Sebastian Thiel
dd0772f1d7 feat(travis): docs and tests of youtube3 on travis
This might already bring it close to 7 minutes runtime, which seems
like providing us with a buffer big enough for when it is
feature-complete.
2015-03-14 11:52:59 +01:00
Sebastian Thiel
8006bb8ca9 fix(activities): fully qualified activity names
Fixes #7
2015-03-14 11:23:01 +01:00
Sebastian Thiel
b43eb0e301 fix(travis): Do not generate docs !
Previously, travis would continuously overwrite my combined docs with
the ones from the dev-project, and make them useless.

This has been driving me nuts ! Good to have it fixed !
2015-03-14 05:50:37 +01:00
Sebastian Thiel
2c2585d16d chore(Go): removed generated go file
It shouldn't have been committed - after all, these are just there for
my own reference.
2015-03-13 22:45:00 +01:00
Sebastian Thiel
6167dc07fc fix(readme): added milestone link
It's important to the project, and should thus be listed there
2015-03-13 17:52:57 +01:00
Sebastian Thiel
6800edb4dd docs(readme): initial version
It's still rather simple, but a basis for further improvements
2015-03-13 17:49:20 +01:00
Sebastian Thiel
c0a2476058 feat(deps): update-json using discovery API
Instead of depending on the google go client API repository, I now
use the original data source, namely the discovery API.

fixes #5
2015-03-13 17:06:48 +01:00